Pandas聚合

# coding: utf-8

import numpy as np
import pandas as pd


# # 聚合,常用语对分组后的数据进行计算
# ## 常用的内置聚合函数: sum() mean() max() min() 
count() size()
# ## 也可以通过自定义函数,传入agg()方法中,实现

dict_obj = {
    'key1':['a','b','a','b','a','b','a','b'],
    'key2':['one','two','three','one','three',
'three','two','one'],
    'data1':[5,6,5,2,3,3,2,4],
    'data2':[3,4,5,6,3,5,2,5]
}
df = pd.DataFrame(dict_obj)
print df



# 内置的聚合函数
print df.groupby('key1').sum()



# 自定义聚合函数
def custom(df):
    return df.max()-df.min()
print df.groupby('key1').agg(custom)



# agg()同时应用多个函数,max-min是自定义的列名
print df.groupby('key1').agg(['sum','max','min',
('max-min',custom)])


# 每一列使用不同的聚合函数
dict1 = {
    'data1':'mean',
    'data2':'sum'
}
print df.groupby('key1').agg(dict1)

下载前可以先看下教程 https://pan.quark.cn/s/a4b39357ea24 SSM框架,涵盖了Spring MVC、Spring以及MyBatis这三个框架,在Java领域内作为构建Web应用程序的常用架构而备受青睐,特别是在电子商务购物平台的设计与实现过程中展现出极高的应用价值。 这三个框架各自承担着特定的功能角色,通过协同运作来达成高效且灵活的业务处理目标。 Spring MVC作为Spring体系结构中的一个关键部分,主要致力于处理HTTP请求与响应,并推行模型-视图-控制器(MVC)的设计模式。 其运作机制中,DispatcherServlet扮演着前端控制器的角色,负责接收HTTP请求,并将其依据请求映射至相应的Controller处理方法。 在Controller执行完业务逻辑后,会将处理结果传递给ModelAndView对象,随后由ViewResolver将其解析为具体视图进行呈现。 Spring MVC还具备数据绑定、验证以及国际化等附加功能,这些特性显著提升了开发工作的效率以及代码的可维护程度。 Spring框架则是一个综合性的企业级应用开发框架,其核心能力包含依赖注入(DI)、面向切面编程(AOP)以及事务管理等关键特性。 DI机制使得开发者能够借助配置文件或注解手段来管理对象的生成与依赖关联,从而有效降低组件之间的耦合性。 AOP技术则适用于实现诸如日志记录、权限管理这类跨领域的功能需求,有助于使代码结构更为清晰。 Spring在事务管理方面提供了编程式和声明式两种处理途径,确保了数据操作过程遵循原子性与一致性原则。 MyBatis则是一个轻量级的数据库访问层框架,其特点在于将SQL语句与Java代码进行分离,并支持动态SQL的编写。 开发者可以在XM...
Pandas 中,数据聚合是数据分析中的常见操作,用于对数据进行分组并计算统计指标。可以通过 `groupby`、`agg`、`rolling` 等方法实现数据聚合操作。以下是几种常用的数据聚合方法及其使用示例。 ### 使用 `groupby` 进行分组聚合 `groupby` 是 Pandas 中最常用的数据分组方法,可以按照指定的列对数据进行分组,并结合聚合函数(如 `mean`、`sum`、`count` 等)进行统计计算。 示例: ```python import pandas as pd # 创建示例数据 data = { '类别': ['A', 'B', 'A', 'B', 'A', 'B'], '销售额': [100, 150, 200, 250, 300, 350], '利润': [20, 30, 40, 50, 60, 70] } df = pd.DataFrame(data) # 按照“类别”列进行分组,并计算“销售额”和“利润”的总和 grouped_df = df.groupby('类别').agg({'销售额': 'sum', '利润': 'sum'}) print(grouped_df) ``` ### 使用 `agg` 进行多重聚合 `agg` 函数可以同应用多个聚合函数,适用于需要对不同列使用不同统计方法的场景。 示例: ```python # 对“销售额”求和,对“利润”求平均值 grouped_df = df.groupby('类别').agg({'销售额': 'sum', '利润': 'mean'}) print(grouped_df) ``` ### 自定义聚合函数 除了内置的聚合函数,还可以通过定义自定义函数来实现更复杂的聚合操作。 示例: ```python # 定义自定义聚合函数 def range_func(x): return x.max() - x.min() # 按照“类别”列进行分组,并计算“销售额”的最大值与最小值之差 grouped_df = df.groupby('类别')['销售额'].agg(range_func) print(grouped_df) ``` ### 使用 `rolling` 实现滚动窗口聚合 `rolling` 方法可以用于滚动窗口聚合,适用于间序列数据的分析。 示例: ```python # 创建间序列数据 dates = pd.date_range('20230101', periods=6) data = { '日期': dates, '销售额': [100, 150, 200, 250, 300, 350] } df = pd.DataFrame(data) df.set_index('日期', inplace=True) # 计算销售额的3天滚动平均值 rolling_df = df['销售额'].rolling(window=3).mean() print(rolling_df) ``` ### 处理缺失值 在进行数据聚合,可能会遇到缺失值。可以通过设置 `dropna=False` 来保留包含缺失值的分组。 示例: ```python # 创建包含缺失值的数据 data = { '类别': ['A', 'B', None, 'B', 'A', 'B'], '销售额': [100, 150, 200, 250, None, 350] } df = pd.DataFrame(data) # 按照“类别”列进行分组,并计算“销售额”的总和,保留包含缺失值的分组 grouped_df = df.groupby('类别', dropna=False)['销售额'].sum() print(grouped_df) ``` ### 性能优化 为了提高聚合操作的性能,可以使用更高效的聚合方法,例如避免不必要的分组操作,或使用 `numba` 等库加速自定义函数的执行。 示例: ```python # 使用numba加速自定义聚合函数 from numba import jit @jit def custom_sum(x): return x.sum() # 按照“类别”列进行分组,并计算“销售额”的总和 grouped_df = df.groupby('类别')['销售额'].agg(custom_sum) print(grouped_df) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值