首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何按多列值数分组汇总pandas DataFrame?

在Pandas中,可以使用groupby()函数按多列值对DataFrame进行分组汇总。

下面是按多列值分组汇总DataFrame的步骤:

  1. 导入必要的库:
代码语言:txt
复制
import pandas as pd
  1. 创建DataFrame:
代码语言:txt
复制
data = {'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
        'B': ['one', 'one', 'two', 'two', 'two', 'one', 'one', 'two'],
        'C': [1, 2, 3, 4, 5, 6, 7, 8],
        'D': [10, 20, 30, 40, 50, 60, 70, 80]}
df = pd.DataFrame(data)
  1. 使用groupby()函数按多列值进行分组:
代码语言:txt
复制
grouped = df.groupby(['A', 'B'])
  1. 对分组后的数据进行汇总操作,例如计算平均值:
代码语言:txt
复制
result = grouped.mean()

完整的代码如下:

代码语言:txt
复制
import pandas as pd

data = {'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
        'B': ['one', 'one', 'two', 'two', 'two', 'one', 'one', 'two'],
        'C': [1, 2, 3, 4, 5, 6, 7, 8],
        'D': [10, 20, 30, 40, 50, 60, 70, 80]}
df = pd.DataFrame(data)

grouped = df.groupby(['A', 'B'])
result = grouped.mean()

print(result)

这段代码将按列'A'和列'B'的值进行分组,并计算其他列的平均值。你可以根据实际需求进行其他汇总操作,例如求和、计数等。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python面试十问2

、下四分位(25%)、中位数(50%)、上四分位(75%)以及最大。...五、pandas中的索引操作 pandas⽀持四种类型的轴索引,它们是: Dataframe.[ ] 此函数称为索引运算符 Dataframe.loc[ ] : 此函数⽤于标签 Dataframe.iloc...六、pandas的运算操作  如何得到⼀个数列的最⼩、第25百分位、中值、第75位和最⼤?...九、分组(Grouping)聚合 “group by” 指的是涵盖下列⼀项或多项步骤的处理流程: 分割:条件把数据分割成多组; 应⽤:为每组单独应⽤函数; 组合:将处理结果组合成⼀个数据结构。...先分组,再⽤ sum()函数计算每组的汇总数据  分组后,⽣成多层索引,也可以应⽤ sum 函数 分组后可以使用如sum()、mean()、min()、max()等聚合函数来计算每个组的统计

7110

Pandas速查手册中文版

(n):查看DataFrame对象的最后n行 df.shape():查看行数和 http:// df.info() :查看索引、数据类型和内存信息 df.describe():查看数值型汇总统计...数据选取 df[col]:根据列名,并以Series的形式返回 df[[col1, col2]]:以DataFrame形式返回 s.iloc[0]:位置选取数据 s.loc['index_one...([col1,col2]):返回一个进行分组的Groupby对象 df.groupby(col1)[col2]:返回col1进行分组后,col2的均值 df.pivot_table(index...=col1, values=[col2,col3], aggfunc=max):创建一个col1进行分组,并计算col2和col3的最大的数据透视表 df.groupby(col1).agg(np.mean...):返回col1分组的所有的均值 data.apply(np.mean):对DataFrame中的每一应用函数np.mean data.apply(np.max,axis=1):对DataFrame

12.1K92

妈妈再也不用担心我忘记pandas操作了

df.tail(n) # 查看DataFrame对象的最后n行 df.shape() # 查看行数和 df.info() # 查看索引、数据类型和内存信息 df.describe()# 查看数值型汇总统计...数据选取: df[col] # 根据列名,并以Series的形式返回 df[[col1, col2]] # 以DataFrame形式返回 df.iloc[0] # 位置选取数据 df.loc[...'index_one'] # 索引选取数据 df.iloc[0,:] # 返回第一行 df.iloc[0,0] # 返回第一的第一个元素 数据统计: df.describe() # 查看数据汇总统计...升序排列,后col2降序排列数据 df.groupby(col) # 返回一个col进行分组的Groupby对象 df.groupby([col1,col2]) # 返回一个进行分组的Groupby...=max) # 创建一个col1进行分组,并计算col2和col3的最大的数据透视表 df.groupby(col1).agg(np.mean) # 返回col1分组的所有的均值 data.apply

2.2K31

Pandas 进行数据处理系列 二

loc函数标签进行提取iloc位置进行提取ix可以同时标签和位置进行提取 具体的使用见下: df.loc[3]索引提取单行的数值df.iloc[0:5]索引提取区域行数据df.reset_index...df.groupby(‘city’).count() city 分组后进行数据汇总df.groupby(‘city’)[‘id’].count() city 进行分组,然后汇总 id 的数据df.groupby...city 进行分组,然后计算 pr 的大小、总和和平均 数据统计 数据采样,计算标准差、协方差和相关系数。...4500, 4321]}) df_gb = df.groupby('Country') for index, data in df_gb: print(index) print(data) 分组...默认会将分组后将所有分组放在索引中,但是可以使用 as_index=False 来避免这样。

8.1K30

数据分组

1.分组键是列名 分组键是列名时直接将某一的列名传给 groupby() 方法,groupby() 方法就会按照这一进行分组。...参数: ①分组键是列名: 单个列名直接写(进行分组),多个列名以列表的形式传入(这就是进行分 组)。...""" (1)进行分组 import pandas as pd df = pd.DataFrame([[99,"A类","一线城市","是",6,20,0],...求众数、var 求方差、std 求标准差、quantile 求分位数 (2)进行分组 进行分组,只要将多个列名以列表的形式传给 groupby() 即可。...② 针对不同的做不同的汇总运算:字典形式,*键名*是*列名*,*键值*是*汇总方式*字符串形式。 返回: 一个DataFrame对象。

4.5K11

python数据分析——数据分类汇总与统计

本文将介绍如何使用Python进行数据分类汇总与统计,帮助读者更好地理解和应用数据。 首先,我们需要导入一些常用的Python库,如pandas、numpy和matplotlib等。...1.1分组 分组分为以下三种模式: 第一种: df.groupby(col),返回一个进行分组的groupby对象; 第二种: df.groupby([col1,col2]),返回一个进行分组的...print(list(gg)) 【例2】采用函数df.groupby([col1,col2]),返回一个进行分组的groupby对象。...关键技术: df.groupby(col1)[col2]或者df[col2].groupby(col1),两者含义相同,返回col1进行分组后,col2的。...首先,编写一个选取指定具有最大的行的函数: 现在,如果对smoker分组并用该函数调用apply,就会得到: top函数在DataFrame的各个片段调用,然后结果由pandas.concat

13810

Pandas速查卡-Python数据科学

) 所有的唯一和计数 选择 df[col] 返回一维数组col的 df[[col1, col2]] 作为新的数据框返回 s.iloc[0] 位置选择 s.loc['index_one'] 索引选择...) 将col1升序排序,然后降序排序col2 df.groupby(col) 从一返回一组对象的 df.groupby([col1,col2]) 从返回一组对象的 df.groupby(col1...)[col2] 返回col2中的的平均值,col1中的分组(平均值可以用统计部分中的几乎任何函数替换) df.pivot_table(index=col1,values=[col2,col3],aggfunc...=max) 创建一个数据透视表,col1分组并计算col2和col3的平均值 df.groupby(col1).agg(np.mean) 查找每个唯一col1组的所有的平均值 data.apply(...df.describe() 数值汇总统计信息 df.mean() 返回所有的平均值 df.corr() 查找数据框中的之间的相关性 df.count() 计算每个数据框的中的非空的数量 df.max

9.2K80

总结了67个pandas函数,完美解决数据处理,拿来即用!

df.head(n) # 查看DataFrame对象的前n⾏ df.tail(n) # 查看DataFrame对象的最后n⾏ df.shape() # 查看⾏ df.info() # 查看索引...df[col] # 根据列名,并以Series的形式返回 df[[col1,col2]] # 以DataFrame形式返回 s.iloc[0] # 位置选取数据 s.loc['index_one...col2降序排列数据 df.groupby(col) # 返回⼀个col进⾏分组的Groupby对象 df.groupby([col1,col2]) # 返回⼀个进⾏分组的Groupby对象...(index=col1,values=[col2,col3],aggfunc={col2:max,col3:[ma,min]}) # 创建⼀个col1进⾏分组,计算col2的最⼤和col3的最⼤...、最⼩的数据透视表 df.groupby(col1).agg(np.mean) # 返回col1分组的所有的均值,⽀持 df.groupby(col1).col2.agg(['min','max

3.5K30

超全的pandas数据分析常用函数总结:下篇

数据提取 下面这部分会比较绕: loc函数标签进行提取,iloc位置进行提取pandas.DataFrame.loc() 允许输入的: 单个标签,例如5或’a’,(请注意,5被解释为索引的标签,...6.2.5 用iloc取连续的多行和 提取第3行到第6行,第4到第5,取得是行和交叉点的位置。 data.iloc[2:6,3:5] 输出结果: ?...6.2.6 用iloc取不连续的多行和 提取第3行和第6行,第4和第5的交叉 data.iloc[[2,6],[3,5]] 输出结果: ?...数据汇总 8.1 以department属性对所有进行计数汇总 data.groupby("department").count() 输出结果: ?...8.2 以department属性分组之后,对id字段进行计数汇总 data.groupby("department")['id'].count() 输出结果: ?

3.9K20

超全的pandas数据分析常用函数总结:下篇

数据提取 下面这部分会比较绕: loc函数标签进行提取,iloc位置进行提取pandas.DataFrame.loc() 允许输入的: 单个标签,例如5或’a’,(请注意,5被解释为索引的标签,...6.2.5 用iloc取连续的多行和 提取第3行到第6行,第4到第5,取得是行和交叉点的位置。 data.iloc[2:6,3:5] 输出结果: ?...6.2.6 用iloc取不连续的多行和 提取第3行和第6行,第4和第5的交叉 data.iloc[[2,6],[3,5]] 输出结果: ?...数据汇总 8.1 以department属性对所有进行计数汇总 data.groupby("department").count() 输出结果: ?...8.2 以department属性分组之后,对id字段进行计数汇总 data.groupby("department")['id'].count() 输出结果: ?

4.9K20

最全面的Pandas的教程!没有之一!

比如,提取 'c' 行中 'Name’ 的内容,可以如下操作: ? 此外,你还可以制定多行和/或,如上所示。...分组统计 Pandas分组统计功能可以某一的内容对数据行进行分组,并对其应用统计函数,比如求和,平均,中位数,标准差等等… 举例来说,用 .groupby() 方法,我们可以对下面这数据表...排序 如果想要将整个表某一进行排序,可以用 .sort_values() : ? 如上所示,表格变成 col2 从小到大排序。...数据透视表是一种汇总统计表,它展现了原表格中数据的汇总统计结果。Pandas 的数据透视表能自动帮你对数据进行分组、切片、筛选、排序、计数、求和或取平均值,并将结果直观地显示出来。...,index 表示进行分组索引,而 columns 则表示最后结果将的数据进行分列。

25.8K64

数据分析篇 | PyCon 大咖亲传 pandas 25 式,长文建议收藏

操控缺失 把字符串分割为 把 Series 里的列表转换为 DataFrame 用多个函数聚合 用一个 DataFrame 合并聚合的输出结果 选择行与 重塑多重索引 Series 创建透视表...这时,可以用 Numpy 的 random.rand() 函数,设定行数与,然后把传递给 DataFrame 构建器。 ?...这里要注意的是,字符串里的字符数量必须与 DataFrame一致。 3. 重命名列 ? 用点(.)选择 pandas 里的写起来比较容易,但列名里有空格,就没法这样操作了。...rename()方法改列名是最灵活的方式,它的参数是字典,字典的 Key 是原列名,是新列名,还可以指定轴向(axis)。 ? 这种方式的优点是可以重命名任意数量的,一、所有都可以。...把字符串分割为 创建一个 DataFrame 示例。 ? 把姓名列分为姓与名两,用 str.split() 方法,空格分割,并用 expand 关键字,生成一个新的 DataFrame。 ?

7.1K20

pandas技巧4

对象的前n行 df.tail(n) # 查看DataFrame对象的最后n行 df.shape() # 查看行数和 df.info() # 查看索引、数据类型和内存信息 df.columns() #...df[[col1, col2]] # 以DataFrame形式返回 s.iloc[0] # 位置选取数据 s.loc['index_one'] # 索引选取数据 df.iloc[0,:] # 返回第一行...,后col2降序排列数据 df.groupby(col) # 返回一个col进行分组的Groupby对象 df.groupby([col1,col2]) # 返回一个进行分组的Groupby...(index=col1, values=[col2,col3], aggfunc={col2:max,col3:[ma,min]}) # 创建一个col1进行分组,计算col2的最大和col3的最大...、最小的数据透视表 df.groupby(col1).agg(np.mean) # 返回col1分组的所有的均值,支持df.groupby(col1).col2.agg(['min','max'

3.4K20

我用Python展示Excel中常用的20个操

PandasPandas中可以结合NumPy生成由指定随机(均匀分布、正态分布等)生成的矩阵,例如同样生成10*2的0—1均匀分布随机矩阵为,使用一行代码即可:pd.DataFrame(np.random.rand...数据合并 说明:将两数据合并成一 Excel 在Excel中可以使用公式也可以使用Ctrl+E快捷键完成合并,以公式为例,合并示例数据中的地址+岗位列步骤如下 ?...PandasPandas中合并比较简单,类似于之前的数据插入操作,例如合并示例数据中的地址+岗位列使用df['合并列'] = df['地址'] + df['岗位'] ?...数据分组 说明:对数据进行分组计算 Excel 在Excel中对数据进行分组计算需要先对需要分组的字段进行排序,之后可以通过点击分类汇总并设置相关参数完成,比如对示例数据的学历进行分组并求不同学历的平均薪资...数据抽样 说明:对数据要求采样 Excel 在Excel中抽样可以使用公式也可以使用分析工具库中的抽样,但是仅支持对数值型的抽样,比如随机抽20个示例数据中薪资的样本 ?

5.5K10

首次公开,用了三年的 pandas 速查表!

对象的前n行 df.tail(n) # 查看 DataFrame 对象的最后n行 df.sample(n) # 查看 n 个样本,随机 df.shape # 查看行数和 df.info() # 查看索引...,汇总 df.loc['col_sum'] = df.apply(lambda x: x.sum()) # 指定的列表顺序显示 df.reindex(order_list) # 指定的排序 df.reindex...(col) # 返回一个col进行分组的Groupby对象 df.groupby([col1,col2]) # 返回一个进行分组的Groupby对象 df.groupby(col1)[col2...] # 返回col1进行分组后,col2的均值 # 创建一个col1进行分组,并计算col2和col3的最大的数据透视表 df.pivot_table(index=col1,...col1分组的所有的均值 # 将其他转行 pd.melt(df, id_vars=["day"], var_name='city', value_name='temperature') # 交叉表是用于统计分组频率的特殊透视表

7.4K10

Python常用小技巧总结

对象的前n⾏ df.tail(n) # 查看DataFrame对象的最后n⾏ df.shape() # 查看⾏ df.info() # 查看索引、数据类型和内存信息 df.columns...df[[col1,col2]] # 以DataFrame形式返回 s.iloc[0] # 位置选取数据 s.loc['index_one'] # 索引选取数据 df.iloc[0,:]...([col1,col2]) # 返回⼀个进⾏分组的Groupby对象 df.groupby(col1)[col2].agg(mean) # 返回col1进⾏分组后,col2的均值,agg可以接受列表参数...col1进⾏分组,计算col2的最⼤和col3的最⼤、最⼩的数据透视表 df.groupby(col1).agg(np.mean) # 返回col1分组的所有的均值,⽀持 df.groupby.../archive/数据汇总.csv",index=False) pandas中Series和Dataframe数据类型互转 pandas中series和dataframe数据类型互转 利用to_frame

9.4K20

利用excel与Pandas完成实现数据透视表

数据透视表是一种分类汇总数据的方法。本文章将会介绍如何Pandas完成数据透视表的制作和常用操作。...这个统计需要用到以下两个参数: q margins,设定是否添加汇总,一般设置为True。 q margins_name,汇总的名称。...图12 仅保留汇总数据某些行和 3,使用字段列表排列数据透视表中的数据 数据透视表是一个DataFrame,所以可以用sort_values方法来排序,示例代码如下: pt = df.pivot_table...图13 汇总升序排列 从结果可以看出洗衣机的总销售额是最低的。...图14 对数据透视表中的数据进行分组Pandas也可以实现类似的统计,示例代码如下: 代码11-9 对数据透视表中的数据进行分组统计 import pandas as pd import xlwings

2.1K40

Python替代Excel Vba系列(二):pandas分组统计与操作Excel

系列列表 "替代Excel Vba"系列(一):用Python的pandas快速汇总 前言 在本系列的上一节已经介绍了如何读写 excel 数据,并快速进行汇总处理。...首要任务是得到排名,如下: 这里需要在数据中新增一[排名] df.groupby('班级') 就是 班级 分组的意思。...此时显示变量 rank 的数据,可以看到结果就是排名结果(1数据) 在 pandas 中往 DataFrame 中新增一非常简单。...而 transform 方法的特点就是不会压缩原数据的行数,因此每组的都是一样的平均分。 df['班级均分']=class_avg ,同样新增一。...就是最左边的那一数字 每个 DataFrame 都会有这样的 index,不管你怎么操作他,这个 index 都不会改变。

1.6K30

Pandas 25 式

操控缺失 把字符串分割为 把 Series 里的列表转换为 DataFrame 用多个函数聚合 用一个 DataFrame 合并聚合的输出结果 选择行与 重塑多重索引 Series 创建透视表...这时,可以用 Numpy 的 random.rand() 函数,设定行数与,然后把传递给 DataFrame 构建器。 ?...这里要注意的是,字符串里的字符数量必须与 DataFrame一致。 3. 重命名列 ? 用点(.)选择 pandas 里的写起来比较容易,但列名里有空格,就没法这样操作了。...把字符串分割为 创建一个 DataFrame 示例。 ? 把姓名列分为姓与名两,用 str.split() 方法,空格分割,并用 expand 关键字,生成一个新的 DataFrame。 ?...设置 margins=True,即可为透视表添加行与汇总。 ? 此表显示了整体幸存率,及性别与舱型划分的幸存率。 把聚合函数 mean 改为 count,就可以生成交叉表。 ?

8.4K00
领券