Pandas 에서 NaN 값 을 처리 하 는 방법
-대형 데이터 세트 훈련 학습 알고리즘 을 사용 할 수 있 기 전에 우 리 는 데 이 터 를 먼저 정리 해 야 한다.즉,우 리 는 특정한 방법 으로 데이터 중의 오 류 를 검 측 하고 수정 해 야 한다.
-주어진 데이터 세트 에 여러 가지 나 쁜 데이터 가 나타 날 수 있 습 니 다.예 를 들 어 분리 값 이나 부정 확 한 값 이 있 을 수 있 습 니 다.그러나 우 리 는 거의 항상 만 날 수 있 는 나 쁜 데이터 형식 은 값 이 부족 합 니 다.
-Pandas 는 부족 한 값 에 NaN 값 을 할당 합 니 다.
NaN 가치 가 있 는 Data Frame 만 들 기
import pandas as pd
# We create a list of Python dictionaries
#
items2 = [{'bikes': 20, 'pants': 30, 'watches': 35, 'shirts': 15, 'shoes':8, 'suits':45},
{'watches': 10, 'glasses': 50, 'bikes': 15, 'pants':5, 'shirts': 2, 'shoes':5, 'suits':7},
{'bikes': 20, 'pants': 30, 'watches': 35, 'glasses': 4, 'shoes':10}]
# DataFrame
store_items = pd.DataFrame(items2, index = ['store 1', 'store 2', 'store 3'])
#
store_items
표시:데이터 양 이 많 을 때 NaN 의 개 수 를 집계 합 니 다.
# store_items NaN
x = store_items.isnull().sum().sum()
#
print(' DataFrame NaN :', x)
출력:우리 DataFrame 에서 NaN 의 수량:3
.isnull()
방법 으로 크기 와 store 를 되 돌려 줍 니 다.items 와 같은 불 형 DataFrame 을 사용 하고True
NaN 값 을 가 진 요 소 를 표시 하 며False
NaN 값 이 아 닌 요 소 를 표시 합 니 다.
store_items.isnull()
표시:Pandas 에서 논리 값 True 의 숫자 값 은 1 이 고 논리 값 False 의 숫자 값 은 0 입 니 다.
따라서 우 리 는 논리 값 True 의 수량 을 통 해 NaN 값 의 수량 을 셀 수 있다.
논리 값 True 의 총 수 를 세 기 위해 서,우 리 는.sum()방법 을 두 번 사용 합 니 다.
이 방법 을 두 번 사용 하려 면 첫 번 째
sum()
가 Pandas Series 를 되 돌려 주 었 기 때 문 입 니 다.그 중에서 열 에 있 는 논리 값True
의 총 수 를 저장 하 였 습 니 다.두 번 째
sum()
는 상기 Pandas Series 중의 1 을 더 했다.NaN 값 의 수량 을 제외 하고 우 리 는 반대 방식 을 사용 할 수 있 으 며,우 리 는 NaN 값 이 아 닌 수량 을 셀 수 있다.이 를 위해,우 리 는
.count()
방법 을 사용 할 수 있다.
print(' DataFrame NaN :
', store_items.count())
출력:우리 DataFrame 의 열 에는 NaN 이 아 닌 값 이 있 습 니 다.
bikes 3
glasses 2
pants 3
shirts 2
shoes 3
suits 2
watches 3
dtype: int64
이 NaN 값 처리 하기
# NaN
store_items.dropna(axis = 0)
다음으로 표시:
store_items.dropna(axis = 1)
다음으로 표시:주의:
-
.dropna()
NaN 값 이 있 는 줄 이나 열 을 제자리 에서 삭제 하지 않 습 니 다.-원본 DataFrame 은 변 하지 않 습 니 다.당신 은 항상
dropna()
방법 에서 키워드inplace
를True
로 설정 하여 제자리 에서 대상 줄 이나 열 을 삭제 할 수 있 습 니 다.NaN 값 을 적당 한 값 으로 대체 합 니 다.
우 리 는 NaN 값 을 삭제 하지 않 고 적당 한 값 으로 바 꿉 니 다.예 를 들 어 모든 NaN 값 을 0 으로 바 꿀 수 있 습 니 다.이 를 위해,우 리 는
.fillna()
방법 을 사용 할 수 있다.
store_items.fillna(0)
표시:우 리 는 또한
.fillna()
방법 으로 NaN 값 을 DataFrame 의 이전 값 으로 대체 하여
이 라 고 부 를 수 있다..fillna(method = 'ffill', axis)
주어진 axis 를 따라 이전 알려 진 값 으로 NaN 값 을 바 꿉 니 다.
store_items.fillna(method = 'ffill', axis = 0)
표시:store 3 의 두 NaN 값 이 열 에 있 는 이전 값 으로 바 뀌 었 음 을 주의 하 십시오.
하지만 store 1 의 NaN 값 은 교체 되 지 않 았 음 을 주의 하 세 요.이 열 앞 에 값 이 없 기 때문에,NaN 값 이 이 열의 첫 번 째 값 이기 때문이다.
현재,이전 줄 값 을 사용 하여 전방 향 채 우기
store_items.fillna(method = 'ffill', axis = 1)
표시:이 경우 모든 NaN 값 이 이전 줄 값 으로 대 체 됩 니 다.
또한,DataFrame 의 다음 값 으로 NaN 값 을 대체 하 는 것 을 선택 하여
이 라 고 할 수 있다.
# , NaN ,
store_items.fillna(method = 'backfill', axis = 0)
같은 이치:줄 을 뒤로 채 울 수도 있 습 니 다.즉,NaN 의 줄 값 입 니 다.줄 의 다음 줄 로 채 울 수도 있 습 니 다.
# , NaN ,
store_items.fillna(method = 'backfill', axis = 1)
메모:.fillna()
방법 은 NaN 값 을 제자리 에서 바 꾸 지 않 습 니 다.원본 DataFrame 은 변 하지 않 는 다 는 것 이다.당신 은 항상fillna()
함수 에서 키워드inplace
를True
로 설정 하고 제자리 에서NaN
값 을 교체 할 수 있 습 니 다.NaN 값 을 다른 삽입 방법 으로 바 꿀 수도 있 습 니 다.
.interpolate(method = 'linear', axis)
방법 은 linear 플러그 인 을 통 해 주어진 axis 의 값 을 따라 NaN 값 을 교체 합 니 다.이 차 이 는 앞 뒤 또는 상하 의 중간 값 입 니 다.
store_items.interpolate(method = 'linear', axis = 0)
줄 값 삽입 도 가능 합 니 다.
store_items.interpolate(method = 'linear', axis = 1)
우리 가 본 다른 방법 과 마찬가지 로.interpolate()
방법 이 제자리 에서 NaN 값 을 교체 하지 않 으 면 그림 이 생략 된다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Pandas의 DataFrame 스왑 열 순서 방법 구현1. DataFrame 열 레이블 가져오기 ['ps_state-stopped', 'ps_state-running', 'ps_state-blocked', 'ps_state-paging', 'ps_state-sleepi...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.