首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Python填充和填充Dataframe中每个组的缺失值?

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

Stack Overflow用户
提问于 2018-11-20 13:58:18
回答 1查看 624关注 0票数 0

这是dataframe的一个例子:

例如,

代码语言:javascript
复制
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进口进口熊猫作为pd进口numpy

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

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

df‘’Type‘.NoInfo(value=’NoInfo‘,inplace = True)

数据格式如下所示:

例如,

代码语言:javascript
复制
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’.替换(0,np.nan)

df‘’price‘= pd.to_numeric(df.price,errors=’胁迫‘)

df'price‘=df.groupby(’Type‘)’price‘..transform(lambda: x.mean())

df'price_zscore‘= df['price'].apply(zscore)

运行此代码后,所有地产组的所有价格值都已更改,自变量'price_zscore‘中的所有z得分值都是"NaN“。

我希望得到每个房地产集团“公寓和房屋”的“类型”的平均价格,将自变量‘价格’中的'0‘替换为每个房地产组(公寓、住房)的平均值。

例如,自变量“类型”中的房产组“价格”中的"0“值必须替换为房地产组”公寓“中的平均价格,房地产组”住房“中的”价格“中的"0”值必须替换为房地产组“房屋”中的“价格”平均值,而房地产组"NoInfo“中”价格“中的"0”值必须替换为房地产组"NoInfo“中的平均价格。

df =名称类型价格

代码语言:javascript
复制
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分数,房产组"House“的z分数和"NoInfo”组的z得分,并将所有组的z分数放在独立的‘price_score’中。

我真的需要你的帮助来修复上面的代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-20 19:32:20

pandas中,您可以使用NaN替换缺少的值。然后你就可以用群体平均数来推测他们了。最后,您可以使用zscore函数从scipystats模块计算价格的z值。

以下是代码:

代码语言:javascript
复制
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.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53394638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档