Python pandas – read_csv 匯入空值

Loading

測試環境為 CentOS 8 (虛擬機)

pandas read_csv 匯入檔案時遇到空值時會幫忙填成 NaN (Not A Number 表示為未定義或是不可表示的值 ),可以使用以下方式來處理.

檔案範例

[root@localhost ~]# cat ts1.csv
TimeStamp,Value
2022-12-23 6:36:22,100
2022-12-23 6:37:22,210
2022-12-23 6:38:22,
[root@localhost ~]# python3
Python 3.6.8 (default, Sep 10 2021, 09:13:53)
[GCC 8.5.0 20210514 (Red Hat 8.5.0-3)] on linux
Type "help", "copyright", "credits" or "license" for more information.
import pandas as pd
df = pd.read_csv('ts1.csv')

預設空值時會幫忙填成 NaN

>>> df
            TimeStamp  Value
0  2022-12-23 6:36:22  100.0
1  2022-12-23 6:37:22  210.0
2  2022-12-23 6:38:22    NaN

透過 isnull() 函數可以檢視哪個資料 NaN (回傳為 True).

>>> df.isnull()
   TimeStamp  Value
0      False  False
1      False  False
2      False   True
  • fillna() 函數
    或是直接用 fillna() 函數把 NaN 取代成其他數值.

    >>> df.fillna(0)
                TimeStamp  Value
    0  2022-12-23 6:36:22  100.0
    1  2022-12-23 6:37:22  210.0
    2  2022-12-23 6:38:22    0.0
    
  • dropna 函數
    dropna 函數可以有 NaN 行刪除.

    >>> df.dropna()
                TimeStamp  Value
    0  2022-12-23 6:36:22  100.0
    1  2022-12-23 6:37:22  210.0
    
  • keep_default_na=False
    如不想轉換可以用 透過 read_csv 參數 keep_default_na=False 來保留成原空字串.

    import pandas as pd
    df = pd.read_csv('ts1.csv' , keep_default_na=False)
    
    >>> df
                TimeStamp Value
    0  2022-12-23 6:36:22   100
    1  2022-12-23 6:37:22   210
    2  2022-12-23 6:38:22
    
沒有解決問題,試試搜尋本站其他內容

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料