[Python] 21. Pandas 데이터프레임 잘 알려지지 않은 유용한 기능

파이썬의 pandas 라이브러리는 데이터프레임을 다루는데 매우 강력하고 유용한 기능을 많이 제공합니다. 다음은 pandas 데이터프레임에서 사람들이 모르거나 덜 주목하는 유용한 기능 몇 가지를 예제와 함께 상세하게 설명하겠습니다.


pivot_table

피벗 테이블과 유사한 기능을 제공합니다. 데이터프레임에서 특정 열을 행 인덱스로, 다른 열을 열 인덱스로, 그리고 값으로 사용하여 데이터를 요약할 수 있습니다.

import pandas as pd

data = {
    'Category': ['A', 'B', 'A', 'B', 'A', 'B'],
    'Value': [10, 20, 30, 40, 50, 60]
}

df = pd.DataFrame(data)

pivot_df = df.pivot_table(index='Category', values='Value', aggfunc='mean')
print(pivot_df)

실행 결과

          Value
Category       
A            30
B            40

melt

데이터프레임을 ‘녹여서'(melt) 새로운 형태로 변환합니다. 여러 열에 산재된 데이터를 정리하여 하나의 열로 만들 수 있습니다.

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Math': [80, 70, 90],
    'Science': [85, 65, 78]
}

df = pd.DataFrame(data)

melted_df = df.melt(id_vars='Name', var_name='Subject', value_name='Score')
print(melted_df)

실행 결과

      Name  Subject  Score
0    Alice     Math     80
1      Bob     Math     70
2  Charlie     Math     90
3    Alice  Science     85
4      Bob  Science     65
5  Charlie  Science     78

crosstab

교차표(cross-tabulation)를 생성하여 두 열 간의 빈도수를 계산합니다.

import pandas as pd

data = {
    'Category': ['A', 'B', 'A', 'B', 'A', 'B'],
    'Value': [10, 20, 30, 40, 50, 60]
}

df = pd.DataFrame(data)

cross_tab = pd.crosstab(df['Category'], df['Value'])
print(cross_tab)

실행 결과

Value     10  20  30  40  50  60
Category                        
A          1   0   1   0   1   0
B          0   1   0   1   0   1

apply

데이터프레임의 각 요소에 함수를 적용할 수 있습니다. 특히, 람다 함수와 함께 사용하면 유용합니다.

import pandas as pd

data = {
    'Value': [10, 20, 30, 40, 50]
}

df = pd.DataFrame(data)

# 각 값에 10을 더하는 함수를 적용
df['New_Value'] = df['Value'].apply(lambda x: x + 10)
print(df)

실행 결과

   Value  New_Value
0     10         20
1     20         30
2     30         40
3     40         50
4     50         60

cut

연속형 데이터를 구간으로 나누는데 사용됩니다. 연속형 데이터를 범주형 데이터로 변환할 수 있습니다.

import pandas as pd

data = {
    'Score': [90, 80, 70, 60, 50, 40]
}

df = pd.DataFrame(data)

# 점수를 성적 구간으로 나누기
bins = [0, 59, 69, 79, 89, 100]
labels = ['F', 'D', 'C', 'B', 'A']
df['Grade'] = pd.cut(df['Score'], bins=bins, labels=labels)
print(df)

실행 결과

   Score Grade
0     90     A
1     80     B
2     70     C
3     60     D
4     50     F
5     40     F

이외에도 pandas에는 데이터프레임을 다루는데 유용한 다양한 함수와 기능이 있으며, 유연성과 높은 성능으로 데이터 분석과 조작을 편리하게 수행할 수 있습니다. 엑셀과 비슷한 데이터프레임 기능을 파이썬에서 사용할 수 있다는 점을 알고 있으면 데이터 처리 및 분석에 큰 도움이 될 것입니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤