2012-07-23 94 views
6

我有一個200,000 x 500 dataframe加載到熊貓。有沒有可以自動告訴我哪些列丟失數據的函數?或者我必須迭代每列,並檢查元素?處理熊貓遺失的數據

一旦我找到一個缺失的元素,我該如何定義一個自定義函數(基於同一行中的列名和其他一些數據)來執行自動替換。我看到了fillna()方法,但我不認爲它將(lambda)函數用作輸入。

謝謝!

回答

7

類似:

import pandas as pd 
pd.isnull(frame).any() 

可能是你在找什麼找丟失的數據

fillna目前並不需要的lambda函數,雖然這是在作品在github上一個懸而未決的問題。

您現在可以使用DataFrame.apply進行自定義填充。儘管你可以更具體地說明你需要做什麼來填充數據?只是好奇這個用例是什麼。

+0

謝謝!我把它用於Kaggle比賽;我們獲得了來自不同用戶的音樂評級數據集,並且我們必須建立一個模型來預測這些用戶如何評價不同藝術家的新音樂。分類器的其中一個特點是查看來自特定用戶的特定藝術家的平均評分。但是,如果用戶以前從未聽過這位藝術家,那麼該作品就會在熊貓中顯示爲缺失的價值。所以在這種情況下,我會用賦予該藝術家的平均評分來替換缺失的值(一個不好的第一近似值,最好使用SVD) – vgoklani 2012-07-24 00:54:49

+0

啊我明白了。我猜你有像用戶那樣的索引和藝術家/曲目作爲列的多索引?它取決於DataFrame的大小,但可能可以重複平均評分,因此它與評分矩陣的大小相同,然後使用NA掩碼替換缺失的值? – 2012-07-24 03:59:30

+0

關閉;我對訓練數據做了read_csv,但我沒有選擇索引。我使用熊貓集團的操作構建了這些功能,然後在該組上應用了mean(),最後再合併回主數據框。某些功能使用多列數據,因此我只將這些列標籤分組,然後再次合併(使用多個索引)。感謝cython-izing合併:)對於缺失的數據,我不得不手動遍歷列並使用get_value/set_value,它不是最有效的方式,但它的工作原理。 – vgoklani 2012-07-24 13:59:00