Pandas 에서 NaN 값 을 처리 하 는 방법

5414 단어 PandasNaN 값
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 을 사용 하고TrueNaN 값 을 가 진 요 소 를 표시 하 며FalseNaN 값 이 아 닌 요 소 를 표시 합 니 다.

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 값 처리 하기
  • axis=0,.dropna(axis)방법 은 NaN 값 을 포함 하 는 모든 줄 을 삭제 합 니 다
  • axis=1,.dropna(axis)방법 은 NaN 값 을 포함 하 는 모든 열
  • 을 삭제 합 니 다.
    
    #     NaN     
    store_items.dropna(axis = 0)
    다음으로 표시:
    
    store_items.dropna(axis = 1)
    다음으로 표시:

    주의:
    -.dropna()NaN 값 이 있 는 줄 이나 열 을 제자리 에서 삭제 하지 않 습 니 다.
    -원본 DataFrame 은 변 하지 않 습 니 다.당신 은 항상dropna()방법 에서 키워드inplaceTrue로 설정 하여 제자리 에서 대상 줄 이나 열 을 삭제 할 수 있 습 니 다.
    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()함수 에서 키워드inplaceTrue로 설정 하고 제자리 에서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 값 을 교체 하지 않 으 면 그림 이 생략 된다.
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기