[Python] pandas 라이브러리

양승우·2024년 10월 24일

Python

목록 보기
7/16

목표

pandas 라이브러리를 이것저것 만져보면서 알게된 점들을 정리해보고자 한다

[]와 ()의 차이

pandas를 처음 접했을 때 가장 헷갈렸던 부분 중 하나는 []와 ()가 섞여서 나온다는 점이었다
물론 여전히 이를 마스터했다고 할 수는 없겠지만, 이 둘 중 어느 것이 사용되냐는 요소들의 개념이나 용법을 알면 일관성 있게 나타난다.

[]

먼저 []는 컬럼명을 지정할 때 주로 사용된다.
당장 시리즈(컬럼 1개)를 지정할 때도

df['Category']

와 같은 형태로 사용하며,
만약 복수의 컬럼을 호출한다면

df[['Category', 'Product']]

와 같이 컬럼명을 []안에 넣고, 이를 다시 []로 감싸는 형태로 작성하게 된다.

()

반면 ()는 기존 python의 함수, 메서드에서 사용되는 것을 떠올리면 된다.

df2 = pd.DataFrame(t_employee) #t_employee는 딕셔너리

merged_df = pd.merge(df1, df2, join='inner')

pd.pivot_table(df2, index='Age', columns='Category', values='Customer_ID', aggfunc='count')

이처럼 merge라는 함수에서 데이터프레임 변수를 받을 때,
혹은 pivot_table에서 데이터프레임 및 옵션의 인자를 받을 때,
이럴 때는 ()가 사용된다.

물론 () 내에서도 컬럼명을 사용하는 경우에는 []가 들어간다.

pd.pivot_table(df3, index = ['Age', 'Gender'], columns = ['Category'], values = 'Customer_ID', aggfunc = ['min', 'max']) # 1개 컬럼은 []를 써도 되고 안 써도 되고

최신 pandas에는 없어진 기능

테이블 수평 결합: append

pandas에서 제공하는 테이블 결합 방법은 merge, join, concat, append의 4가지가 있다
다만 pandas 2.0부터 이 중 append는 삭제되었다
애초에 기능부터가 concat와 유사했기 때문에, 그냥 concat으로 통합시킨 다음 concat에서 axis 옵션을 통해 수직or수평 결합을 설정할 수 있다.

CONCAT의 옵션: join_axes

본래 concat에서 조인 축을 지정하는 join_axes 옵션은 현재 버전에서 삭제되었다
reindex로 가능하다고 하니 이 방법을 해보는 것은 어떨까?

MERGE의 suffixes 옵션

merge에는 suffixes라는 옵션이 있다

결합한 테이블 간에 동일한 컬럼명이 있다면 이를 구분해주는 옵션인데,
여기서 하나 주의해야 할 점은 ON 옵션을 통해 기준으로 설정한 컬럼은 따로 구분할 수 없다는 것이다 (에러는 발생하지 않는다)

import pandas as pd

# 예시 데이터프레임 1 (employees)
df1 = pd.DataFrame({
    'employee_id': [1, 2, 3],
    'name': ['Alice', 'Bob', 'Charlie'],
    'department': ['HR', 'Engineering', 'Marketing']
})

# 예시 데이터프레임 2 (salaries)
df2 = pd.DataFrame({
    'employee_id': [2, 3, 4],
    'name': ['Robert', 'Charles', 'David'],
    'salary': [70000, 60000, 50000]
})

# merge 실행, suffixes 지정
merged_df = pd.merge(df1, df2, on='employee_id', suffixes=('_emp', '_sal'))

아래와 같이 employee_id로 결합하고 있으면서 name 컬럼의 이름이 중복되는 경우, suffixes 옵션에서 설정한 텍스트가 접미사로 붙어 이를 구분할 수 있게 해준다.

profile
어제보다 오늘 더

0개의 댓글