Pycharm 鼠标移动到函数上,CTRL+Q可以快速查看文档,CTR+P可以看基本的参数。

apply(),applymap()和map()

apply()和applymap()是DataFrame的函数,map()是Series的函数。

apply()的操作对象是DataFrame的一行或者一列数据,applymap()是DataFrame的每一个元素。map()也是Series中的每一个元素。

apply()对dataframe的内容进行批量处理, 这样要比循环来得快。如df.apply(func,axis=0,.....) func:定义的函数,axis=0时为对列操作,=1时为对行操作。

map()和python内建的没啥区别,如df['one'].map(sqrt)。

import numpy as np

from pandas import Series, DataFrame

frame = DataFrame(np.random.randn(4, 3),

columns = list('bde'),

index = ['Utah', 'Ohio', 'Texas', 'Oregon'])

print frame

print np.abs(frame)

print

f = lambda x: x.max() - x.min()

print frame.apply(f)

print frame.apply(f, axis = 1)

def f(x):

return Series([x.min(), x.max()], index = ['min', 'max'])

print frame.apply(f)

print

print 'applymap和map'

_format = lambda x: '%.2f' % x

print frame.applymap(_format)

print frame['e'].map(_format)

Groupby

Groupby是Pandas中最为常用和有效的分组函数,有sum()、count()、mean()等统计函数。

groupby 方法返回的 DataFrameGroupBy 对象实际并不包含数据内容,它记录的是df['key1'] 的中间数据。当你对分组数据应用函数或其他聚合运算时,pandas 再依据 groupby 对象内记录的信息对 df 进行快速分块运算,并返回结果。

df = DataFrame({'key1': ['a', 'a', 'b', 'b', 'a'],

'key2': ['one', 'two', 'one', 'two', 'one'],

'data1': np.random.randn(5),

'data2': np.random.randn(5)})

grouped = df.groupby(df['key1'])

print grouped.mean()

df.groupby(lambda x:'even' if x%2==0 else 'odd').mean() #通过函数分组

聚合agg()

对于分组的某一列(行)或者多个列(行,axis=0/1),应用agg(func)可以对分组后的数据应用func函数。例如:用grouped['data1'].agg('mean')也是对分组后的'data1'列求均值。当然也可以同时作用于多个列(行)和使用多个函数上。

df = DataFrame({'key1': ['a', 'a', 'b', 'b', 'a'],

'key2': ['one', 'two', 'one', 'two', 'one'],

'data1': np.random.randn(5),

'data2': np.random.randn(5)})

grouped = df.groupby('key1')

print grouped.agg('mean')

data1 data2

key1

a 0.749117 0.220249

b -0.567971 -0.126922

apply()和agg()功能上差不多,apply()常用来处理不同分组的缺失数据的填充和top N的计算,会产生层级索引。

而agg可以同时传入多个函数,作用于不同的列。

df = DataFrame({'key1': ['a', 'a', 'b', 'b', 'a'],

'key2': ['one', 'two', 'one', 'two', 'one'],

'data1': np.random.randn(5),

'data2': np.random.randn(5)})

grouped = df.groupby('key1')

print grouped.agg(['sum','mean'])

print grouped.apply(np.sum)  #apply的在这里同样适用,只是不能传入多个,这两个函数基本是可以通用的。

data1               data2

sum      mean       sum      mean

key1

a     2.780273  0.926758 -1.561696 -0.520565

b    -0.308320 -0.154160 -1.382162 -0.691081

data1     data2 key1       key2

key1

a     2.780273 -1.561696  aaa  onetwoone

b    -0.308320 -1.382162   bb     onetwo

apply和agg功能上基本是相近的,但是多个函数的时候还是agg比较方便。

apply本身的自由度很高,如果分组之后不做聚合操作紧紧是一些观察的时候,apply就有用武之地了。

print grouped.apply(lambda x: x.describe())

data1 data2

key1

a count 3.000000 3.000000

mean -0.887893 -1.042878

std 0.777515 1.551220

min -1.429440 -2.277311

25% -1.333350 -1.913495

50% -1.237260 -1.549679

75% -0.617119 -0.425661

max 0.003021 0.698357

b count 2.000000 2.000000

mean -0.078983 0.106752

std 0.723929 0.064191

min -0.590879 0.061362

25% -0.334931 0.084057

50% -0.078983 0.106752

75% 0.176964 0.129447

max 0.432912 0.152142

此外apply还能改变返回数据的维度。

http://pandas.pydata.org/pandas-docs/stable/groupby.html

此外还有透视表pivot_table ,交叉表crosstab ,但是我没用过。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: Python Pandas分组聚合的实现方法

本文地址: http://www.cppcns.com/jiaoben/python/264303.html

python pandas聚合_Python Pandas分组聚合的实现方法相关推荐

  1. python数据分析及可视化(九)pandas数据规整(分组聚合、数据透视表、时间序列、数据分析流程)

    作业 拼接多个csv文件 去除重复数据,重新索引 自动挡和手动挡数目 计算每个城市二手车数量 统计每个汽车品牌平均售价价格(不是原价) 分组与聚合 如下表所示,5行3列的表格,5种水果分别对应的名称, ...

  2. 2021-03-05 pandas(合并_分组聚合_复合索引)

    数据合并 join 默认情况下他是把行索引相同的数据合并到一起,以调用对象的行为准 调用对象不存在的行数不合并,调用对象存在但合并对象无数据的索引位置出现NaN In [1]: import pand ...

  3. python dataframe函数_python pandas中DataFrame类型数据操作函数的方法

    这篇文章主要介绍了关于python pandas中DataFrame类型数据操作函数的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 python数据分析工具pandas中Data ...

  4. python pandas 教程_Python pandas十分钟教程

    本文首发于公众号<深度学习与Python> Pandas是数据处理和数据分析中最流行的Python库.本文将为大家介绍一些有用的Pandas信息,介绍如何使用Pandas的不同函数进行数据 ...

  5. python agg函数_Python Pandas Series.agg()用法及代码示例

    Python是进行数据分析的一种出色语言,主要是因为以数据为中心的python软件包具有奇妙的生态系统. Pandas是其中的一种,使导入和分析数据更加容易. Pandas Series.agg()用 ...

  6. python endswith函数_Python Pandas Series.str.endswith()用法及代码示例

    Python是进行数据分析的一种出色语言,主要是因为以数据为中心的Python软件包具有奇妙的生态系统. Pandas是其中的一种,使导入和分析数据更加容易. Pandas endswith()是在系 ...

  7. python效率计算公式_Python: Pandas运算的效率探讨以及如何选择高效的运算方式

    本文就Pandas的运行效率作一个对比的测试,来探讨用哪些方式,会使得运行效率较好. 测试环境如下: windows 7, 64位 python 3.5 pandas 0.19.2 numpy 1.1 ...

  8. python duplicated函数_Python Pandas Dataframe.duplicated()用法及代码示例

    Python是进行数据分析的一种出色语言,主要是因为以数据为中心的python软件包具有奇妙的生态系统. Pandas是其中的一种,使导入和分析数据更加容易. 数据分析的重要部分是分析重复值并将其删除 ...

  9. python findall用法_Python Pandas Series.str.findall()用法及代码示例

    Python是进行数据分析的一种出色语言,主要是因为以数据为中心的Python软件包具有奇妙的生态系统. Pandas是其中的一种,使导入和分析数据更加容易. Pandas str.findall() ...

最新文章

  1. PingCode与Jira 敏捷开发管理能力的对比
  2. GAN网络立功!36分钟,建起5亿光年的宇宙区域
  3. Jmeter 压测 http(s)
  4. python 简单的server请求
  5. 获取当前屏幕显示的viewcontroller
  6. Java泛型(1)--集合使用泛型Generic、自定义泛型、泛型在继承上的体现、通配符的使用
  7. cAdvisor+InfluxDB+Grafana 监控Docker
  8. 炼丹必备!推荐一个超级好用的机器学习云平台
  9. 专题导读:大数据创新实践
  10. 数据结构基础(10) --单链表迭代器的设计与实现
  11. 计算机视觉—TensorFlow入门(5)
  12. Linux内核部件分析 记录生命周期的kref
  13. AWVS12-Windows
  14. 楼板的弹性计算和塑形计算_板计算的时候什么时候用弹性计算
  15. java画板中画直线_画图板(画直线)
  16. 倍福TwinCAT3中使用久同伺服
  17. 我的物联网项目(二十四) 订单编号生成规则
  18. 饥荒服务器票据哪里是最新的,饥荒TGP版洞穴服务器搭建图文教程
  19. ue4 Niagara粒子打包安卓后不显示
  20. 至强W5-2455X 参数 至强W52455X功耗

热门文章

  1. 猫眼、淘票票两虎相争:下沉市场、服务、内容成决胜关键
  2. windows auzre 笔记-1
  3. 目标还是中国人,纽约智慧城市项目想通过EB-5募资10亿
  4. 如何在 Shell 脚本中执行语法检查调试模式
  5. 防止SQL注入解决方案
  6. POJ2828 Buy Tickets【线段树,逆序遍历】
  7. 与工作流关联的服务器发生意外错误
  8. 为何那么多人的网名都叫易天啊
  9. Windows Virtual PC RC 发布
  10. Jenkins构建Docker容器