본문 바로가기
파이썬/파이썬기본문법

파이썬 판다스 잘못된 형식 데이터 클리닝

by flycoding 2024. 1. 23.
반응형

파이썬 판다스 잘못된 형식의 데이터

잘못된 형식의 데이터를 가진 셀은 데이터를 분석하는 것을 어렵게 하거나 심지어 불가능하게 만들 수 있다.

이를 수정하려면 행을 제거하거나 열의 모든 셀을 동일한 형식으로 변환하는 두 가지 옵션이 있다.

 

파이썬 판다스 올바른 형식으로 변환

데이터 프레임에는 잘못된 형식의 셀이 두 개 있다. 22행과 26행을 확인하시오. '날짜' 열은 날짜를 나타내는 문자열이어야 한다:

     Duration          Date  Pulse  Maxpulse  Calories
  0         60  '2020/12/01'    110       130     409.1
  1         60  '2020/12/02'    117       145     479.0
  2         60  '2020/12/03'    103       135     340.0
  3         45  '2020/12/04'    109       175     282.4
  4         45  '2020/12/05'    117       148     406.0
  5         60  '2020/12/06'    102       127     300.0
  6         60  '2020/12/07'    110       136     374.0
  7        450  '2020/12/08'    104       134     253.3
  8         30  '2020/12/09'    109       133     195.1
  9         60  '2020/12/10'     98       124     269.0
  10        60  '2020/12/11'    103       147     329.3
  11        60  '2020/12/12'    100       120     250.7
  12        60  '2020/12/12'    100       120     250.7
  13        60  '2020/12/13'    106       128     345.3
  14        60  '2020/12/14'    104       132     379.3
  15        60  '2020/12/15'     98       123     275.0
  16        60  '2020/12/16'     98       120     215.2
  17        60  '2020/12/17'    100       120     300.0
  18        45  '2020/12/18'     90       112       NaN
  19        60  '2020/12/19'    103       123     323.0
  20        45  '2020/12/20'     97       125     243.0
  21        60  '2020/12/21'    108       131     364.2
  22        45           NaN    100       119     282.0
  23        60  '2020/12/23'    130       101     300.0
  24        45  '2020/12/24'    105       132     246.0
  25        60  '2020/12/25'    102       126     334.5
  26        60      20201226    100       120     250.0
  27        60  '2020/12/27'     92       118     241.0
  28        60  '2020/12/28'    103       132       NaN
  29        60  '2020/12/29'    100       132     280.0
  30        60  '2020/12/30'    102       129     380.3
  31        60  '2020/12/31'     92       115     243.0

 

날짜' 열에 있는 모든 셀을 날짜로 변환해 보자.

판다스는 이를 위한 to_datetime() 메소드를 사용한다:

날짜로 변환:

import pandas as pd

df = pd.read_csv('data.csv')

df['Date'] = pd.to_datetime(df['Date'])
print("df['Date'] = pd.to_datetime(df['Date'])")

print(df.to_string())

위의 코드를 실행하면 아래 그림과 같다.

     Duration          Date  Pulse  Maxpulse  Calories
  0         60  '2020/12/01'    110       130     409.1
  1         60  '2020/12/02'    117       145     479.0
  2         60  '2020/12/03'    103       135     340.0
  3         45  '2020/12/04'    109       175     282.4
  4         45  '2020/12/05'    117       148     406.0
  5         60  '2020/12/06'    102       127     300.0
  6         60  '2020/12/07'    110       136     374.0
  7        450  '2020/12/08'    104       134     253.3
  8         30  '2020/12/09'    109       133     195.1
  9         60  '2020/12/10'     98       124     269.0
  10        60  '2020/12/11'    103       147     329.3
  11        60  '2020/12/12'    100       120     250.7
  12        60  '2020/12/12'    100       120     250.7
  13        60  '2020/12/13'    106       128     345.3
  14        60  '2020/12/14'    104       132     379.3
  15        60  '2020/12/15'     98       123     275.0
  16        60  '2020/12/16'     98       120     215.2
  17        60  '2020/12/17'    100       120     300.0
  18        45  '2020/12/18'     90       112       NaN
  19        60  '2020/12/19'    103       123     323.0
  20        45  '2020/12/20'     97       125     243.0
  21        60  '2020/12/21'    108       131     364.2
  22        45           NaT    100       119     282.0
  23        60  '2020/12/23'    130       101     300.0
  24        45  '2020/12/24'    105       132     246.0
  25        60  '2020/12/25'    102       126     334.5
  26        60  '2020/12/26'    100       120     250.0
  27        60  '2020/12/27'     92       118     241.0
  28        60  '2020/12/28'    103       132       NaN
  29        60  '2020/12/29'    100       132     280.0
  30        60  '2020/12/30'    102       129     380.3
  31        60  '2020/12/31'     92       115     243.0

 

결과에서 볼 수 있듯이 26행의 날짜는 고정되어 있었지만 22행의 빈 날짜는 NaT 값, 즉 빈 값을 얻었다. 빈 값을 처리하는 한 가지 방법은 단순히 행 전체를 제거하는 것다.

 

파이썬 판다스 데이터 클리닝 잘못된 형식 - 행 제거 - dropna()

위 예제에서 변환한 결과는 Null 값으로 처리할 수 있는 NaT 값을 얻었고 dropna() 메소드를 사용하여 행을 제거할 수 있다.

날짜 열에서 NULL 값을 가진 행을 제거한다:

import pandas as pd

df = pd.read_csv('data.csv')

df['Date'] = pd.to_datetime(df['Date'])
print("df['Date'] = pd.to_datetime(df['Date'])")

df.dropna(subset=['Date'], inplace = True)

print("df.dropna(subset=['Date'], inplace = True)")

print(df.to_string())

위의 코드를 실행하면 아래 그림과 같다.

파이썬 판다스 데이터 클리닝-잘못된형식 - dropna() 행제거 활용 예제

 

이번 글에서는 파이썬 판다스 모듈에서 데이터 클리닝할 경우, 잘못된 형식을 처리하는 방법에 대해서 살펴보았다.

파이썬 판다스 데이터 클리닝에서 잘못된 형식에 날짜인 경우 to_datetime() 메소드를 활용하여 오류처리하거나 날짜를 수정할 수 있다. 혹은 잘못된 날짜 형식의 경우 NAT 대신에 행을 제거할 경우 dropna() 메소드를 활용하는 실습을 하였다.

꼭 손으로 눈으로 머리로 익히며 실습하기를 바란다.

모두 화이팅입니다.!!!

 

출처 : 이 글의 출처는 w3schools사이트를 참고하였으며 필자가 추가하여 정리한 글입니다.

반응형

댓글