簡體   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