统计函数中的空数据框

Null dataframe in statistic function

我在使用从数据框中提取主要统计数据的函数时遇到问题:中位数、标准差、峰度等

它一直返回null,我不明白为什么。我的代码如下:

import pandas as pd

df = pd.read_excel("file.xlsx")

def estatistics_from_df(df):
    df_stats = pd.DataFrame()
    df_stats['Colunas'] = df.columns
    df_stats['Tipos'] = df.dtypes
    df_stats['Count'] = df.count()
    df_stats['Unique'] = df.nunique()
    df_stats['Nulos'] = df.isnull().sum()
    df_stats['Min'] = df.min()
    df_stats['Max'] = df.max()
    df_stats['Mean'] = df.mean()
    df_stats['Median'] = df.median()
    df_stats['Std'] = df.std()
    df_stats['Variance'] = df.var()
    df_stats['Kurtosis'] = df.kurtosis()
    df_stats['Skewness'] = df.skew()
    df_stats['Entropy'] = df.nunique()
    df_stats['Missing'] = df.isnull().sum()
    return df_stats

df_stats = estatistics_from_df(df)

最终数据帧是:

  Colunas Tipos  Count  Unique  Nulos  Min  Max  Mean  Median  Std  Variance  Kurtosis  Skewness  Entropy  Missing
0      ID   NaN    NaN     NaN    NaN  NaN  NaN   NaN     NaN  NaN       NaN       NaN       NaN      NaN      NaN
1     Min   NaN    NaN     NaN    NaN  NaN  NaN   NaN     NaN  NaN       NaN       NaN       NaN      NaN      NaN
2     End   NaN    NaN     NaN    NaN  NaN  NaN   NaN     NaN  NaN       NaN       NaN       NaN      NaN      NaN

原始数据框是:

    ID        Min        End
0   46 2020-01-31 2021-07-15
1  115 2020-09-05 2020-11-25
2  126 2021-10-04 2022-10-03
3  327 2021-07-24 2023-05-27
4  375 2021-06-10 2021-06-17
```

您的每个统计函数 returns 一系列以索引作为 DataFrame 的列名。因此,您应该在函数的第一行设置索引。

尝试:

def estatistics_from_df(df):
    df_stats = pd.DataFrame(index=df.columns)
    df_stats['Colunas'] = df.columns
    df_stats['Tipos'] = df.dtypes
    df_stats['Count'] = df.count()
    df_stats['Unique'] = df.nunique()
    df_stats['Nulos'] = df.isnull().sum()
    df_stats['Min'] = df.min()
    df_stats['Max'] = df.max()
    df_stats['Mean'] = df.mean()
    df_stats['Median'] = df.median()
    df_stats['Std'] = df.std()
    df_stats['Variance'] = df.var()
    df_stats['Kurtosis'] = df.kurtosis()
    df_stats['Skewness'] = df.skew()
    df_stats['Entropy'] = df.nunique()
    df_stats['Missing'] = df.isnull().sum()
    return df_stats.reset_index(drop=True)

>>> estatistics_from_df(df)

  Colunas           Tipos  Count  Unique  Nulos                  Min  \
0      ID           int64      5       5      0                   46   
1     Min  datetime64[ns]      5       5      0  2020-01-31 00:00:00   
2     End  datetime64[ns]      5       5      0  2020-11-25 00:00:00   

                   Max   Mean  Median                          Std  Variance  \
0                  375  197.8   126.0                   144.175934   20786.7   
1  2021-10-04 00:00:00    NaN     NaN  256 days 13:26:52.018691364       NaN   
2  2023-05-27 00:00:00    NaN     NaN  376 days 07:10:06.345801880       NaN   

   Kurtosis  Skewness  Entropy  Missing  
0 -2.592627  0.456711        5        0  
1       NaN       NaN        5        0  
2       NaN       NaN        5        0