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"])
Author And Source
이 문제에 관하여(Pandas (3) - 누락데이터 처리하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@choijungp/DataFrame-누락데이터-처리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)