더보기
👩🏻💻 TODAY I LEARN
📌 SQL
- 코드카타 시간제한 두고 풀기 ➜ 파이썬 공부하느라 못 했다. 내일 QCC 전 오전시간 활용하자
📌 Python
- 라이브 세션 2회차 복습 (dataframe의 그룹핑, 정렬)
- 라이브 세션 3회차 복습 (merge,join,concat)

하 하 하
내 얘기같구나..
그래도 저게 맞지.
오래 걸려도 제대로, 확실하게 하자!
Python
2-1. 라이브 세션 2회차 복습
[day26] python 라이브세션 2회차 복습+응용
1. 그룹핑, 조건, 정렬을 한 번에 !그래서 아래 쿼리로 시도해보았더니조인할 수 없다는 에러 발생.조인?? 갑자기 웬 조인을 하지.에러 해석where() 는 series 나 dataframe 형식에서 조건을 줄 때 사용하
rosenps3.tistory.com
복습하면서 생긴 질문들을 정리해보았다.
시간은 오래걸렸어도 확실하게 개념이 잡혔다.
내일 또 해보자. 계속 하자.
2-2. 라이브 세션 3회차 복습
👀 핵심 개념
merge, join, concat
1) merge ➜ 공통 컬럼 기준으로 병합
pd.merge(df1,df2, how = ' ', on= ' ', suffixes=(' ' ,' '), sort= , indicator= )
- SQL의 JOIN이랑 비슷한 개념 (공통 컬럼 기준으로 수직결합)
- 공통 컬럼을 하나로 출력한다.
- 파라미터
- how : inner(기본값), left, right, outer
- on : 공통컬럼의 컬럼명이 서로 다를 때 각각 어떤 이름인지 알려주기
- left_on
- right_on
- sort = True/False : 병합 후 인덱스 정렬 어떻게 할 건지 결정
- False (기본값) → 원래 데이터 순서대로 출력
- True → 공통컬럼 기준으로 오름차순 정렬
Q. 내림차순 하고 싶으면 ?
merge에서는 오름차순 정렬밖에 지원 안 됨.
내림차순 정렬하고 싶으면 따로 매개변수로 만들어주고, sort_values(by = ' ', ascending=False) 처리 !
🔸 예시
merged = pd.merge(ddf1,ddf2, how='inner', on='key', sort=True) merged_sort = merged.sort_values(by='key', ascending=False) print(merged_sort)
- suffixes : 중복된 컬럼들의 이름 바꿔주기
- indicator = True/False
- False (기본값) → 아무 변화 없음
- True → 맨 마지막에 각 행별로 both/left_only 인지 알려주는 컬럼 추가됨
Q. 파라미터 순서 상관 있음?
없음. 해봤더니 되더라. 하지만 웬만하면 상식적인 순서 지키자.
2) join ➜ 인덱스 기준으로 병합
df.join(df2, how=' ', lsuffix=' ' , rsuffix=' ', sort= )
- how='outer'일 때, df의 인덱스 기준으로 필터링되어서 병합 (left join)
- 파라미터
- how
- isuffix / rsuffix : 중복된 컬럼들의 이름 바꿔주기
- sort= True/False : 병합 후 인덱스 정렬 어떻게 할 건지 결정
Q1. 서로 인덱스가 다르면?
달라도 조인 가능
짧은 쪽 모든 데이터는 NaN 리턴
Q2. 인덱스라는 게 원래 오름차순 정렬된 거 아닌가? sort가 왜 필요하지?
'인덱스 = 무조건 오름차순 정렬'이 아님!
3) concat ➜ 이어붙이기
pd.concat([df1,df2], axis= , ignore_index= , join=' ')
- 기본적으로 정렬 지원 x
- 파라미터
- axis = 0/1
- 0 (기본값) → 수직결합 (UNION이랑 비슷하지만 컬럼 이름 달라도 됨.)
- 컬럼 이름이 같다? 그럼 그 열에 수직결합!
- 컬럼 이름이 다르다? 새로운 열로 추가~
- 1 → 수평결합 (JOIN)
- 인덱스 기준으로 병합 (정말 join이랑 비슷하군)
- 0 (기본값) → 수직결합 (UNION이랑 비슷하지만 컬럼 이름 달라도 됨.)
- ignore_index = True/False
- True → 컬럼명 없어지고 인덱스 0부터 매기기 (axis = 1 일 때!!)
- False (기본값) → 원래 컬러명 유지
- join='inner','outer'
- left, right는 사라짐
- 기본값은 outer
- axis=0 일 때 join을 굳이 사용하지 않음. 기본적으로 outer이고 inner해줄 필요가 많지 않으니까?
- join='outer'일 때, 모든 df의 인덱스 그대로 유지
- axis = 0/1
Q. concat의 axis=1이면, join이랑 비슷하네? 아예 비슷하게 만들어보자.
concat은 기본적으로 정렬해주지 않고, join은 sort=true하면 정렬해주니까 concat에 sort.index()를 붙여주자.
pd.concat([df2, df3], axis=1, join='inner').sort_index()
df2.join(df3, how='inner', sort=True)
1) 공통된 인덱스만 유지해서 (inner join)
2) 수평 결합하고 (axis=1, join)
3) 인덱스 기준 정렬 (sort.index(), join)
'데이터 분석' 카테고리의 다른 글
| [day29] 4주차 WIL (0) | 2025.03.16 |
|---|---|
| [day27] 어느덧 4주차 마무리 (0) | 2025.03.14 |
| [day25] SQL : Python = 1 : 9 (0) | 2025.03.12 |
| [day24] 중꺾그마...? (0) | 2025.03.11 |
| [day23] SQL-스칼라 서브쿼리에서 조건주기, 파이썬- 조건문/반복문 (0) | 2025.03.10 |