pandas分组分析

  • 分组分析
  1. 根据分组字段,将分析对象划分成不同的部分,以对比分析各组之间差异性的分析方法;
  2. 分组分析常用的统计指标是计数、求和、平均值等。
  • grouby语法
groupby(by=[分组列1,分组列2,…])[统计列1,统计列2,…].agg({统计列别名1:统计函数1,统计列别名2:统计函数2,…})

pandas交叉分析

  • 交叉分析
  1. 通常用于分析两个或两个以上分组变量之间的关系,以交叉表形式进行变量间关系的对比分析;
  2. 从数据的不同维度,综合进行分组细分,进一步了解数据的构成、分布特征;
  3. 交叉分析有数据透视表和交叉表两种。
  • 透视表pivot_table()
    透视表pivot_table()是进行分组统计的函数,参数aggfunc决定统计类型。
pandas.pivot_table(data,values=None,index=None,columns=None,aggfunc='mean',fill_value=None,margins=False,dropna=True,margins_name='All',observed=False,
)
---参数解释---data:要应用透视表的数据框;
values:待聚合的列的名称,默认聚合所有数值列;
index:用于分组的列名或其他分组键,出现在结果透视表的行;
columns:用于分组的列名或其他分组键,出现在结果透视表的列;
aggfunc:聚合函数或函数列表,默认为 'mean',可以是任何对 groupby 有效的函数;
fill_value:用于替换结果表中的缺失值;
margins:添加行/列小计和总计,默认为 False;dropna:如果为True,不添加条目都为NA的列;
margins_name:当margins为True时,行/列小计和总计的名称;
observed:仅当是Categoricals时才适用,如果为True:仅显示类别分组的观察值,False:显示类别分组的所有值。
  • 交叉表crosstab()
    交叉表(Cross-Tabulation,简称 crosstab)是一种用于计算分组频率的特殊透视表。
pandas.crosstab(index,columns,values=None,rownames=None,colnames=None,aggfunc=None,margins=False,margins_name='All',dropna=True,normalize=False,
)
---参数解释---rownames/colnames:行名/列名;
normalize:是否标准化。

举例及函数互用groupby/pivot_table/crosstab

# 数据框tips:
tips.head()

例1:根据day和smoker计算分组平均数,并将day和smoker放到行上。

# grouby方法:
tips.groupby(['day', 'smoker']).mean()

# pivot_table()方法:
tips.pivot_table(index=['day', 'smoker'])
# 或
pd.pivot_table(tips,index=['day', 'smoker'])


例2:只聚合tip_pct和size列,根据day进行分组;将smoker放到列上,day放到行上。

# groupby方法:
tips.groupby(['day','smoker'])[['size', 'tip_pct']].agg('mean').unstack()

# 指定了行和列的分析维度,使用透视表的方法简单快速
# pivot_table方法:
tips.pivot_table(['tip_pct', 'size'], index='day', columns='smoker')

# pivot_table方法,添加小计/总计:
tips.pivot_table(['tip_pct', 'size'], index='day', columns='smoker',margins=True,margins_name='合计')

# 数据框data:
data[:10]

例3:根据国家和用手习惯对这段数据进行统计汇总。

# 频数统计时,使用交叉表(crosstab)更方便
# crosstab方法:
pd.crosstab(index=data.Nationality, columns=data.Handedness)

# crosstab方法,添加行/列名:
pd.crosstab(index=data.Nationality, columns=data.Handedness,rownames=['国家'],colnames=['用手习惯']))

# pivot_table方法:
data.pivot_table(index=['Nationality'], columns=['Handedness'], aggfunc='count')

# groupby方法:
data.groupby(['Nationality', 'Handedness']).agg('count').unstack()

pandas分组分析:GroupBy和pandas交叉分析:pivot_table/crosstab【学习记录】相关推荐

  1. pandas分组统计 - groupby功能

    数据分组 分组统计 - groupby功能 ① 根据某些条件将数据拆分成组 ② 对每个组独立应用函数 ③ 将结果合并到一个数据结构中 Dataframe在行(axis=0)或列(axis=1)上进行分 ...

  2. Pandas-高级处理(七):透视表(pivot_table)【以指定列作为行索引对另一指定列的值进行分组聚合操作】、交叉表(crosstab)【统计频率】

    交叉表与透视表的作用 交叉表:计算一列数据对于另外一列数据的分组个数 透视表:指定某一列对另一列的关系 一.透视表 透视表是一种可以对数据动态排布并且分类汇总的表格格式. 透视表:透视表是将原有的Da ...

  3. pandas 分组统计的三个函数 pivot table crosstab groupby

    最近在做数据,记录一下遇到的问题,解决的方式, 有一个数据,如图 我想统计每年的idx_reply, idx_sat, idx_default的频数 交叉统计. 探索了一下午,做法是这样的. data ...

  4. pandas分组计算平均值_python – Pandas:如何按符号分组并按n行取平均值

    假设我有以下数据框df: date symbol_a symbol_b ratio 0 2017/01/01 AAAA AA 10 1 2017/01/02 AAAA AA 20 2 2017/01/ ...

  5. 问卷与量表数据分析(SPSS+AMOS)学习笔记(七) : 多选题的频率、交叉分析及卡方检验

    课程链接:<问卷与量表数据分析(SPSS+AMOS)> 笔记中的数据皆来自课程自带资料. 目录 1. 多选题的两种定义方法 1.1 定义多重响应集的步骤--二分类 1.2  定义多重响应集 ...

  6. 《深入浅出Pandas:利用Python进行数据处理与分析》——第3部分 数据形式变化_01分组聚合

    文章目录 分组聚合操作 分组器 分组对象查看 apply/pipe/transform 数据分箱(data binning),或离散组合或数据分桶 分组可视化,pandas提供的简单的与分组相关的可视 ...

  7. python的基本统计和分组分析和分布分析和交叉分析和结构分析

    import pandas fa=pandas.read_csv('D://Python projects//reference data//5.1//data.csv') #查看学生分数的描述性统计 ...

  8. python数据分析的交叉分析和分组分析 -第三次笔记

    python数据分析 -第三次笔记 –1.交叉分析 –2.分组分析 1.交叉分析 交叉分析的含义是在纵向分析法和横向分析法的基础上,从交叉.立体的角度出发,由浅入深.由低级到高级的一种分析方法.这种方 ...

  9. 【Pandas总结】第九节 Pandas_累计与分组 pd.groupby()

    文章目录 一.数据准备 二.累计值计算 2.1 df.describe() 2.2 常用统计值 三.分组 pd.groupby() 四.更多的使用方法`aggregate()`,`filter()`, ...

最新文章

  1. OpenVINO + OpenCV实现车辆检测与道路分割
  2. ×××生成算法的分析
  3. iOS使用WSDL2ObjC工具调用Webservice接口
  4. 【PC工具】速度最快最好用的文件搜索工具:everything,更新文件内容搜索方法...
  5. hbase中对deadserver处理存在的问题
  6. 同事操作两个数据源保持事务一致_「微服务架构」微服务架构中的数据一致性...
  7. PinnerSage模型
  8. java实现遍历树形菜单方法——struts.xml实现
  9. java服务器返回错误码,java - java.io.IOException:服务器返回URL的HTTP响应代码:409 - 堆栈内存溢出...
  10. ios系统框架一: Core Animation
  11. 虚拟机安装XP操作系统
  12. 知乎 | 一个博士生接受怎样的训练是完整的科研训练?
  13. 哄女朋友必备之微信自动发红包脚本(python+adb+androidviewclient)
  14. 题解 CF32C 【Flea】
  15. git与gerrit基础概念
  16. Python 多进程
  17. QQ圈子凭借什么原理进行划分的?
  18. iOS学习—iOS长按手势事件
  19. 3.Linux创建文件
  20. 破题数据中心绿色可持续发展

热门文章

  1. 注册华为云用户: 访问官网 https://huaweicloud.com/ 注册华为云用户(需手机号验证) 登录并完成实名认证 为账号充值不少于100元(不用时可提现
  2. word在图片上添加文字且不改变原图教程
  3. 南京大学计算机专业拂晓,南京大学2020年计算机学科录取推免生222人,全部来自211高校...
  4. 如何避免黑客攻击?国内首个云端加密代码库来帮忙
  5. WordPress手动开启WP错误调试
  6. 线性代数 --- 用内积重新定义矩阵的转置(个人学习笔记)
  7. 201509281125_《为什么移动app会很慢的深度分析(摘自司徒正美博客园文章)》
  8. python re 正则提取中文
  9. “苹果”在中国的血汗工厂
  10. python实验心得体会范文大全_万能实验报告心得体会5篇范文