pandas数据分组与聚合-时间序列-重采样

这篇博客介绍了如何在Pandas中进行数据分组和聚合,包括自定义聚合函数和分组块上应用函数。在时间序列部分,讲解了时间序列的基础知识,如时间戳、日期间隔和频率设置,并详细阐述了重采样的概念。内容涵盖将非时间序列索引转换为时间序列以及如何利用Pandas进行时间序列的绘图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据分组与聚合

数据包含在Series、DataFrame数据结构中,可以根据一个或多个键分离到各个组中。分组操作之后,一个函数就可以应用到各个组中,产生新的值。如下图则是简单的分组聚合过程。

在这里插入图片描述
df.groupby(‘key’) key为指定分组的列

在这里插入图片描述

import pandas as pd
import numpy as np

df1 = pd.DataFrame(
    {
        "names":["菲菲","小可爱","mia","牛哥","老王","mia","狼人","药水哥","药水哥"],
        "classes":["一班","二班","三班"]*3,
        "grades":np.random.randint(60,100,size=9)
    }
)
df1

# 以班级进行分组
g = df1.groupby(by="classes")   # 返回:DataFrameGroupBy的对象,可迭代的
g

# 遍历 DataFrameGroupBy 的对象
for i in g:
    print(i)       # 输出的结果:(组名,每个组的数据)
    print("-"*50)
    
for g_name,group in g:
    print(g_name)      # 组名
    print(group)       # 数据块
    # 查看数据类型
    print(type(group)) # DataFrame

# 了解每个班级的均值   分组+聚合 
df1.groupby(by="classes")["grades"].mean() # 指定数据进行聚合

df1.groupby(by="classes").mean() # 整个数据进行聚合
自定义聚合函数

实现步骤:
• 自定义函数
• 分组后通过agg或者aggregate进行聚合
练习:
• 计算每个班级之间的差值:一班的最大值-一班的最小值

# 定义求各班级极差的函数
def classes_ptp(x):
    return x.max()-x.min()

df1.groupby(by="classes")["grades"].agg(classes_ptp)
# df1.groupby(by="classes")["grades"].aggregate(classes_ptp)

"""
需求:显示 各班级的极差 最大值 最小值

实现:agg,aggregate都可以传入列表
"""
agg_li = [np.ptp,np.max,np.min]
df1.groupby(by="classes")["grades"].agg(agg_li)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值