드레:
코딩 뿌시기
드레:
전체 방문자
오늘
어제
  • 분류 전체보기 (268)
    • Python (74)
      • Python 기초 (42)
      • Numpy (8)
      • Pandas (22)
    • Machine Learning (31)
      • Machine Learning (1)
      • Deep Learning (27)
    • AWS (22)
      • RDS (3)
      • EC2 (9)
      • Lambda (8)
      • S3 (2)
    • MySQL (24)
    • Git (8)
    • Streamlit (12)
    • REST API (22)
    • Java (24)
    • Android (36)
    • Debugging (15)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • EC2
  • Ann
  • Transfer Learning
  • fine tuning
  • 깃이그노어
  • tensorflow
  • Java
  • pandas
  • GET
  • 안드로이드 스튜디오
  • 네이버 API
  • rest api
  • 서버리스
  • Python
  • JWT
  • github
  • Retrofit2
  • API
  • 액션바
  • CNN
  • aws s3
  • Callback
  • 딥러닝
  • volley
  • Streamlit
  • Lambda
  • AWS Lambda
  • flask
  • AWS
  • serverless

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
드레:

코딩 뿌시기

Pandas 활용(5) - 결측값(NaN) 처리
Python/Pandas

Pandas 활용(5) - 결측값(NaN) 처리

2022. 11. 27. 21:42

데이터에 결측값이 있을 경우 데이터 분석을 하기 위해 처리하는 전략은 크게 3가지가 있다.

 

  1. 무시하기
  2. 제거하기
  3. 다른 값으로 대체하기

첫 번째 무시하기는 그냥 무시하고 진행하면 된다.

 

제거와 대체하는 방법에 대해 알아보자.

 

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}]

import pandas as pd
df = pd.DataFrame(data= items2, index= ['store1', 'store2', 'store3'])

 

 

먼저 비어있는 데이터가 어디에, 몇개나 있는지 파악해야 한다.

df.isna() 또는 df.isnull() 함수는 데이터가 있으면 True, 없으면 False를 리턴한다.

df.isna()

df.notna()  # isna() 함수의 반대

 

 

df.isna() 에 sum()을 하면 NaN이 몇개인지 알 수 있다.

df.isna().sum()
>>> bikes      0
    pants      0
    watches    0
    shirts     1
    shoes      0
    suits      1
    glasses    1
    dtype: int64

df.isna().sum().sum()  # 전체 데이터의 NaN 갯수
>>> 3

 

 

 

df.dropna()

 

결측값을 제거한다.

파라미터에 how와 axis가 있는데

how= 'any' 일 때는, 하나라도 결측값이 존재한다면 그 결측값이 존재하는 행 or 열을 제거하고

how= 'all' 이면 행 or 열에 있는 모든 값이 NaN인 경우에만 제거한다.

그리고 axis= 0일 때는 행, axis= 1 일때는 열을 제거한다.

디폴트 파라미터는 how= 'any', axis=0 이다.

df.dropna()  # 널값이 포함된 행 삭제
# = df.dropna(how='any', axis=0)

 

 

 

df.fillna()

 

결측값을 특정값으로 대체한다.

# 0으로 대체한다.
df.fillna(0)

 

# suits 와 glasses의 비어있는 데이터는 100으로 채운다.
df[ ['suits', 'glasses'] ] = df[ ['suits', 'glasses'] ].fillna(100)

 

# 위 행의 데이터로 대체한다
df.fillna( method='ffill', axis=0 )

 

# 아래 행의 데이터로 대체한다
df.fillna( method='bfill', axis=0 )

 

# 왼쪽 열의 데이터로 대체한다
df.fillna( method='ffill', axis=1 )

 

# 오른쪽 열의 데이터로 대체한다
df.fillna( method='bfill', axis=1 )

 

# 컬럼의 평균으로 대체한다
df.fillna(df.mean())

'Python > Pandas' 카테고리의 다른 글

Pandas 활용(7) - 함수의 일괄 적용 apply  (0) 2022.11.28
Pandas 활용(6) - 범주로 묶어 집계하기 groupby, agg  (0) 2022.11.27
Pandas 활용(4) - 인덱스명, 컬럼명 변경  (0) 2022.11.27
Pandas 활용(3) - 데이터프레임의 데이터 변경, 추가, 삭제  (0) 2022.11.25
Pandas 활용(2) - 데이터프레임의 Indexing, Slicing  (0) 2022.11.25
    'Python/Pandas' 카테고리의 다른 글
    • Pandas 활용(7) - 함수의 일괄 적용 apply
    • Pandas 활용(6) - 범주로 묶어 집계하기 groupby, agg
    • Pandas 활용(4) - 인덱스명, 컬럼명 변경
    • Pandas 활용(3) - 데이터프레임의 데이터 변경, 추가, 삭제
    드레:
    드레:

    티스토리툴바