데이터 분석

[day26] 조금 늦더라도... 제대로 공부하겠습니다.

경 민 2025. 3. 13. 21:43
더보기

👩🏻‍💻  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이랑 비슷하군)
    • ignore_index = True/False  
      • True →  컬럼명 없어지고 인덱스 0부터 매기기 (axis = 1 일 때!!)
      • False (기본값) 원래 컬러명 유지
    • join='inner','outer'
      • left, right는 사라짐
      • 기본값은 outer
      • axis=0 일 때 join을 굳이 사용하지 않음. 기본적으로 outer이고 inner해줄 필요가 많지 않으니까?
      • join='outer'일 때, 모든 df의 인덱스 그대로 유지
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)