【问题标题】:add statistics of dataframe in new columns [duplicate]在新列中添加数据框的统计信息[重复]
【发布时间】:2023-03-05 23:45:02
【问题描述】:

我有一个这样的数据框 df:

   A  B  C  D  E  F   ....   Z
0  3  4  7  1  5  10  ....   2
1  2  5  8  3  3  18  ....   3
2  5  4  9  5  6  75  ....   2
3  1  5  4  7  9  7   ....   1
4  4  5  2  1  2  10  ....   1
5  7  4  3  0  4  10  ....   0

我添加了一个新列,其中包含 F 列的统计信息,如下所示:

df['F_mean'] = df['F'].mean()
df['F_std'] = df['F'].std()
df['F_min'] = df['F'].min()
df['F_max'] = df['F'].max()

有什么方法可以为所有列添加此统计信息均值、标准差、最小值、最大值,而无需手动键入每个新列?我用这个代码尝试了 mean 函数,但我得到一个错误代码'Index' object has no attribute 'mean'。

df[columns + '_mean'] = df.columns.mean()

我的目标是将这样的列添加到我的 df Dataframe 中,但是对于每一列 A 到 Z

  A_mean   A_min   A_max ....Z_max
0  1        4        7  
1  1        4        7  
2  1        4        7  
3  1        4        7  
4  1        4        7  
5  1        4        7  

谢谢你, 回复

【问题讨论】:

    标签: python dataframe statistics


    【解决方案1】:

    您可以通过describe() 查找DataFrame

    df.describe()
    

    这个功能同时给你几个有用的东西。例如,您将获得三个四分位数、平均值、计数、最小值和最大值以及标准差。这非常有用,尤其是在探索性数据分析中。

    只是一个例子:

    >>> df
       col1  col2  col3
    0     1    50     3
    1     1    40     3
    2     1    11     3
    3     2    10     4
    4     2    25     4
    >>> df.describe()
               col1       col2      col3
    count  5.000000   5.000000  5.000000
    mean   1.400000  27.200000  3.400000
    std    0.547723  17.655028  0.547723
    min    1.000000  10.000000  3.000000
    25%    1.000000  11.000000  3.000000
    50%    1.000000  25.000000  3.000000
    75%    2.000000  40.000000  4.000000
    max    2.000000  50.000000  4.000000
    

    我没有看到将它们全部合并为一列,但您可以定义。

    数据框的列标准差

    df.std(axis=0)
    

    数据帧的行标准差

    df.std(axis=1)
    

    因此,不是特定于行或列,您可以尝试如下所示。

    df['F_mean'] = df.mean(axis=1)
    df['F_std'] = df.std(axis=1)
    df['F_min'] = df.min(axis=1)
    df['F_max'] = df.max(axis=1)
    

    更好:

    >>> df.describe().loc[['count','mean', 'std', 'min', 'max']]
               col1       col2      col3
    count  5.000000   5.000000  5.000000
    mean   1.400000  27.200000  3.400000
    std    0.547723  17.655028  0.547723
    min    1.000000  10.000000  3.000000
    max    2.000000  50.000000  4.000000
    

    【讨论】:

    • 是的,但是我如何在一个新列中获得这个计数、平均值、标准、最小值、最大值,例如我要求的 df.F?
    • @raffa_sa,刚刚更新了答案,看看是否有帮助。
    • 我明白你的意思,但我必须为每一列写一个额外的代码df['A_mean'] = df['A_std']= df['A_min']= df['A_max']= ,然后对于 B,C, D,E,F 直到 Z。我的问题是我怎样才能更容易地做到这一点,这样我就不必为每一手的每一列都写它?
    • 试试.. >>> df.describe().loc[['count','mean', 'std', 'min', 'max']]
    • 我去看看这个,看看我能不能在这个上做点什么。
    【解决方案2】:

    您可以使用.describe() 并选择您实际需要的行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-27
      • 2014-04-09
      • 2015-07-07
      • 2017-07-01
      • 2023-03-14
      • 2018-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多