
pd.Series에서 다중 인덱스를 생성할 때 pd.MultiIndex.from_tuples()를 사용함.기본 코드:
import pandas as pd
import numpy as np
index = pd.MultiIndex.from_tuples([('A', 1), ('A', 2), ('B', 1), ('B', 2)])
s = pd.Series([10, 20, 30, 40], index=index)
print(s)
출력:
A 1 10
2 20
B 1 30
2 40
dtype: int64
print(s['A'])
출력:
1 10
2 20
dtype: int64
loc 속성 사용)print(s.loc['A', 1])
출력:
10
print(s.loc[['A', 'B']])
출력:
A 1 10
2 20
B 1 30
2 40
dtype: int64
df = s.unstack()
print(df)
출력:
1 2
A 10 20
B 30 40
print(df.stack())
출력:
A 1 10
2 20
B 1 30
2 40
dtype: int64
pd.MultiIndex.from_product()를 사용하여 다중 행 및 열 인덱스를 생성할 수 있음.columns = pd.MultiIndex.from_product([['X', 'Y'], ['A', 'B']])
df = pd.DataFrame(np.arange(16).reshape(4, 4), index=index, columns=columns)
print(df)
swaplevel()을 사용하여 인덱스의 레벨을 교환할 수 있음.print(df.swaplevel())
sort_index()를 사용하여 정렬 가능.print(df.sort_index())
groupby(level=0)을 사용하여 특정 레벨 기준으로 그룹화 가능.print(df.groupby(level=0).sum())
set_index() 메소드df = pd.DataFrame({'A': ['foo', 'bar', 'baz'], 'B': [1, 2, 3]})
df.set_index('A', inplace=True)
print(df)
출력:
B
A
foo 1
bar 2
baz 3
reset_index() 메소드df.reset_index(inplace=True)
print(df)
출력:
A B
0 foo 1
1 bar 2
2 baz 3
drop=True 옵션df.reset_index(drop=True, inplace=True)
print(df)
출력:
B
0 1
1 2
2 3
groupby() 메소드를 사용하여 그룹을 생성하고, 다양한 집계 함수를 적용할 수 있음.value_counts() 메소드s = pd.Series(['A', 'B', 'A', 'C', 'B', 'A'])
print(s.value_counts())
출력:
A 3
B 2
C 1
dtype: int64
mean() 메소드df = pd.DataFrame({'Category': ['A', 'B', 'A', 'B'], 'Value': [10, 20, 30, 40]})
print(df.groupby('Category')['Value'].mean())
출력:
Category
A 20.0
B 30.0
Name: Value, dtype: float64
print(df.groupby(['Category', 'Value']).count())
dropna 키워드 인자dropna=True: 결측값이 있는 그룹을 제거dropna=False: 결측값이 있는 그룹도 유지count() 집계 함수print(df.groupby('Category').count())
for 반복문 활용for name, group in df.groupby('Category'):
print(name)
print(group)
print(df.groupby('Category')['Value'].sum())
print(df.groupby(['Category', 'Value']).sum())