这是dataframe的一个例子:
例如,
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)
数据格式如下所示:
例如,
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 =名称类型价格
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’中。
我真的需要你的帮助来修复上面的代码。
发布于 2018-11-20 19:32:20
在pandas中,您可以使用NaN替换缺少的值。然后你就可以用群体平均数来推测他们了。最后,您可以使用zscore函数从scipy的stats模块计算价格的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.https://stackoverflow.com/questions/53394638
复制相似问题