들어가면서
- Python for Data Analysis (파이썬 라이브러리를 활용한 데이터 분석)의 모든 내용을 포함하고 있지 않습니다.
- 제가 몰랐던 부분, 헷갈렸던 부분만 정리 되어있습니다.
ch10 Data aggregation and group Operations
dropna
group의 키값들은 N/A값이 빠진다. dropna=False로 하면 NA값도 보여준다.
df.groupby(df['key'],dropna=False).size()
size / count
size는 group의 크기, count는 nonnull values를 표시한다.
# null 값의 유무로 결과가 다르게 나온다
df.groupby(df['key']).size()
df.groupby(df['key']).count()
iterating over group
group object로 for문을 돌리면 각 key별 df가 나온다.
multiple key의 경우 key가 tuple로 나온다.
axis ,mapping, functions
- 특정 column들의 집합으로 group을 묶어서 연산이 필요할때가 있다.
- axis를 columns로 바꾸고 mapping dict을 전달해서 사용하면된다.
- function을 넘겨 줄 수 있는데 , 이떄는 index 값의 function 결과로 key를 만든다.
mapping = {"key1":"a","key2":"a","key3":"b"}
df.groupby(mapping,axis='columns')
df.groupby(len).size()
nsmallest
- 정렬 후 n개의 row까지 출력함
- series에 쓸 수 있고, 마찬가지로 groupby object를 series로 slice하면 사용가능
agg
- 통계 함수 및 custom 함수도 같이 사용 가능
- 이름을 tulple로 지정 할 수 있음
- numpy 함수도 들어감
def peak_to_peak(arr):
return arr.max() - arr.min()
grouped.agg(['mean','std',peak_to_peak,np.var])
# 함수에 이름 지정
grouped.agg([('mean_name','mean'),('my_peack',peak_to_peak)])
numeric_only
- group mean 의 numeric_only는 False이다.
as_index, reset_index
- groupby로 연산된 dataframe은 multi Index인데 이것을 푸는 방법은 2가지이다.
grouped_1= df.groupby('key',as_index=False)
grouped_1.mean()
grouped_2= df.groupby('key')
grouped_2.mean().reset_index()
apply
- agg는 apply와 다르게 모든 원소에 적용된다.
- agg는 집계 함수 임으로 series를 scalar로 return 해야함
- apply는 함수 안에서 column 명을 지정해서 각각 적용 가능
- apply 함수에 arg를 넘길떄는 함수 다음에 같이 명시하면 된다.
def top(df,n=5,column='A'):
return df.sort_values(column,ascending=True)[:n]
df.groupby('key').apply(top,n=3,column='B') # arg를 옆에 명시하면 된다.
Filling Missing values with group specific Values
- group의 평균으로 missing value를 채우기
df.groupby('key').apply(lambda x : x.fillna(x.mean()))
- group key마다 다른 값으로 missing value를 채우기
key_dict = {'A':1,'B':2}
# name으로 column 이름 참조 가능
df.groupby('key').apply(lambda x : x.fillna(key_dict[x.name]))
pivot table, crosstab
- pivot table은 index, values,columns로 데이터를 재구성한다.
- crosstab은 데이터의 갯수를 집계한다. chi2 검정할때 유용함
# pivot은 df로 하고 , crosstab은 pd로 한다.
df.pivot_table(index='index',columns='cols',values='val')
pd.cross_tab('index','cols')
'책 > 파이썬 라이브러리를 활용한 데이터 분석' 카테고리의 다른 글
Ch5 Pandas (0) | 2023.11.22 |
---|---|
ch4 Numpy Basics (1) | 2023.11.15 |
ch8 Data Wrangling (0) | 2023.11.15 |
ch11 Time Series (0) | 2023.11.15 |
ch2 jupyter Notebook, ch3 Built-in Python (2) | 2023.11.14 |