在新列中添加数据框的统计信息

时间:2018-11-07 09:31:19

标签: python dataframe statistics

我有一个这样的数据框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()

有什么方法可以为我添加所有列的统计平均值,std,min,max,而无需手动输入每个新列吗?我尝试使用此代码作为均值函数,但得到的错误代码为“索引”对象没有属性“均值”。

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

我的目标是将这样的列添加到我的df数据框中,但对于从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  

谢谢你, R

2 个答案:

答案 0 :(得分:3)

您可以使用DataFrame查找describe()

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

答案 1 :(得分:1)

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