《從零開始的資料科學筆記》Day#7:None 與 NaN 的差異

更新於 發佈於 閱讀時間約 4 分鐘
raw-image

Python/Pandas中的None VS NaN

大家在進行資料清理時一定會遇到一個問題,到底缺失值、空值要怎麼判斷,以及如何處理? 而且時常會被他們的定義搞得頭昏腦脹…
再加上每種程式語言中對於null、None、nan、””等的定義可能不盡相同,因此這篇文章將以Python和相關套件所定義的為主。

raw-image

1. 什麼是 None ?

  • 是 Python 中的內建空值型態(類似於 Java 的 null)
  • 通常用來表示尚未賦值的變數、函式沒有回傳值
x = None
print(x is None)

# 輸出
True

2. 什麼是 NaN ?

  • 全名是 Not a Number
  • 來自 numpy(np.nan),通常出現在數值型欄位中
  • Pandas 認為 NaN 是缺失值(missing value)
import numpy as np

x = np.nan
print(np.isnan(x))

# 輸出
True

3. Pandas處理None/Nan

import pandas as pd
import numpy as np

df = pd.DataFrame({
'A': [1, None, 3],
'B': [4, np.nan, 6]
})

# 輸出
| A | B |
| --- | --- |
| 1.0 | 4.0 |
| NaN | NaN |
| 3.0 | 6.0 |

說明

🔍 注意:Pandas 自動將 None 轉為 NaN 在數值欄位中。

4. 如何檢查空值/缺失值?

raw-image
df = pd.DataFrame({
'Name': ['Amy', None, 'Cara'],
'Score': [90, np.nan, 88]
})
print(df)
df.isna() # 檢查是否有缺失值
df.dropna() # 移除有缺失值的列
df.fillna('Unknown') # 補上字串

# 輸出
Name Score
0 Amy 90.0
1 None NaN
2 Cara 88.0


Name Score
0 False False
1 True True
2 False False


Name Score
0 Amy 90.0
2 Cara 88.0


Name Score
0 Amy 90.0
1 Unknown Unknown
2 Cara 88.0

說明

  • df.dropna(axis=0, how='any', inplace=False)
    • axis: 0為按照row刪;1為按照column刪
    • how: 'any'代表有一個na就刪;'all'代表全都na才刪
    • inplace: 是否直接替換原df中的值
  • df.fillna('要補上的值')

數值計算上之差異

此差異主要會是在前處理過程中,缺失值尚未處理乾淨時可能會遇到。

None + 1      
np.nan + 1

# 輸出
TypeError
nan

小結

raw-image

最佳實務建議

  • ✅ 在 Pandas 資料集中統一使用 np.nan 或 pd.NA
  • ✅ 使用 pd.isna() / pd.notna() 進行判斷(支援兩者)
  • ✅ 避免混用 None 與 np.nan,尤其是數值欄位


留言
avatar-img
留言分享你的想法!
avatar-img
Ethan的AI學習筆記
1會員
13內容數
我是一個不務正業的資料科學家,從零開始學習的路途上跌跌撞撞,跌過許多坑,也撞過許多牆... 當有人迷失方向時,希望這些筆記可以成為你的指南針。
Ethan的AI學習筆記的其他內容
2025/06/16
🔍什麼是Matplotlib? Matplotlib 是 Python 最早也是最強大的 2D 資料視覺化套件,提供靈活且客製化程度高的繪圖介面。 🌍 發展歷史悠久,幾乎所有可視化工具都以它為基礎(如 Seaborn、Pandas 內建繪圖、Plotly)
Thumbnail
2025/06/16
🔍什麼是Matplotlib? Matplotlib 是 Python 最早也是最強大的 2D 資料視覺化套件,提供靈活且客製化程度高的繪圖介面。 🌍 發展歷史悠久,幾乎所有可視化工具都以它為基礎(如 Seaborn、Pandas 內建繪圖、Plotly)
Thumbnail
2025/06/14
🧪GroupBy能做什麼? groupby() 可將資料依照欄位分組,接著對每個群體套用統計或轉換函式,如同 SQL 中的 GROUP BY。 善用groupby()可以讓自己資料處理能力更上一層!!!
Thumbnail
2025/06/14
🧪GroupBy能做什麼? groupby() 可將資料依照欄位分組,接著對每個群體套用統計或轉換函式,如同 SQL 中的 GROUP BY。 善用groupby()可以讓自己資料處理能力更上一層!!!
Thumbnail
看更多
你可能也想看
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
資料前處理(Data Preprocessing)中的重要角色-缺失值處理。從檢查、刪除到填充缺失值,以及插值法和機器學習算法的應用方法。Pandas 缺失值處理基礎方法、進階填充缺失值、鐵達尼號存活預測資料集的示例和機器學習算法填補缺失值方法的介紹與使用。
Thumbnail
資料前處理(Data Preprocessing)中的重要角色-缺失值處理。從檢查、刪除到填充缺失值,以及插值法和機器學習算法的應用方法。Pandas 缺失值處理基礎方法、進階填充缺失值、鐵達尼號存活預測資料集的示例和機器學習算法填補缺失值方法的介紹與使用。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
當我們在做很多處理時,結果可能會是List包住一些數值,例如找輪廓或連通域分析時,沒有剛好的特徵可能就會有List含(空值得)形式出現。 為了避免報錯,我們就要額外先做一些處理,先做判斷是否有值在往下一個階段。 all 和 any 是 Python 中用於檢查可迭代物件(如清單、元組、集合等)
Thumbnail
當我們在做很多處理時,結果可能會是List包住一些數值,例如找輪廓或連通域分析時,沒有剛好的特徵可能就會有List含(空值得)形式出現。 為了避免報錯,我們就要額外先做一些處理,先做判斷是否有值在往下一個階段。 all 和 any 是 Python 中用於檢查可迭代物件(如清單、元組、集合等)
Thumbnail
在程式中,了解資料型態是相當重要的。 為什麽? 因為許多error,常常都是因為資料型態不正確所導致的。 舉個例子,在python中: a = 1 + 2 print(a) 結果就是3 a = = "1"+"2" print(a) 結果就是12 是不是差很多? 所以今天我來介
Thumbnail
在程式中,了解資料型態是相當重要的。 為什麽? 因為許多error,常常都是因為資料型態不正確所導致的。 舉個例子,在python中: a = 1 + 2 print(a) 結果就是3 a = = "1"+"2" print(a) 結果就是12 是不是差很多? 所以今天我來介
Thumbnail
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
Thumbnail
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News