2014-10-30 104 views
2

從csv,Excel,sql等導入數據(例如pandas.io.parsers中的方法)時,熊貓自動將某些值轉換爲NaNpandas.read_csv命名參數na_values默認值

我的問題是,這些默認值是什麼?

我注意到字符串"NA"被自動轉換。由於others have noted可以通過在調用導入數據的函數(例如pandas.io.parsers.read_csv)時傳遞keep_default_na=False來禁用此自動轉換。

這就是說,我不知道"NA"以外的其他值是否自動轉換。在the docs,所有我能找到的是爲keep_default_na參數如下描述:

keep_default_na:BOOL,默認值是true 如果指定na_values和keep_default_na是假的默認NaN值將被覆蓋,否則他們追加到

我想知道的是,上述'默認NaN值'是什麼?

+4

http://pandas.pydata.org/pandas-docs/stable/io.html#na-values – Jeff 2014-10-30 17:55:38

回答

1

傑夫在大約一年前提供了一個鏈接,但由於以下鏈接繁瑣,我在此移動了信息。

['-1.#IND', '1.#QNAN', '1.#IND', '-1.#QNAN', '#N/A','N/A', 'NA', '#NA', 'NULL', 'NaN', '-NaN', 'nan', '-nan'] 

來源:http://pandas.pydata.org/pandas-docs/stable/io.html#na-values

無論其

這個列表是不完整的。

import pandas as pd 
from StringIO import StringIO 

sio = StringIO() 
sio.write('"foo","bar"\n"1",""\n"NA","4"') 
sio.seek(0) 
pd.read_csv(sio, sep=",", quotechar='"') 
    foo bar 
0 1 NaN 
1 NaN 4 

請注意空字符串是如何不是列表的一部分,但它仍然被默認解析爲NaN?

pd.read_csv(sio, sep=",", quotechar='"', 
      keep_default_na=False, 
      na_values=['-1.#IND', '1.#QNAN', '1.#IND', 
         '-1.#QNAN', '#N/A','N/A', '#NA', 'NA' 
         'NULL', 'NaN', '-NaN', 'nan', '-nan']) 

    foo bar 
0 1  
1 NaN 4 

如果這個名單將是默認的,這兩個命令應該產生完全相同的結果。

他們沒有。

如果要複製的pandas.read_csv默認行爲,這是你需要的資源列表:

參考
['', '-1.#IND', '1.#QNAN', '1.#IND', '-1.#QNAN', '#N/A','N/A', 'NA', '#NA', 'NULL', 'NaN', '-NaN', 'nan', '-nan'] 

大熊貓版本:

pd.__version__ 
'0.15.2' 

的Bug票與熊貓:

https://github.com/pydata/pandas/issues/10700

更新

這是固定的熊貓0.17

+0

如果您認爲該列表是不完整的,請打開github上的一個問題:https://github.com/pydata/pandas/issues(或文檔更改的PR) – joris 2015-07-29 22:17:48

+0

@joris我在這裏做過:https:// github。com/pydata/pandas/issues/10700 – firelynx 2015-07-30 07:50:32

+1

好搭檔,伴侶。感謝您的詳細解答! – grisaitis 2015-07-30 12:18:04