2012-07-23 93 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