[Python] Pandas 정렬, 집계

wooaeng·2025년 10월 30일

Python

목록 보기
4/8
post-thumbnail

데이터프레임 합치기

두 개 이상의 DataFrame을 합쳐 하나의 DataFrame으로 만드는 것

종류세부기능
수직 결합단순 결합- 여러 개의 DataFrame들을 같은 컬럼끼리 수평으로 합침
- 하나의 데이터를 나눈 것을 다시 합칠 때 적용
수평 결합단순 결합- 연관성 있는 여러 데이터를 하나로 합쳐서 조회하는 처리 방식
- 합치려는 DataFrame들의 index나 특정 컬럼의 값이 같은 행끼리 합침
JOIN- 연관성 있는 여러 데이터를 하나로 합쳐서 조회하는 처리 방식
- 합치려는 DataFrame들의 index나 특정 컬럼의 값이 같은 행끼리 합침

데이터셋 읽기

glob 모듈 이용

  • 파일 경로 내에서 패턴 매칭을 사용해 특정 파일 또는 디렉토리를 검색하는 모듈
  • 패턴지정을 위한 wildcard 문자
    • * : 파일 명에 사용, 0개 이상의 모든 문자들
    • ** : 디렉토리 경로에 사용, 모든 하위 디렉토리
  • 구문
    glob(pathname_패턴), glob(pathname_패턴, recursive=True)
    • 지정된 패턴과 일치하는 모든 파일의 디렉토리의 경로를 문자열을 리스트로 반환
    from glob import glob		# 모듈 실행

    glob("data/*.csv")					  # data 디렉토리 내 모든 csv 파일 찾기
    glob("data/s*.csv")                   # data 디렉토리 내에서 s로 시작하는 모든 csv 파일 찾기
    glob('./**/*.csv', recursive=True)    # 현재 디렉토리부터 모든 하위 디렉토리까지 검색하여 csv 파일 찾기

concat() 이용

  • 수직 결합, 수평 결합 모두 지원
  • 하나의 Data set을 여러 DataFrame으로 나눈 것을 하나로 합칠 때 사용
종류방식
수직 결합- 행이 늘어나도록 합침
- 컬럼명이 같은 열끼리 합침
- 같은 column명이 없는 열들도 결과 DataFrame에 들어감
수평 결합- 열이 늘어나도록 합침
- index명이 같은 행끼리 합침
- 같은 index명이 없는 열들도 결과 DataFrame에 들어감

pd.concat(objs, [, key=리스트]), axis=0, join='outer'

  • objs 합칠 DataFrame들을 리스트로 전달
  • keys=[] 합친 행들을 구분하기 위한 다중 인덱스 처리
  • axis
    • 0 또는 index : 수직결합
    • 1 또는 columns : 수평결합
  • join
    • 합치는 방식으로 다음 문자열을 값으로 설정한다.
    • 'outer'(기본값): full outer join
    • 'inner': inner join (동일한 index명, column명 끼리 합친다.)

join()

dataframe객체.join(others, how='left', lsuffix='', rsuffix='')

  • 2개 이상의 DataFrame을 조인할 때 사용
  • join 기준 : index명이 같은 행끼리 합침(equi join)
  • join 방식: 기본적으로 Left Outer Join
  • 매개변수
    • lsuffix, rsuffix : 같은 컬럼명이 있으면 붙일 접미어 지정 (합치는 DataFrame 간 같은 이름의 컬럼이 있으면 exception 발생함)
    • how : 조인 방식 지정, left, right, outer, inner 중 사용, 기본값 left

merge()

dataframe.merge(합칠dataframe, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False)

  • 2개의 DataFrame의 조인만 지원
  • join 기준: 같은 컬럼명 기준 equi join이 기본, 컬럼/index명 등을 기준으로 join하도록 설정 가능
  • joing 방식 : Inner join, 매개변수 how를 이용해 변경 가능
  • 매개변수
    • on : 같은 컬럼명이 여러 개일 때 join 대상 컬럼 선택
    • right_on, left_on: join할 때 하나로 합칠 각 DataFrame의 컬럼명 이름
    	# a의 name 컬럼과 b의 name 컬럼의 값이 같은 행끼리 join
    	a.merge(b, left_on="name", right_on="name"
  • left_index, right_index: 조인 할때 index를 사용할 경우 True로 지정
  • how : 조인 방식. 'left', 'right', 'outer', 'inner'. 기본: inner
  • suffixes: 두 DataFrame에 같은 이름의 컬럼명이 있을 경우 구분을 위해 붙인 접미어를 리스트로 설정, 생략시 x, y를 붙인다.

0개의 댓글