Python处理大数据的2个神奇操作
创始人
2025-03-19 05:01:45
0次

Python有个处理大数据的库,结合xlrd库,在做一些大数据的处理统计工作的时候很好用,譬如做性能测试,你的结果数据如何统计,python有个库pandas,这个就很擅长做这个工作,这里就讲2个pandas的骚操作。 pandas中groupby、Grouper和agg函数的使用。这2个函数作用类似,都是对数据集中的一类属性进行聚合操作,比如统计一个用户在每个月内的全部花销,统计某个属性的最大、最小、累和、平均等数值。 

Python处理大数据的2个神奇操作

统计“ext price”这个属性在每个月的累和(sum)值

  1. import pandas as pd 
  2. import collections 
  3. df = pd.read_excel("D:/Download/chrome/sample-salesv3.xlsx") 
  4. #print (df.head(10)) 
  5. df["date"] = pd.to_datetime(df["date"]) 
  6. # print (df.head(10)) 
  7. df1 = df.set_index("date").resample("M")['ext price'].sum() 
  8. # print(df1.head())  
Python处理大数据的2个神奇操作

统计每个用户每个月"ext price"这个属性的sum值,利用Grouper

  1. df2 = df.groupby(["name",pd.Grouper(key = "date",freq="M")])["ext price"] 
  2. print(df2.head(10))  
Python处理大数据的2个神奇操作

Agg

agg函数,它提供基于列的聚合操作。而groupby可以看做是基于行,或者说index的聚合操作。

从实现上看,groupby返回的是一个DataFrameGroupBy结构,这个结构必须调用聚合函数(如sum)之后,才会得到结构为Series的数据结果。

而agg是DataFrame的直接方法,返回的也是一个DataFrame。当然,很多功能用sum、mean等等也可以实现。但是agg更加简洁, 而且传给它的函数可以是字符串,也可以自定义,参数是column对应的子DataFrame

获取"ext price","quantity","unit price"3列的各自的累计值和均值

  1. df3 = df[["ext price","quantity","unit price"]].agg(["sum","mean"]) 
  2. print(df3.head())  
Python处理大数据的2个神奇操作

可以针对不同的列使用不同的聚合函数

  1. df4 = df.agg({"ext price":["sum","mean"],"quantity":["sum","mean"],"unit price":["mean"]}) 
  2. print(df4.head())  
Python处理大数据的2个神奇操作

也可以自定义函数,比如,统计sku中,购买次数最多的产品编号,通过lambda表达式来做。

  1. #统计sku中,购买次数最多的产品编号 
  2. get_max = lambda x:x.value_counts(dropna=False).index[0] 
  3. get_max.__name__ = "most frequent" 
  4. df5 = df.agg({"ext price":["sum","mean"], 
  5.  "quantity":["sum","mean"], 
  6.  "unit price":["mean"], 
  7.  "sku":[get_max] 
  8.  }) 
  9. print(df5)  
Python处理大数据的2个神奇操作

如果希望输出的列按照某个顺序排列,可以使用collections的OrderedDict

  1. agg_dict = { 
  2.  "ext price":["sum","mean"], 
  3.  "quantity":["sum","mean"], 
  4.  "unit price":["mean"], 
  5.  "sku":[get_max] 
  6. } 
  7. #按照列名的长度排序。OrderedDict的顺序是跟插入顺序一致的 
  8. df6 = df.agg(collections.OrderedDict(sorted(agg_dict.items(),key=lambda x:len(x[0])))) 
  9. print(df6)  
Python处理大数据的2个神奇操作

源数据的链接:https://github.com/chris1610/pbpython/tree/master/data

 

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
只需三步,让你掌握阿尔法路由器... 请参照以下阿尔法路由器设置方法,通过浏览器进入及设置宽带路由器。经过这三个步骤的设置,基本上能够熟悉...
如何更省钱? 近期特价热门硒鼓... 如今激光打印设备已经成为商务或企业的绝对主力办公设备,但采购者往往忽视了激光打印设备所用的耗材,相对...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...