Pandas - การล้างข้อมูลของรูปแบบที่ไม่ถูกต้อง


ข้อมูลรูปแบบที่ไม่ถูกต้อง

เซลล์ที่มีข้อมูลในรูปแบบที่ไม่ถูกต้องอาจทำให้การวิเคราะห์ข้อมูลทำได้ยากหรือเป็นไปไม่ได้

ในการแก้ไข คุณมีสองตัวเลือก: เอาแถวออก หรือแปลงเซลล์ทั้งหมดในคอลัมน์ให้อยู่ในรูปแบบเดียวกัน


แปลงเป็นรูปแบบที่ถูกต้อง

ใน Data Frame ของเรา เรามีสองเซลล์ที่มีรูปแบบที่ไม่ถูกต้อง ลองดูแถวที่ 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.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 (ไม่ใช่เวลา) หรืออีกนัยหนึ่งคือค่าว่าง วิธีหนึ่งในการจัดการกับค่าว่างก็คือการลบทั้งแถวออก


w3schools CERTIFIED . 2021

ได้รับการรับรอง!

ทำโมดูล Pandas ให้เสร็จ ทำแบบฝึกหัด ทำข้อสอบ แล้วคุณจะกลายเป็น w3schools ที่ผ่านการรับรอง!

$10 ลงทะเบียน

การลบแถว

ผลลัพธ์จากการแปลงในตัวอย่างด้านบนทำให้เราได้รับค่า NaT ซึ่งสามารถจัดการเป็นค่า NULL ได้ และเราสามารถลบแถวออกได้โดยใช้ dropna()เมธอด

ตัวอย่าง

ลบแถวที่มีค่า NULL ในคอลัมน์ "วันที่":

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