나의 메모장
connecting the dots
나의 메모장
전체 방문자
오늘
어제
  • 분류 전체보기 (12)
    • 강의 (4)
      • React Native 마스터 클래스 (4)
    • 책 (7)
      • 파이썬 라이브러리를 활용한 데이터 분석 (7)
    • others (1)
      • 후기 (0)
      • 공부 정리 (1)
    • 비공개 아카이브 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • python
  • Python for Data Analysis
  • 노마드 코더
  • 파이썬 라이브러리를 활용한 데이터 분석
  • react native

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
나의 메모장

connecting the dots

ch10 Data aggregation and group Operations
책/파이썬 라이브러리를 활용한 데이터 분석

ch10 Data aggregation and group Operations

2023. 11. 15. 00:09

들어가면서

  • 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
    '책/파이썬 라이브러리를 활용한 데이터 분석' 카테고리의 다른 글
    • Ch5 Pandas
    • ch4 Numpy Basics
    • ch8 Data Wrangling
    • ch11 Time Series
    나의 메모장
    나의 메모장
    온라인 아카이브

    티스토리툴바