繁体   English   中英

如何使用Python填充和填充Dataframe中每个组的缺失值?

[英]How can I fill up and fill up the missing values of each group in Dataframe using Python?

这是数据框的示例:

例如,

df = 

     Name         Type               Price 

0    gg         apartment            8   
1    hh         apartment            4
2    tty        apartment            0
3    ttyt       None                 6
4    re         house                6 
5    ew         house                2
6    rr         house                0
7    tr         None                 5
8    mm         None                 0

我致力于将“类型”中的“未知”转换为“ NoInfo”:

从scipy.stats中将pandas作为pd导入,将numpy作为np导入

df = pd.read_csv(“ C:/Users/User/Desktop/properties.csv”)

df.Type.fillna(value = pd.np.nan,inplace = True)

df ['Type']。fillna(value ='NoInfo',inplace = True)

数据框如下所示:

例如,

df = 
     Name         Type               price 

0    gg         apartment            8   
1    hh         apartment            4
2    tty        apartment            0
3    ttyt       NoInfo               6
4    re         house                6 
5    ew         house                2
6    rr         house                0
7    tr         NoInfo               5
8    mm         NoInfo               0

之后,我将“ 0”值替换为每个组“公寓”,“房屋”和“ NoInfo”的价格平均值,并取每个组的z得分。

df ['price'] = df ['price']。replace(0,np.nan)

df ['price'] = pd.to_numeric(df.price,errors ='coerce')

df ['price'] = df.groupby('Type')['price']。transform(lambda x:x.mean())

df ['price_zscore'] = df [['price']]。apply(zscore)

运行此代码后,所有属性组的价格的所有值均已更改,并且自变量'price_zscore'中的所有z得分值均为“ NaN”。

我希望在“类型”中获取每个属性组“公寓和房屋”的平均价格,将独立变量“价格”中的“ 0”替换为每个属性组(公寓,房屋)的平均值。

例如,必须将属性变量“类型”中属性组“公寓”中自变量“价格”中的“ 0”值替换为属性组“公寓”中的平均价格,而“属性组“房屋”中的“价格”必须替换为属性组“房屋”的平均价格,属性组“ NoInfo”中“价格”中的“ 0”值必须替换为属性的平均价格组“ NoInfo”

df =名称类型价格

0    gg         apartment            8   
1    hh         apartment            4
2    tty        apartment            6   # (8+4)/2 = 6
3    ttyt       NoInfo               6
4    re         house                6 
5    ew         house                2
6    rr         house                4  # (6+2)/2 = 4
7    tr         NoInfo               5
8    mm         NoInfo               0

在那之后,我希望获得每个属性组的“ Z分数”。 例如,我要获取属性组“公寓”的z分数,属性组“房屋”的zscore和“ NoInfo”组的zscore,并将所有组的所有z分数放入独立变量中“ price_zscore”。

我确实需要您的帮助来修复上面的代码。

pandas您可以使用replace()将缺失的值替换为NaN。 然后,您可以使用组均值来估算它们。 最终,您可以使用zscorestats模块中的scipy函数来计算价格的z分数。

这是代码:

import numpy as np
import pandas as pd
from scipy.stats import zscore


df = pd.read_csv('./data.csv')

df['price'] = df['price'].replace(0, np.nan)
df['price'] = df.groupby('type').transform(lambda x: x.fillna(x.mean()))

df['price_zscore'] = df[['price']].apply(zscore) # You need to apply score function on a DataFrame—not a Series.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM