分组聚合–主要有以下知识点:

1、描述性统计知识 ,如min() 最小值,max() 最大值,median() --中位数,mead() 均值,quantitle 分位数,quantitle(0.1,0,2,0.5,0.8)分别表示 十分位数,二十分位数,五十分位数--又叫中位数,八十分位数等2、分组运算方法--groupby ,类似于SQL中的groupby方法3、聚合方法--egg,apply和transfrom等

实例如下:

os.chdir('数据存储路径')
sales=pd.read_csv('app.csv',dtype=['year':float])

—将year这一列下的数据读取成浮点型数据
选取想要的列名(因为数据很多很多时我们选取想要的变量)

import pandas as pd
import numpy as np
import os
​
list=[['2000','89','24','34','78','LOL','900'],['2001','44','34','343','34','LOL','487'],['2008','22','333','34','66','CS','868'],['2010','322','434','342','676','CS','988'],['2018','356','445','666','777','VB','777']]
​
​

list
[[‘2000’, ‘89’, ‘24’, ‘34’, ‘78’, ‘LOL’, ‘900’],
[‘2001’, ‘44’, ‘34’, ‘343’, ‘34’, ‘LOL’, ‘487’],
[‘2008’, ‘22’, ‘333’, ‘34’, ‘66’, ‘CS’, ‘868’],
[‘2010’, ‘322’, ‘434’, ‘342’, ‘676’, ‘CS’, ‘988’],
[‘2018’, ‘356’, ‘445’, ‘666’, ‘777’, ‘VB’, ‘777’]]

os.chdir('C:\data')
sales=pd.DataFrame(list,columns=['year', 'n_sale', 's_sale','china_sale', 'e_sale', 'name', 'money'])

sales

year n_sale  s_sale  china_sale  e_sale  name    money
0   2000    89  24  34  78  LOL 900
1   2001    44  34  343 34  LOL 487
2   2008    22  333 34  66  CS  868
3   2010    322 434 342 676 CS  988
4   2018    356 445 666 777 VB  777
选取想要的数据列
var_name=['year','s_sale','china_sale','money']
#

求均值/最值/等

np.min(sales[var_name],axis=0)
year          2000.0
s_sale          24.0
china_sale      34.0
money          487.0
dtype: float64
sales[var_name].cumsum(axis=0)
选取的数据沿着列想 累加year    s_sale  china_sale  money
0   2000    24  34  900
1   20002001    2434    34343   900487
2   200020012008    2434333 3434334 900487868
3   2000200120082010    2434333434  3434334342  900487868988
4   20002001200820102018    2434333434445   3434334342666   900487868988777

求百分数(后边注明百分之几数)

sales[var_name].quantile([0.2,0.3,0.5,0.7])

所选列的特征值计算

sales.[var_name].describe() year s_sale  china_sale  money
count   5   5   5   5
unique  5   5   4   5
top 2001    445 34  487
freq    1   1   2   1

字符型 变量的统计

sales.[var_name].describe(include=['object'])year s_sale  china_sale  money
count   5   5   5   5
unique  5   5   4   5
top 2001    445 34  487
freq    1   1   2   1

分类汇总

按照 ‘年’ 进行分类

groupde=sales.groupby('year')type(groupde)--数据类型的判断pandas.core.groupby.generic.DataFrameGroupBy
groupde---分组对象的内存地址<pandas.core.groupby.generic.DataFrameGroupBy object at 0x0000000006D91A08>

每一个条件下的样本个数的统计

groupde.count()
n_sale  s_sale  china_sale  e_sale  name    money
year
2000    1   1   1   1   1   1
2001    1   1   1   1   1   1
2008    1   1   1   1   1   1
2010    1   1   1   1   1   1
2018    1   1   1   1   1   1
groupde.max()
n_sale  s_sale  china_sale  e_sale  name    money
year
2000    89  24  34  78  LOL 900
2001    44  34  343 34  LOL 487
2008    22  333 34  66  CS  868
2010    322 434 342 676 CS  988
2018    356 445 666 777 VB  777
groupde.size()
分类下的样本统计year
2000    1
2001    1
2008    1
2010    1
2018    1
dtype: int64

对某一个具体条件(如2001年)下的样本的标记
如:2001年有20个样本,从0标记到19

groupde.cumcount()
0    0
1    0
2    0
3    0
4    0
dtype: int64

通过两个列进行分组

groupde2=sales[names].groupby(by=['name','year'])groupde2
<pandas.core.groupby.generic.DataFrameGroupBy objectat 0x0000000008D87808>groupde2.mean() ---对分组后的每一个变量求均值对于分组所得求得中位数,然后再进行层次化索引查找groupde2.median().loc[([2001,2008],'LOL'),:]

聚合函数-aggregate/apply

agg- agg方法能够对分组对象进行相同的聚合,还可以选择不同的聚合方法
apply--可以进行聚合计算,还可以进行按行计算
transform--返回与数据同样长度的行,无法进行聚合
建议---今后更多使用apply或者 agg
names=['n_sale','china_sale','name']--选取需要的列
groupd=sales[names].groupby('name')按 name 分组
groupd.agg([np.mean,np.sum]).head(10)-对分组后的进行求均值,求总合,且只查看前十行groupd.agg([np.mean,np.sum]).loc[[2001,2008],('n-sales',['mean','sum'])]-----对列的层次化引用注意: 行索引 和 列索引  一起时用‘,’ 逗号分开,一般逗号前为行索引,之后为列索引

对不同的变量输出不同统计量

groupde.agg({'n_sales':np.mean,'s_sale':np.sum})

对不同的变量求多个不同的统计值

groupde.agg({'n_sales':[np.mean,np.median],'s_sale':[np.sum,np.mean})

还可以计算自定义函数

def doublesum(data):s=data.sum*10return sgroupd.agg({'s_sale':doublesum})

对某一个变量求和后2 == 先求和再2

如:
sales.['year'].sum()*2 == sales.agg({'year':doublesum})

apply

apply函数比agg函数,可以设定轴向 axis=0/1

sales.apply(np.sum,axis=0)year          20002001200820102018
n_sale                894422322356
s_sale               2434333434445
china_sale           3434334342666
e_sale                783466676777
name                  LOLLOLCSCSVB
money              900487868988777
dtype: object

第二列-第三列

sales[names].apply(lambda x: x[1]-x[2],axis=1)

transform函数

transform函数常用语对数据中每一个元素进行操作,不能对行进行操作,队列可以操作,但是不常用;
如:

sales.transform(lambda x: x*2)---对每一个元素进行操作year  n_sale  s_sale  china_sale  e_sale  name    money
0   20002000    8989    2424    3434    7878    LOLLOL  900900
1   20012001    4444    3434    343343  3434    LOLLOL  487487
2   20082008    2222    333333  3434    6666    CSCS    868868
3   20102010    322322  434434  342342  676676  CSCS    988988
4   20182018    356356  445445  666666  777777  VBVB    777777

对列进行操作

对所选列的每一个元素进行操作sales[var_name].transform(lambda x: x*2)

07-17 分组聚合--基本的统计方法相关推荐

  1. Mysql常用分组聚合函数(统计行的数量、最大值、最小值、平均值、求和)

    目录 一.概念 二.举例 2.1 COUNT函数 2.1.1 语法 2.1.2运行结果 2.2 AVG函数 2.2.1语法 2.2.2运行结果 2.3 SUM函数 2.3.1语法 2.3.2运行结果 ...

  2. pandas数据分组聚合——groupby()、aggregate()、apply()、transform()和filter()方法详解

    数据分组 数据分组就是根据一个或多个键(可以是函数.数组或df列名)将数据分成若干组,然后对分组后的数据分别进行汇总计算,并将汇总计算后的结果进行合并,被用作汇总计算的函数称为聚合函数.数据分组的具体 ...

  3. elasticsearch(7)聚合统计-分组聚合

    原文:https://blog.csdn.net/sz85850597/article/details/82858831 elasticsearch(7)聚合统计-分组聚合 2018年09月26日 2 ...

  4. Java调用ElasticSearch 7.2.1 保存、统计、多字段分组聚合

    目录 maven引用 配置 配置类 保存数据方法 参照官方的引用方式会报错 分组统计 查询后再统计 多字段分组聚合 maven引用 注意版本与es版本一致 <dependency>< ...

  5. 【Pandas分组聚合】 groupby()、agg() 方法的使用

    Pandas分组聚合 创建一个dataframe结构 分组函数 groupby() 初识分组聚合 多重行索引分组聚合 对多列数据进行分组聚合 综合应用 聚合函数 agg(aggregate) 求 多列 ...

  6. pandas使用groupby函数进行分组聚合、使用agg函数指定聚合统计计算的数值变量、并自定义统计计算结果的名称(naming columns after aggregation)

    pandas使用groupby函数进行分组聚合.使用agg函数指定聚合统计计算的数值变量.并自定义统计计算结果的名称(naming columns after aggregation in dataf ...

  7. pandas使用groupby函数对dataframe进行分组统计、使用as_index参数设置分组聚合的结果中分组变量不是dataframe的索引(index)

    pandas使用groupby函数对dataframe进行分组统计.使用as_index参数设置分组聚合的结果中分组变量不是dataframe的索引(index) 目录

  8. pandas使用groupby函数按照多个分组变量进行分组聚合统计、使用agg函数计算分组的多个统计指标(grouping by multiple columns in dataframe)

    pandas使用groupby函数按照多个分组变量进行分组聚合统计.使用agg函数计算分组的多个统计指标(grouping by multiple columns in dataframe) 目录

  9. python pandas聚合_Python Pandas分组聚合的实现方法

    Pycharm 鼠标移动到函数上,CTRL+Q可以快速查看文档,CTR+P可以看基本的参数. apply(),applymap()和map() apply()和applymap()是DataFrame ...

最新文章

  1. 2019年《自然》迎新子刊:机器智能、新陈代谢和综述物理
  2. Hibernate保存数据自动生成主键出现奇怪异常Duplicate entry '0' for key 1
  3. 满汉楼(德鲁伊连接池+DBUtils+DAO+Mysql)保姆级别分析+代码实现
  4. 【病毒】开机弹出“tlntsvi_6635.exe程序”解决方案
  5. url安全处理函数+php,php常用的url处理函数汇总
  6. 乡村振兴专题:农村面板数据3.0
  7. 什么是嵌入式开发?嵌入式是什么?初学者必看。
  8. HTTP中的TCP三次握手-详细解析(TCP Connection、TCP的三次握手介绍、为什么创建TCP三次握手)
  9. JVM-深入理解JVM内存模型、类加载机制、内存分配机制
  10. img元素实现图片裁切放大
  11. 数据库04—约束条件
  12. 时间都哪去了--电视连续剧《老牛家的战争》插曲【视频】
  13. pdf转换成html后打印不清晰,图片转换成pdf后很模糊不清晰怎么办?
  14. 非常详细的微信跳一跳“黑科技”脚本
  15. linux终端基本操作命令
  16. kubectl命令使用滚动更新和回滚
  17. JavaWeb项目中使用到的过滤器
  18. 下载个PDF居然还要密码?想要密码就付费?这我能忍你!Python分分钟解密它!
  19. [BZOJ1933][Shoi2007]Bookcase 书柜的尺寸(DP)
  20. 阿里的“传奇程序员”

热门文章

  1. 浙江大华2015届校园招聘笔试题
  2. word2016自带公式编辑器对公式编号的使用
  3. shell快捷键总结
  4. Quazip的编译及使用,保姆级教程
  5. Qt开发的小游戏-抗日
  6. 【嵌入式模块】蓝牙模块使用总结
  7. 神州数码路由器-格式化
  8. steam服务器维护2021,2021绝地求生3月10日维护更新公告_3.10维护更新内容一览_3DM网游...
  9. 苹果主屏幕按钮怎么设置_苹果手机怎么录制屏幕视频?手把手教你操作步骤
  10. 安装vue脚手架报错