개인공부

데이터 전처리 & 시각화 26.01.15(목)

nom_de_plume 2026. 1. 15. 19:00

Pandas

챕터 3-5 ~ 8

 

불리언 인덱싱 (Boolean Indexing)

  • 특정 조건에 맞는 행만 선택하는 방식
  • True/False 값을 가진 리스트(Series)를 전달하여 '참'인 데이터만 추출
  • 조건을 이용하여 데이터프레임에서 특정 조건을 만족하는 행을 선택하는 방법
  • 데이터를 필터링하거나 원하는 조건을 만족하는 행을 추출할 수 있음
  • 주로 불리언(Boolean) 값을 가지는 조건식을 사용하여 데이터프레임을 인덱싱하는 방법
    • 조건식에 따라 각 행이 True 또는 False로 평가되며 이를 바탕으로 데이터프레임을 필터링
df[조건식]
  • 여러 조건을 연결할 때는 & (and), | (or) 를 사용
  • 각 조건은 반드시 소괄호 ()로 감싸야 한다.
  • '체(Sieve)'로 걸러내는 작업
  • isin() 매소드 활용 가능
    • Series(시리즈)나 DataFrame(데이터프레임)의 값들 중에서 특정 값이나 리스트 안에 포함된 값들을 찾아내는 메소드.
    • 원하는 조건에 해당하는 데이터를 빠르게 필터링하거나 선택 가능
    • 각 행이 리스트에 포함되면 True, 없으면 False를 반환
df['컬럼명'].isin([값1, 값2, 값3])

 

 

데이터 병합 (Merge & Concat)

 

- Merge (조인)

  • 관계형 데이터베이스(SQL)의 Join과 동일
  • 공통된 키(Key)를 기준으로 옆으로 합친다.
pd.merge(left, right, on='공통컬럼', how='방법')
  • left와 right: 병합할 데이터프레임 중 병합되는 기준이 되는 왼쪽(left)과 오른쪽(right) 데이터프레임
  • 방법(how): inner(교집합), outer(합집합), left(왼쪽 기준), right(오른쪽 기준)
    • inner: 공통된 키(열) 기준. 교집합
    • outer: 공통된 기 기준. 합집합
    • left: 왼쪽 데이터프레임의 모든 행 포함하고 오른쪽 데이터프레임은 공통된 키에 해당하는 행만 포함
    • right: 오른쪽 데이터프레임의 모든 행 포함하고 왼쪽 데이터프레임은 공통된 키에 해당하는 행만 포함
  • on: 병합 기준이 되는 열 이름 (열 이름의 리스트)
    • left on: 왼쪽 데이터프레임에서 병합할 열 이름이 다른 경우 사용
    • right on: 오른쪽 데이터프레임에서 병합할 열 이름이 다른 경우 사

 

 

- Concat (연결)

  • 데이터프레임을 위아래로 혹은 좌우로 연결 가능
  • axis : 
    • 연결하고자 하는 축(방향)을 지정
      • axis=0 (기본값) : 위아래로 연결하는 경우 (행 추가)
      • axis=1 : 좌우로 연결 (열 추가)
  • ignore_index:
    • False (기본값) : 연결된 결과 데이터프레임의 인덱스 유지
    • True :
      • 새로운 인덱스 생성
      • 기존 인덱스 무시하고 새롭게 인덱스 설
pd.concat([df1, df2], axis=0)

 

 

데이터 집계 (Aggregation & Groupby)

 

- Group by()

  • 데이터프레임을 그룹화
  • '끼리끼리' 모으는 작업
  • 그룹 단위로 데이터를 분할(split), 적용(apply), 결합(combine)하는 기능을 제공
      1. 그룹 생성: 기준 열(혹은 열들)을 지정하여 데이터프레임을 그룹으로 나눕니다.
      2. 그룹에 대한 연산 수행: 그룹 단위로 원하는 연산(평균, 합, 개수 등)을 수행합니다.
      3. 결과 결합: 각 그룹의 연산 결과를 하나의 데이터프레임으로 결합하여 새로운 데이터프레임을 생성합니다.
  • 통계량(평균, 합계 등)을 계산
df.groupby('기준컬럼')['계산컬럼'].연산함수()
  • 여러 개의 집계를 한 번에 보고 싶다면 .agg(['mean', 'sum', 'count'])를 사용
  • .agg()
    • 하나 이상의 연산을 특정 축(기본은 행)을 따라 적용
    • 주로 groupby()와 함께 쓰여 그룹별 통계량을 구할 때 가장 많이 활용
    • 활용법
      • 여러 개의 함수를 동시에 적용: 리스트 형태([])로 함수 이름을 전달하면, 모든 컬럼에 대해 해당 통계량 계산
      • 컬럼별로 다른 함수 적용 (딕셔너리 활용): 컬럼 이름을 키(Key)로, 적용할 함수를 값(Value)으로 입력
      • 사용자 정의 함수(UDF) 적용: 판다스 기본 함수 외에 내가 직접 만든 함수에도 사용 가능
df.agg(['연산1', '연산2'])
 df.groupby('기준').agg({'컬럼': '연산'})

 

 

- Pivot Table() 함수

  • 데이터프레임에서 피벗 테이블을 생성하는 데 사용
  • 주어진 데이터를 사용자가 원하는 형태로 재배치하여 요약된 정보를 보기 쉽게 제공
  • 데이터를 재구성하여 요약, 집계된 정보를 보여주는 테이블 형태
  • df.pivot_table(index='행기준', columns='열기준', values='계산값', aggfunc='연산')
  • index: 행(Row) 방향으로 세울 기준 (왼쪽 세로)
  • columns: 열(Column) 방향으로 세울 기준 (위쪽 가로)
  • values: 집계할 값 (안쪽에 채워질 숫자)
  • aggfunc: 어떤 계산을 할 것인가 (기본값은 mean)

 

데이터 정렬 (Sorting)

  • 특정 컬럼의 값을 기준으로 데이터를 오름차순 또는 내림차순으로 나열
  • solt_values() 함수: 컬럼 기준 정렬
df.sort_values(by='컬럼명', ascending=True)

 

 

  • by: 기준이 될 컬럼 이름을 넣습니다. 리스트 형태(['A', 'B'])로 여러 개 지정도 가능합니다.
  • sort_index() 함수: 인덱스 기준 정렬
df.sort_index(ascending=True)
  • ascending: True면 오름차순(기본값), False면 내림차순