Как применить scipy.stats.describe к каждой группе? - PullRequest
0 голосов
/ 23 июня 2018

Буду признателен, если вы сообщите мне, как применять scipy.stats.describe для расчета сводной статистики по группам.Мои данные (TrainSet) таковы:

Financial Distress  x1       x2      x3
0                   1.28    0.02    0.87
0                   1.27    0.01    0.82
0                   1.05    -0.06   0.92
1                   1.11    -0.02   0.86
0                   1.06    0.11    0.81
0                   1.06    0.08    0.88
1                   0.87    -0.03   0.79

Я хочу вычислить итоговую статистику по «Финансовым бедствиям».Я имею в виду что-то вроде post , но через scipy.stats.describe, потому что мне нужна асимметрия и эксцесс для x1, x2 и x3 по группам.Однако мой код не предоставляет статистику по группам.

    desc=dict()
    for col in TrainSet.columns:
        if [TrainSet["Financial Distress"]==0]:
            desc[col] = describe(TrainSet[col]())
            df = pd.DataFrame.from_dict(desc, orient='index')
            df.to_csv("Descriptive Statistics3.csv")

На самом деле мне нужно что-то вроде этого:

Group                                    0                                                                 1                       
statistics          nobs    minmax       mean   variance    skewness    kurtosis    nobs    minmax       mean   variance    skewness    kurtosis
Financial Distress  2569    (0, 1)        0.0     0.0         4.9           22.1    50      (0, 1)        0.0     0.0         2.9         22.1
x1                  2569    (0.1, 38)     1.4     1.7        16.5           399.9   50      (-3.6, 3.8)    0.3    0.1         0.5         21.8
x2                  2569    (-0.2, 0.7)  0.1      0.0         1.0           1.8     50      (-0.3, 0.7)    0.1    0.0         0.9         1.2
x3                  2569    (0.1, 0.9)   0.6      0.0        -0.5           -0.2    50      (0.1, 0.9)     0.6    0.0        -0.6         -0.3
x4                  2569    (5.3, 6.3)    0.9     0.3         3.2           19.7    50      (-26, 38)     14.0   12.0        15.1         26.5
x5                  2569    (-0.2, 0.8)   0.2     0.0         0.8            1.4    50      (0.3, 0.9)     0.4    0.0        0.5          -0.3

Или

            nobs     minmax     mean       variance     skewness    kurtosis                            
x1  0        5  (1.05, 1.28)    1.144      0.01433  4.073221e-01    -1.825477                               
    1        2  (0.87, 1.11)    0.990      0.02880  1.380350e-15    -2.000000                               

x2  0        5   (-0.06, 0.11)    0.032      0.00437 -1.992376e-01    -1.130951                             
    1        2  (-0.03, -0.02)   -0.025      0.00005  1.058791e-15    -2.000000                             

x3  0        5  (0.81, 0.92)    0.860      0.00205  1.084093e-01    -1.368531                           
    1        2  (0.79, 0.86)    0.825      0.00245  4.820432e-15    -2.000000                           

Заранее спасибо,

1 Ответ

0 голосов
/ 23 июня 2018

Если вы хотите описать 3 серии независимо по группам, вам понадобятся 3 кадра данных.Вы можете создать эти кадры данных и затем объединить их:

from scipy.stats import describe

grouper = df.groupby('FinancialDistress')

variables = df.columns[1:]

res = pd.concat([pd.DataFrame(describe(g[x]) for _, g in grouper)\
                   .reset_index().assign(cat=x).set_index(['cat', 'index']) \
                 for x in variables], axis=0)

print(res)

           nobs          minmax   mean  variance      skewness  kurtosis
cat index                                                               
x1  0         5    (1.05, 1.28)  1.144   0.01433  4.073221e-01 -1.825477
    1         2    (0.87, 1.11)  0.990   0.02880  1.380350e-15 -2.000000
x2  0         5   (-0.06, 0.11)  0.032   0.00437 -1.992376e-01 -1.130951
    1         2  (-0.03, -0.02) -0.025   0.00005  1.058791e-15 -2.000000
x3  0         5    (0.81, 0.92)  0.860   0.00205  1.084093e-01 -1.368531
    1         2    (0.79, 0.86)  0.825   0.00245  4.820432e-15 -2.000000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...