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

2024-10-03 15:23:31 发布

您现在位置: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

我致力于将“Type”中的“unknown”转换为“NoInfo”:

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

df=pd.read_csv文件(“C:/Users/User/Desktop/csv属性“)

在df.Type.fillna公司(价值=pd.np.nan公司,就地=真)

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

数据帧如下:

例如

^{pr2}$

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

df['price']=df['price'],替换(0,np.nan公司)在

df['price']=pd.to_数字(df.价格,errors='force')

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

df['price_zscore']=df['price']]应用(zscore)

运行此代码后,所有属性组的价格的所有值都已更改,自变量“price_zscore”中的所有z-score值均为“NaN”。在

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

例如,自变量“Type”中属性组“公寓”中自变量“price”中的“0”值必须替换为属性组“公寓”的平均价格,属性组“house”中“price”中的“0”值必须替换为属性组“house”中的“price”中的“0”值必须替换为属性组“NoInfo”中“price”中的“0”值

测向= 名称类型价格

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”属性组的Zscore和“NoInfo”组的Zscore,并将所有组的z分数放入独立变量“price Zscore”。在

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


Tags: 数据nonedf属性type公司价格price
1条回答
网友
1楼 · 发布于 2024-10-03 15:23:31

pandas中,可以使用replace()将缺少的值替换为NaN。然后你可以用组平均数来计算它们。最后,您可以使用函数zscorescipystats模块计算价格的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.

相关问题 更多 >