《從零開始的資料科學筆記》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
Ethan的AI學習筆記
8會員
33內容數
我是一個不務正業的資料科學家,從零開始學習的路途上跌跌撞撞,跌過許多坑,也撞過許多牆... 當有人迷失方向時,希望這些筆記可以成為你的指南針。
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
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, 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() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
Thumbnail
在Python函式中,可以使用None來指定動態的預設引數,使用更靈活,Docstrings同時能夠提供清晰的文檔。本篇文章說明利用這種方式來讓函式更彈性,輸入不同型態的關鍵字引數,並在事件紀錄時間的Log訊息的範例中詮釋,可自行輸入時間或者預設導入系統的時間,在跟其他程式交握時,可以更靈活的應用。
Thumbnail
在Python函式中,可以使用None來指定動態的預設引數,使用更靈活,Docstrings同時能夠提供清晰的文檔。本篇文章說明利用這種方式來讓函式更彈性,輸入不同型態的關鍵字引數,並在事件紀錄時間的Log訊息的範例中詮釋,可自行輸入時間或者預設導入系統的時間,在跟其他程式交握時,可以更靈活的應用。
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們在原有的資料表上,將所有在欄位quantity的缺失值填補為0。 題目的原文敘述 測試範例 Example 1: Input:+-----------------+----------+-------+ | nam
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們在原有的資料表上,將所有在欄位quantity的缺失值填補為0。 題目的原文敘述 測試範例 Example 1: Input:+-----------------+----------+-------+ | nam
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們以原有的資料表name欄位為檢查基準,刪除有缺失值None的 data rows。 題目的原文敘述 測試範例 Example 1: Input: +------------+---------+-----+ | s
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們以原有的資料表name欄位為檢查基準,刪除有缺失值None的 data rows。 題目的原文敘述 測試範例 Example 1: Input: +------------+---------+-----+ | s
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News