Python Pandas: вычислить среднее значение, отклонение стандартного отклонения и пропущенные значения для импортированного набора данных - PullRequest
0 голосов
/ 29 ноября 2018

Итак, я хочу создать таблицу, которая показывает среднее значение, стандартное отклонение и подсчитывает все пропущенные значения из двух переменных в импортированном файле данных CSV.CSV-файл выглядит следующим образом:

Group   Var1   Var2 
1       10     100
1       NA     200
2       30     NA
2       40     NA
3       50     500
3       60     600

Так что моя программа импортирует этот CSV-файл, затем с помощью панд я хочу создать таблицу, которая показывает среднее значение, отклонение стандартного отклонения и подсчитывает пропущенные значения при агрегировании их поГрупповые номера.Я ищу вывод, который выглядит так:

Variables    Missing Values    Group 1     Group 2     Group 3
Var1         1                 mean1(sd1)  mean2(sd2)  mean3(sd3)
Var2         2                 mean1(sd1)  mean2(sd2)  mean3(sd3)

Ответы [ 2 ]

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

Вы можете сделать это, используя следующий код

>>> import numpy as np
>>> import pandas as pd
>>> 
>>> df = pd.DataFrame([
... [1, 10, 100],
... [1, np.nan, 200],
... [2, 30, np.nan],
... [2, 40, np.nan],
... [3, 50, 500],
... [3, 60, 600]])
>>> 
>>> df.columns = ["Group", "Var1", "Var2"]
>>> 
>>> groupCol = "Group"
>>> nan_df = df.isna().groupby(groupCol).sum().transpose()
>>> nan_df.columns = ['Missing Values']
>>> std_df = df.groupby(groupCol).std().round(3).transpose()
>>> mean_df = df.groupby(groupCol).mean().round(3).transpose()
>>> # get mean and standard deviation into one column
>>> for i in range(len(mean_df.columns)):
...     mean_df.loc[:, mean_df.columns[i]] = mean_df[mean_df.columns[i]].astype(str)+'('+std_df[std_df.columns[i]].astype(str)+')'
... 
>>> # change the column names
>>> mean_df.columns = ["Group "+ str(each_group) for each_group in mean_df.columns]
>>> # add missing value data
>>> mean_df = mean_df.join(nan_df)
>>> mean_df
            Group 1      Group 2        Group 3  Missing Values
Var1      10.0(nan)  35.0(7.071)    55.0(7.071)               1
Var2  150.0(70.711)     nan(nan)  550.0(70.711)               2
>>> 

Все вышеперечисленные операции используют метод groupby для фреймов данных.С небольшими манипуляциями вы можете легко получить данные в нужном формате.

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

Использование:

df = pd.DataFrame({'Group':[1, 1, 2, 2, 2],
                  'Var1':[20, np.NaN, 30, 20, np.NaN],
                  'Var2':[np.NaN, np.NaN, 30, 20, 3]})
df
    Group   Var1    Var2
0   1       20.0    NaN
1   1       NaN NaN
2   2       30.0    30.0
3   2       20.0    20.0
4   2       NaN 3.0

miss = len(df) - df.describe().iloc[0,1:]
dfn = df.groupby(['Group'])['Var1','Var2'].apply(lambda x: x.describe()[1:3]).T#.add_suffix('_')
dfn['missing values'] = miss
dfn

Вывод:

Group   1               2                       missing values
        mean    std     mean        std 
Var1    20.0    NaN     25.000000   7.071068    2.0
Var2    NaN     NaN     17.666667   13.650397   2.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...