판다스는 단순한 데이터 처리를 넘어서 고급 데이터 조작 기능을 제공합니다. 이 글에서는 데이터프레임의 조건부 열 추가, 피벗 테이블 생성 및 멀티레벨 열 조작, 그리고 슬라이싱과 스태킹과 같은 고급 기능을 탐구할 것입니다. 이를 통해 데이터를 보다 효과적으로 분석하고 가공하는 방법을 알아보고, 판다스를 더욱 깊이 이해할 수 있을 것입니다.
1. 데이터프레임의 조건부 열 추가
판다스를 사용하여 데이터프레임에 조건부 열을 추가하는 것은 데이터 분석 과정에서 흔히 필요한 작업입니다.
이를 통해 기존 데이터에 기반한 새로운 정보를 파생시킬 수 있으며, 이는 분석의 깊이와 통찰력을 증가시킵니다.
예를 들어, 특정 조건을 만족하는 경우에만 값을 할당하거나, 여러 조건에 따라 다른 값을 할당하는 열을 생성할 수 있습니다.
이 과정은 주로 'np.where' 함수 또는 판다스의 'apply' 함수와 람다 표현식을 사용하여 수행됩니다.
조건부 열 추가는 데이터의 특정 측면을 강조하거나, 분석을 위한 새로운 차원을 제공하는 효과적인 방법입니다.
2. 피벗 테이블과 멀티레벨 열 조작
피벗 테이블은 데이터 요약과 구조 재구성에 매우 유용한 도구입니다.
판다스에서 피벗 테이블을 생성하는 것은 복잡한 데이터셋을 분석하기 위한 강력한 방법 중 하나입니다.
피벗 테이블을 사용하면 데이터의 다양한 요약 통계를 쉽게 계산하고, 다차원 분석을 수행할 수 있습니다.
또한, 멀티레벨 인덱싱을 통해 데이터를 여러 수준에서 그룹화하고, 이를 통해 복잡한 데이터 구조를 명확하게 이해할 수 있습니다.
멀티레벨 열 조작은 고급 분석에서 중요한 역할을 하며, 데이터를 다양한 각도에서 탐색하고 분석하는 데 도움을 줍니다.
아래는 판다스를 사용하여 피벗 테이블을 생성하고 멀티레벨 열을 조작하는 예시 코드입니다.
import pandas as pd
# 샘플 데이터 생성
data = {'Product': ['Apples', 'Oranges', 'Bananas', 'Strawberries', 'Grapes'],
'Region': ['North', 'West', 'South', 'East', 'Central'],
'Sales': [100, 150, 200, 130, 170]}
df = pd.DataFrame(data)
# 피벗 테이블 생성: 지역별로 제품 판매량 합계
pivot_table = df.pivot_table(values='Sales', index='Product', columns='Region', aggfunc='sum')
# 멀티레벨 열 조작
pivot_table.columns = ['_'.join(col).strip() for col in pivot_table.columns.values]
print(pivot_table)
이 코드는 각 지역별로 제품의 판매량을 합산하여 피벗 테이블을 생성합니다.
그런 다음 멀티레벨 열을 조작하여 각 열의 이름을 지역 이름으로 설정합니다.
이처럼 피벗 테이블과 멀티레벨 열 조작을 통해 데이터를 다차원적으로 분석하고, 보다 정교한 인사이트를 얻을 수 있습니다.
3. 데이터프레임의 슬라이싱과 스태킹
데이터프레임의 슬라이싱은 데이터의 특정 부분을 선택하거나 필터링하는 과정입니다.
이는 분석에 필요한 데이터의 특정 부분을 빠르게 추출하고, 데이터의 크기를 줄이며, 보다 특정화된 분석을 가능하게 합니다.
슬라이싱은 인덱스, 라벨, 불리언 배열을 사용하여 수행할 수 있으며, loc와 iloc 함수를 통해 보다 정교한 슬라이싱이 가능합니다.
스태킹은 데이터프레임의 열을 하나의 차원으로 압축하고, 이를 새로운 인덱스 레벨로 변환하는 과정입니다.
이는 데이터를 다차원적으로 재구성하여, 다양한 각도에서 데이터를 분석하고 복잡한 관계를 이해하는 데 도움을 줍니다.
반대로, 언스태킹은 스태킹된 데이터를 다시 펼쳐 원래의 형태로 복구하는 과정입니다.
스태킹과 언스태킹은 데이터의 구조를 변경하고, 다양한 형태로 데이터를 조작하여 분석의 유연성을 높이는 데 중요한 역할을 합니다.
아래는 판다스를 사용하여 데이터프레임의 슬라이싱과 스태킹을 수행하는 예시 코드입니다.
import pandas as pd
# 샘플 데이터프레임 생성
data = {'A': range(1, 6),
'B': range(6, 11),
'C': range(11, 16)}
df = pd.DataFrame(data)
# 슬라이싱: 'A'와 'B' 열의 첫 3행 선택
sliced_df = df.loc[:2, ['A', 'B']]
# 스태킹: 열을 하나의 차원으로 압축
stacked_df = df.stack()
# 언스태킹: 스태킹된 데이터를 다시 펼치기
unstacked_df = stacked_df.unstack()
print("Sliced DataFrame:")
print(sliced_df)
print("\\nStacked DataFrame:")
print(stacked_df)
print("\\nUnstacked DataFrame:")
print(unstacked_df)
이 코드는 먼저 데이터프레임을 슬라이싱하여 특정 열과 행을 선택합니다.
그 다음, 스태킹을 사용하여 열을 하나의 차원으로 압축하고, 이를 다시 언스태킹하여 원래의 형태로 복구합니다.
슬라이싱과 스태킹은 데이터의 특정 부분을 집중적으로 분석하거나, 다차원적인 관점에서 데이터를 탐구하는 데 매우 유용한 도구입니다.
'프로그래밍 > 파이썬' 카테고리의 다른 글
판다스로 데이터 파일 읽고 쓰기 (0) | 2024.01.06 |
---|---|
판다스를 이용한 확률적 데이터 분석 기초 (0) | 2024.01.06 |
데이터프레임 마스터하기: apply() 함수 활용 (0) | 2024.01.06 |
데이터프레임 필터링과 조건부 선택의 기술 (1) | 2024.01.06 |
판다스를 활용한 효율적인 데이터 정렬과 랭킹 (1) | 2024.01.06 |
최근댓글