Как я могу заполнить и заполнить пропущенные значения каждой группы в Dataframe, используя Python? - PullRequest
0 голосов
/ 20 ноября 2018

Это пример фрейма данных:

Например,

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

Я работал над преобразованием «unknown» в «NoInfo» в «Type»:

импорт панд как pd импорт numpy как np из scipy.stats импорт zscore

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

df.Type.fillna (значение = pd.np.nan, inplace = True)

df ['Type']. Fillna (значение = '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, ошибки= 'coerce')

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

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

После запуска этого кода все значения цен всех групп свойств были изменены, а все значения z-счета в независимыхпеременная price_zscore - это NaN.

Я хочу получить среднее значение цены для каждой группы недвижимости "Квартиры и дома" в поле "Тип", заменив '0' в независимой переменной 'цена' на среднее значение для каждой группы недвижимости (квартиры)., дома).

Например, значения «0» в независимой переменной «цена» в группе свойств «Квартира» в независимой переменной «Тип» должны быть заменены средними ценами в группе свойств «Квартира»,Значения «0» в «цене» в группе свойств «дом» должны быть заменены средними ценами в группе свойств «дом», а значения «0» в «цене» в группе свойств «NoInfo»:среднее значение цены для группы свойств "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-оценку группы свойств "Квартира", Z-шкалу группы свойств "Дом" и z-шкалу группы "NoInfo" и поместить все z-оценки всех групп в независимую переменную.'price_zscore.

Мне действительно нужна ваша помощь, чтобы исправить код выше.

1 Ответ

0 голосов
/ 20 ноября 2018

В pandas вы можете заменить отсутствующие значения на NaN, используя replace().Тогда вы можете вменять их с групповым средним.В конце концов, вы можете вычислить z-оценку цены, используя функцию zscore из stats модуля scipy.

. Вот код:

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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...