iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0
Python

我的Python奇幻學習之旅系列 第 25

鐵人賽 Day25 Python的奇幻之旅-pandas(熊貓)-7

  • 分享至 

  • xImage
  •  

清理空單元格

刪除行

假設今天有一個資料集,非常大,但有幾行不太重要,刪除幾行不會對結果產生太大影響

例如:
用dropna()將有缺失值的行或列刪掉,在建立一個新的DataFrame
這就是刪除行

import pandas as pd

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

new_df = df.dropna()

print(new_df.to_string())
  • 注意,如果現在有一個new_df = df.dropna,不會直接改變原本得DataFrame

  • 如果要改變原始的DataFrame,我們要在df.dropna(裡面使用參數)inplace = True就可以改變了!

替換空值

處理空白單元格的另一種方法是插入新值
這樣就不用因為某些空白儲存格而刪除整行

這個時候我們可以用fillna()

fillna()允許我們用值替換空白單元格:

import pandas as pd

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

df.fillna(130, inplace = True)

print(df.to_string())

上面的範例取代了整個資料框中的所有空白單元格

若要僅替換一列的空值,要指定DataFrame 的列名稱:

例子
將「卡路里」欄位中的 NULL 值替換為數字 130:

df.fillna(130, inplace = True) 中 df後用[]加上指定列名稱
df["Calories"].fillna(130, inplace = True)

使用平均數、中位數或眾數替換

替換空白單元格的常見方法是計算列的平均值、中位數或眾數
Pandas 使用mean() median()和mode()方法來計算指定列的對應值:

mean(): 平均數

median(): 中位數

mode(): 眾數

例子:

  • 平均數 mean()
import pandas as pd

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

x = df["Calories"].median()

df.fillna(x, inplace = True)

print(df.to_string())
  • 中位數 median()
import pandas as pd

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

x = df["Calories"].median()

df["Calories"].fillna(x, inplace = True)
  • 眾數 mode(),要記得[0],不然不會替換資料
import pandas as pd

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

x = df["Calories"].mode()[0]

df["Calories"].fillna(x, inplace = True)

上一篇
鐵人賽 Day24 Python的奇幻之旅-pandas(熊貓)-6
下一篇
鐵人賽 Day26 Python的奇幻之旅-pandas(熊貓)-8
系列文
我的Python奇幻學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言