pandas 按行聚合 按列聚合 分组添加汇总行

您所在的位置:网站首页 pandas加一行求平均值 pandas 按行聚合 按列聚合 分组添加汇总行

pandas 按行聚合 按列聚合 分组添加汇总行

2024-07-12 00:06| 来源: 网络整理| 查看: 265

1.dataframe按行列聚合

对于某个数据,我们经常需要各种聚合操作,比如针对行/列求和,求均值等。下面通过一个例子看在pandas中如何实现。

import pandas as pd def t1(): data = { 'name': ['a', 'a', 'a', 'b', 'b', 'c', 'c', 'c'], 's1': [1, 5, 4, 2, 4, 3, 6, 7], 's2': [0.1, 0.5, 0.4, 0.2, 0.4, 0.3, 0.6, 0.7] } df = pd.DataFrame(data) df['merge'] = df[['s1', 's2']].sum(axis=1) df.loc['总和'] = df[['s1', 's2', 'merge']].sum() n = df.shape[0] index_array = [i for i in range(n-1)] df.loc['均值'] = df.loc[index_array].mean() df.loc['方差'] = df.loc[index_array].std() print(df)

上面代码实现了如下功能: 1.对于df将s1,s2的值相加,即逐行求和,并将结果命名为merge。 2.对于df,将s1,s2, merge分别按列求和,并且该行索引值为总和。 3.对于求均值求方差,与按列求和同理。 4.注意因为已经添加了一行总和,在后面求均值求方差时候需要将该行排除掉。

总结一下,按行列求和相对比较简单,只需找准指定数据对应位置即可。

2.分组添加汇总行

先对数据分组,然后添加汇总结果行,也是我们常见应用场景,下面看个例子。

def t2(): data = { 'name': ['a', 'a', 'a', 'b', 'b', 'c', 'c', 'c'], 's1': [1, 5, 4, 2, 4, 3, 6, 7], 's2': [0.1, 0.5, 0.4, 0.2, 0.4, 0.3, 0.6, 0.7] } df = pd.DataFrame(data) aggret = df.groupby('name', as_index=False).agg({'s1': 'sum', 's2': 'sum'}) df = pd.concat([df, aggret]).reset_index(drop=True) df.sort_values(by='name', inplace=True) print(df)

上面代码实现的功能是,将数据按name分组,然后对s1,s2进行聚合做求和操作。

操作步骤如下: 1.先根据name做groupby操作,需要注意的点在于,将groupby函数中的as_index参数设为False,这样name将不会作为结果中的行索引。 2.将原有的df与aggret进行拼接,这样就将汇总行数据添加了进来。 3.对所得结果按name排序,这样得到的结果方便查看,汇总行数据在相同key数组分组的最下面一行。

最后得到的结果为:

name s1 s2 0 a 1 0.1 1 a 5 0.5 2 a 4 0.4 8 a 10 1.0 3 b 2 0.2 4 b 4 0.4 9 b 6 0.6 5 c 3 0.3 6 c 6 0.6 7 c 7 0.7 10 c 16 1.6


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3