python中groupby可以按照条件计算分组吗_详解python中
groupby函数通俗易懂
⼀、groupby 能做什么?
python中groupby函数主要的作⽤是进⾏数据的分组以及分组后地组内运算!
对于数据的分组和分组运算主要是指groupby函数的应⽤,具体函数的规则如下:
df[](指输出数据的结果属性名称).groupby([df[属性],df[属性])(指分类的属性,数据的限定定语,可以有多个).mean()(对于数据的计算⽅式——函数名称)
举例如下:
print(df["评分"].groupby([df["地区"],df["类型"]]).mean())
#上⾯语句的功能是输出表格所有数据中不同地区不同类型的评分数据平均值
⼆、单类分组
⾸先,我们有⼀个变量A,数据类型是DataFrame
想要按照【性别】进⾏分组
得到的结果是⼀个Groupby对象,还没有进⾏任何的运算。
describe()
描述组内数据的基本统计量
* 只有数字类型的列数据才会计算统计
* ⽰例⾥⾯数字类型的数据有两列 【班级】和【⾝⾼】
但是,我们并不需要统计班级的均值等信息,只需要【⾝⾼】,所以做⼀下⼩的改动:
unstack()
索引重排
上⾯的例⼦⾥⾯⽤到了⼀个⼩的技巧,让运算结果更便于对⽐查看,感兴趣的同学可以⾃⾏去除unstack,⽐较⼀下显⽰的效果
三、多类分组
单独⽤groupby,我们得到的还是⼀个 Groupby 对象。
mean()
组内均值计算
DataFrame的很多函数可以直接运⽤到Groupby对象上。
上图截⾃ pandas 官⽹ document,这⾥就不⼀⼀细说。
我们还可以⼀次运⽤多个函数计算
agg()
分组多个运算
四、时间分组
时间序列可以直接作为index,或者有⼀列是时间序列,差别不是很⼤。
这⾥仅仅演⽰,某⼀列为时间序列。
为A 新增⼀列【⽣⽇】,由于分隔符 “/” 的问题,我们查看列属性,【⽣⽇】的属性并不是⽇期类型
我们想做的是:
1、按照【⽣⽇】的【年份】进⾏分组,看看有多少⼈是同龄?
A["⽣⽇"] = pd.to_datetime(A["⽣⽇"],format ="%Y/%m/%d") # 转化为时间格式groupby分组
2、同⼀年作为⼀个⼩组,⼩组内⽣⽇靠前的那⼀位作为⼩队长:
A.sort_values("⽣⽇", inplace=True) # 按时间排序
as_index=False
保持原来的数据索引结果不变
first()
保留第⼀个数据
Tail(n=1)
保留最后n个数据
再进⼀步:
3、想要到哪个⽉只有⼀个⼈过⽣⽇
filter()
对分组进⾏过滤,保留满⾜()条件的分组
以上就是 groupby 最经常⽤到的功能了。
⽤ first(),tail()截取每组前后⼏个数据
⽤ apply()对每组进⾏(⾃定义)函数运算
⽤ filter()选取满⾜特定条件的分组
到此这篇关于详解python中groupby函数通俗易懂的⽂章就介绍到这了,更多相关python groupby函数内容请搜索聚⽶学院以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持聚⽶学院!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。