pandas中数据聚合【重点】
数据聚合
数据聚合是数据处理的最后一步,通常是要使每一个数组生成一个单一的数值。
数据分类处理:
- 分组:先把数据分为几组
- 用函数处理:为不同组的数据应用不同的函数以转换数据
- 合并:把不同组得到的结果合并起来
1.数据分类处理的核心: groupby()函数
导入模块:
import pandas as pd
import numpy as np
from pandas import Series,DataFrame
生成假数据
df = DataFrame({"sailer":np.random.randint(0,3,size=50),
"item":np.random.randint(0,3,size=50),
"price":np.random.randint(1,15,size = 50),
"weight":np.random.randint(50,150,size=50)})
df["sailer"] = df["sailer"].map({0:"李大妈",1:"王大爷",2:"宋大妈"})
df["item"] = df["item"].map({0:"白菜",1:"萝卜",2:"青椒"})
def convert(x):
return x-x%10
df["weight"] = df["weight"].map(convert)
df
如:

对数据进行分组,聚合操作
根据item进行分组,然后求出各个菜品的平均价格
g = df.groupby(by=["item"])["price"]
g.median()

表现形式如上边,数据格式为series
然后在根据sailer和item进行分类。
ret = df.groupby(by = ["sailer","item"])[["price"]].mean() #price值变成dataframe二维数如下图:
ret.add_suffix("_mean") #给列添加后缀 add_prefix()添加前缀

根据条件进行分组,然后自定义方法展示数据:如下
ret2 = df.groupby(by = ["sailer","item"])
def count(x):
return (np.round(x.mean(),1),x.min(),x.max()) #numpy中有round()方法是将小数四舍五入到给定的小数位数
ret2.agg(count)
aggregate()或agg()是指在指定轴上使用一个或多个操作进行聚合。

分组后对几个列添加不同的聚合映射关系
如下:对price求平均值,对重量求和
ret2 = df.groupby(by = ["sailer","item"])
ret2.agg({"price":"mean","weight":"sum"})

分组后使用透视表对数据进行聚合操作
pd.pivot_table(df,values=["sailer","weight"],index = ["sailer","item"],aggfunc ={"price":"mean","weight":"max"})
如下:对price、weight分别进行求平均值和最大值操作。

高级数据聚合
调用transform和apply实现上变相同的功能
df.groupby(["sailer","item"])[["price"]].apply(np.min)
#因为min,mean,median等聚合函数在numpy定义了,所以,调用聚合函数得去numpy中调用

# transform原来的数据有多长,现在的数据就有多长
# 有利于对和原来的数据进行合并。
使用transform对数据进行分组聚合操作
df1 = df.groupby(["sailer","item"])[["price"]].transform(np.mean)
df1.tail()

pandas中数据聚合【重点】的更多相关文章
- Pandas中数据的处理
有两种丢失数据 ——None ——np.nan(NaN) None是python自带的,其类型为python object.因此,None不能参与到任何计算中 Object类型的运算比int类型的运算 ...
- pandas中数据框DataFrame获取每一列最大值或最小值
1.python中数据框求每列的最大值和最小值 df.min() df.max()
- pandas中数据框的一些常见用法
1.创建数据框或读取外部csv文件 创建数据框数据 """ 设计数据 """ import pandas as pd data = {&qu ...
- 利用Python进行数据分析-Pandas(第六部分-数据聚合与分组运算)
对数据集进行分组并对各组应用一个函数(无论是聚合还是转换),通常是数据分析工作中的重要环节.在将数据集加载.融合.准备好之后,通常是计算分组统计或生成透视表.pandas提供了一个灵活高效的group ...
- (数据科学学习手札69)详解pandas中的map、apply、applymap、groupby、agg
*从本篇开始所有文章的数据和代码都已上传至我的github仓库:https://github.com/CNFeffery/DataScienceStudyNotes 一.简介 pandas提供了很多方 ...
- (数据科学学习手札97)掌握pandas中的transform
本文示例文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 开门见山,在pandas中,transform是 ...
- (数据科学学习手札99)掌握pandas中的时序数据分组运算
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 我们在使用pandas分析处理时间序列数据 ...
- MongoDB中的数据聚合工具Aggregate和Group
周煦辰 2016-01-16 来说说MongoDB中的数据聚合工具. Aggregate是MongoDB提供的众多工具中的比较重要的一个,类似于SQL语句中的GROUP BY.聚合工具可以让开发人员直 ...
- 在Pandas中直接加载MongoDB的数据
在使用Pandas进行数据处理的时候,我们通常从CSV或EXCEL中导入数据,但有的时候数据都存在数据库内,我们并没有现成的数据文件,这时候可以通过Pymongo这个库,从mongoDB中读取数据,然 ...
随机推荐
- Unity 播放的声音比声音文件小很多-AudioListener-AudioClip
今天做愤怒的小鸟时,播放的时候非常非常小,怎么也查不到原因,就去问群里的大佬.原来, 播放音乐的方法: AudioSource.PlayClipAtPoint(audioclip, transform ...
- 填坑帖 By cellur925
从今天到noip 记录下我犯的一切愚蠢错误. 7.17~7.19 把文件 注释掉了,输出语句放在了关文件之后 7.19 判断素数的板子 把%写成了& bool prime ...
- Theme Section
题目链接 #include <cstdio> #include <iostream> #include <cstring> using namespace std; ...
- Luogu P2341 [HAOI2006]受欢迎的牛 SCC缩点
把强连通分量缩点,如果有且仅有一个出度为0的强连通分量,那么答案就是他的size:如果有多个入度为0的,那么没有明星牛. #include<cstdio> #include<iost ...
- 牛客假日团队赛2 H.奶牛排序
链接: https://ac.nowcoder.com/acm/contest/924/H 题意: 农夫JOHN准备把他的 N(1 <= N <= 10,000)头牛排队以便于行动.因为脾 ...
- jquery的$().each和$.each的区别
在jquery中,遍历对象和数组,经常会用到$().each和$.each(),两个方法.两个方法是有区别的,从而这两个方法在针对不同的操作上,显示了各自的特点. $().each,对于这个方法,在d ...
- js基础拖拽效果
function drag(ele) { const config = { mark: 0, x: 0, y: 0, left: ele.offsetLeft, top: ele.offsetTop, ...
- VS2010/VS2013项目创建及通过ADO.NET连接mysql/sql server步骤(VS2013连接成功步骤见上一篇随笔)
本随笔主要是对初学者通过ADO.NET连接数据库的步骤(刚开始我也诸多不顺,所以总结下,让初学者熟悉步骤) 1.打开VS新建一个项目(这里的VS版本不限,建项目都是一样的步骤) VS2010版本如图: ...
- css3的transform ,2D变换
transformtransform的中文翻译就是变换,改变,改观,转换的意思 在css中的主要作用就是对一个div或元素进行样式的改变. 他的属性(变换方式)有:平移,旋转,缩放,扭曲transla ...
- css经典布局之双飞翼
经典的两个布局方式有圣杯布局和双飞翼布局,圣杯布局主要用在国外,双飞翼布局是淘宝的UED团队开发的,优化了圣杯布局. 主要解决页面分不同列显示的问题, 一般只做页面的时候,我们分三部分,左边, ...