草庐IT

python - 如果一个值是 NaN,Pandas 用 NaN 替换一行中的所有项目

我想删除一些带有NaN的记录。这非常有效:df.dropna(axis=0,how='any',inplace=True)但是,它改变了我的数据框的形状,索引不再均匀分布。因此,我想用np.nan替换这些行中的所有项目。有没有简单的方法可以做到这一点?我正在考虑在dropna之后对数据帧进行重新采样,但这似乎只适用于规定的时间间隔,而我宁愿使用原始索引。另一种方法是使用iterrows遍历数据帧,但这也感觉很麻烦。 最佳答案 下面的命令选择任何值等于Nan的所有行,并将NaN分配给其余这些行。df.loc[df.isnull().a

Python Pandas read_excel dtype str 在读取或通过 to_csv 写入时用空白 ('' 替换 nan

Python版本:Python2.7.13::Anaconda自定义(64位)Pandas版本:Pandas0.20.2你好,我有一个非常简单的要求。我想读取一个excel文件并将特定工作表写入csv文件。写入csv文件时,应将源Excel文件中的空白值视为/写入空白。但是,我的空白记录总是以“nan”形式写入输出文件。(没有引号)我通过方法读取了Excel文件read_excel(xlsx,sheetname='sheet1',dtype=str)我指定dtype是因为我有一些列是数字但应该被视为字符串。(否则他们可能会丢失前导0等)即我想从每个单元格中读取确切的值。现在我通过to_

python - 对具有 NaN 值的 Numpy 数组进行反向排序

我有一个numpy数组,其中包含一些NaN值:>>>aarray([1.,-1.,nan,0.,nan],dtype=float32)我可以按升序或“降序”顺序对其进行排序:>>>numpy.sort(a)array([-1.,0.,1.,nan,nan],dtype=float32)>>>numpy.sort(a)[::-1]array([nan,nan,1.,0.,-1.],dtype=float32)但是,我想要的是在末尾带有NaN值的降序,如下所示:>>>numpy.genuine_reverse_sort(a)array([1.,0.,-1.,nan,nan],dtype=f

python - 如何在 python 中处理缺失的 NaN 以进行机器学习

在应用机器学习算法之前如何处理数据集中的缺失值??。我注意到删除缺失的NAN值并不是一件明智的事情。我通常使用pandas进行插值(计算均值)并填充数据,这种方法可以提高分类精度,但可能不是最好的做法。这是一个非常重要的问题。处理数据集中缺失值的最佳方法是什么?例如,如果你看到这个数据集,只有30%有原始数据。Int64Index:7049entries,0to7048Datacolumns(total31columns):left_eye_center_x7039non-nullfloat64left_eye_center_y7039non-nullfloat64right_eye_

python - Pandas groupby 和 rolling_apply 忽略 NaN

我有一个pandas数据框,我想计算列的滚动平均值(在groupby子句之后)。但是,我想排除NaN。例如,如果groupby返回[2,NaN,1],则结果应为1.5,而当前它返回NaN。我尝试了以下方法,但似乎不起作用:df.groupby(by=['var1'])['value'].apply(pd.rolling_apply,3,lambdax:np.mean([iforiinxifiisnotnp.nanandi!='NaN']))如果我什至尝试这样做:df.groupby(by=['var1'])['value'].apply(pd.rolling_apply,3,lambd

python - Pandas :用下一个非 NaN/# 连续 NaN 填充 NaN

我正在寻找一个pandas系列并用下一个数值的平均值填充NaN,其中:average=nextnumericalvalue/(#consecutiveNaNs+1)到目前为止,这是我的代码,我只是不知道如何在NaN(以及下一个数值)之间划分filler列编号:importpandasaspddates=pd.date_range(start='1/1/2016',end='1/12/2016',freq='D')nums=[10,12,None,None,39,10,11,None,None,None,None,60]df=pd.DataFrame({'date':dates,'num

python - 在 pandas 中保留 NaN 的同时删除重复项

当使用drop_duplicates()方法时,我减少了重复项,但也将所有NaN合并到一个条目中。如何在保留具有空条目(如np.nan、None或'')的行的同时删除重复项?importpandasaspddf=pd.DataFrame({'col':['one','two',np.nan,np.nan,np.nan,'two','two']})Out[]:col0one1two2NaN3NaN4NaN5two6twodf.drop_duplicates(['col'])Out[]:col0one1two2NaN 最佳答案 尝试df

python - 比较包含 nan 的 pandas 系列是否相等?

我的应用程序需要比较有时包含nans的Series实例。这会导致使用==的普通比较失败,因为nan!=nan:importnumpyasnpfrompandasimportSeriess1=Series([1,np.nan])s2=Series([1,np.nan])>>>(Series([1,nan])==Series([1,nan])).all()False比较此类系列的正确方法是什么? 最佳答案 这个怎么样。首先检查NaN是否在同一位置(使用isnull):In[11]:s1.isnull()Out[11]:0False1Tr

python - 具有 NaN 值的 Scipy 中的 T 检验

我在scipy中做t检验时遇到问题,这让我慢慢发疯。它应该很容易解决,但我所做的一切都不起作用,而且我无法通过广泛的搜索找到解决方案。我在Anaconda的最新发行版上使用Spyder。具体来说:我想比较我从csv文件导入的pandas数据框中的两列(“Trait_A”和“Trait_B”)之间的均值。其中一列中的某些值是“Nan”(“不是数字”)。独立样本scipyt检验函数的默认设置不包含“NaN”值。然而,settingthe'nan_policy'parameterto'omit'shoulddealwiththis.然而,当我这样做时,测试统计量和p值返回为“NaN”。当我将

python - Pandas - 用空的 python dict 对象替换 DataFrame 中的所有 NaN 值

我有一个pandasDataFrame,其中每个单元格都包含一个python字典。>>>data={'Q':{'X':{2:2010},'Y':{2:2011,3:2009}},'R':{'X':{1:2013}}}>>>frame=DataFrame(data)>>>frameQRX{2:2010}{1:2013}Y{2:2011,3:2009}NaN我想用一个空的字典替换NaN,以获得这个结果:QRX{2:2010}{1:2013}Y{2:2011,3:2009}{}但是,因为fillna函数不是将空字典解释为标量值,而是解释为列-->值的映射,所以如果我只是这样做,它什么也不做(