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

时间:2018-11-20 13:58:19

标签: python group-by

这是数据框的示例:

例如

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”:

将熊猫作为pd导入 将numpy导入为np 从scipy.stats导入zscore

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”)替换属性变量“类型”中属性组“公寓”中自变量“价格”中的“ 0”值物业组“ house”中“ price”中的值必须替换为物业组“ house”的平均价格,而属性组“ NoInfo”中“ price”中的“ 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”。

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

1 个答案:

答案 0 :(得分:1)

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

代码如下:

scipy