Pandas (3) - 누락데이터 처리하기

DataFrame - 누락데이터 처리

  • 누락데이터 처리 전략
    ① 누락데이터 값 삭제 : drop 함수 사용
    ② 값 채우기 : fillna 함수 사용

NaN : 누락데이터, missing value

누락데이터 처리의 대표적인 전략
1) 없애기 (drop 함수) :
ex. 1만개의 데이터 중 11개가 누락데이터 일때 그냥 drop
결측치가 있는 특정 column이 데이터분석에서 필요없을 때

2) 채우기 (fillna 함수) : 기본값, 평균값, 중앙값, 최빈값, ... 으로 많이 채움
ex. 1천개의 데이터 중 100개가 누락데이터 일때 fill

info() / isnull(), isna() / isnull().sum()

  • dropna
    그냥 특정 행. column 제거 시 drop을 사용
    but, NaN 값을 제거하기 위해서는 dropna 함수를 사용 (how 옵션 : any, all, thresh 몇개 미만이면 삭제)

any : default .. NaN값이 하나라도 존재 시 삭제
all : 모든 값이 NaN일 때만 삭제

  • drop : 데이터를 삭제하는 함수, 원본적용 x (재대입 / inplace)
    axis = 1 (열방향) // axis = 0 (행 방향, default)

####### 행 삭제
tc4.drop(index=[1, 2, 3, 4, 5])
tc4.drop(index = range(1, 6)) # Fancy 문법
tc4.drop(tc4.index[1:6]) ## 제일 직관적인 방법

####### 열 삭제 : 이때는 반드시 axis = 1값을 주어야 column 삭제 가능
tc4.drop(['vip', 'age'], axis = 1, inplace = True)


  • datetime

dtype = datetime64
간혹가다가 object로 나오는 경우가 있어 : 처리방법 -> to_datetime()

2020-01-01 dtype : datatime이라면 관련 변수로 자른다.
object라면 split 방식

dt.year
dt.month
dt.day

-> 새로운 column으로 바꾸는 경우 있음


  • apply 중요 !!💥💢
    apply(적용할 function)
    기존에 있던 column 수정보단 새로운 column을 만들어서 활용하는게 학습에서 굉굉굉장히la 중요

  • data병합

서로다른 df를 합치는 방법 : concat(axis = 0) / merge(axis = 1)

concat (상, 하) : concat을 하기 위해서는 column이 같아야해 (ex. 상반기 + 하반기) // key를 이용하면 좋다
merge (좌, 우) : 서로 다른 구성의 DF를 합침 // 한 df의 정보갖고는 부족해 .. 이럴 때 합쳐 / 중심이 되는 df이 있고 여기에 merge하는 방식 or 공통적인 것만 합쳐저
두 df의 구조가 상이해도 돼 ! : 내가 추가적인 데이터를 만들고 싶을 때 다른 dataset에서 만들 때 ** 공통적인 key가 있어야 해 (ex. id)

  • concat :
    ex.
    pd.concat([gas1, gas2]) > 처음 concat 하면 index가 초기화 안됐어, index가 꼬여
    pd.concat([gas1, gas2], keys=['상반기', '하반기']) > 의미가 명료해져
    axis = 1주면 좌우로 붙어 : 하지만 이렇게는 잘 안씀 ..
  • merge :
    inner join (교집합)
    how = 'inner' : 고객명 중심으로 교집합 방식으로 가져와 , ... pd.merge(df1, df2, left_on="이름", right_on="고객명").drop('고객명', axis = 1) ## drop 시키고
    이름이 다른 column 병합 (left_on / right_on) 그리고 그 중 하나의 column 삭제 (drop)

grouping : 세분화
grouping 후 -> 통계함수 적용

pivot_table 함수와 비슷

여러 통계함수의 값을 알고 싶다면 agg 함수 사용
agg 안에 알고 싶은 통계함수 이름을 넣어줘(list형태로)
ex.
tips.groupby("size").agg(['sum', 'mean', 'count'])

tips.groupby(['sex', 'day']).agg(["mean", "sum"])
==
tips.pivot_table(index=['sex', 'day'], aggfunc=["mean", "sum"])

좋은 웹페이지 즐겨찾기