Python数据分析与可视化教案4.4 数据的交叉与透视.docx
《Python数据分析与可视化教案4.4 数据的交叉与透视.docx》由会员分享,可在线阅读,更多相关《Python数据分析与可视化教案4.4 数据的交叉与透视.docx(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课 题4.4数据的交叉与透视课 型讲练授课班级大数据授课时数2教学目标1 .理解频数交叉表与数据透视表的区别。2 .能够绘制频数交叉表。3 .能够绘制数据透视表。教学重点1 .能够绘制频数交叉表。2 .能够绘制数据透视表。教学难点1.理解频数交叉表与数据透视表的区别。学情分析数据的交叉透视分析是数据分析的一种常用的方法,这种方法类似于 Excel的数据透视表,其中区别在于pandas的交叉透视分析既有交叉的频数 统计还有函数统计。数据交叉透视分析是数据分析中常用方法之一,通过交叉透视分析可以用来判断 不同字段之间是否存在相互关联。一、频数交叉表频数交叉表是一种用于计算分组频率的表格,频数交叉表
2、只统计行与列字段交叉 出现的频数,因为表格统计的内容是有限的,所以行字段和列字段的取值不能过多, 一般都是字符型分类字段。比方判断分析性别与商品类别之间是否存在关联,就可以 把性别与商品类别可以分别作为行字段和列字段,进而统计交叉字段出现的频数,并 判断不同性别选择不同商品时是否存在明显差异。比方一共有20个客户,其中男性和女性客户各占10个,而使用A手机和B手 机各占10个客户,如果仅仅分析性别或商品类别的话,看不出明显的规律。但是如 果将两个字段进行交叉分析的话,就可以进一步统计不同性别选择不同商品类别的频 数,将各个频数绘制在表格中,如表4-*所示。表4-*不同性别选择不同商品结果AB小
3、计男2810女8210小计101020从表4-*可以看出,购买A手机的客户中,女性客户明显多于男性客户,而B手 机的客户中,男性客户明显多于女性客户,而这些规律是无法仅通过一个字段看出的, 只有通过字段的交叉统计才能看出。如果要把数值型字段作为交叉表的行字段或列字段,可以先将数值型字段通过分 段函数转化成分类型字段,进而再进行统计分析,比方直接绘制年龄和商品类别的交 叉表意义不大,因为年龄的取值过多。此时,可以对年龄进行分段,再制作年龄段和 商品类别的交叉表。频数交叉表一般格式如表4-*所示。表4-*频数交叉表结果行字段行字段二行字段二列字段列字段二和频数和频数列字段二和频数和频数pandas
4、提供了 crosstab函数用来制作频数交叉表,crosstab函数的一般用法为:pd.crosstab(index,columns,margins)其中,index表示交叉表行字段。columns表示交叉表列字段。margins表示汇总 (Total)功能的开关,设为True后结果会出现名为“ALL”的行和列,默认为False。例如代码如下:import pandas as pdpd.set_option(display.unicode.east_asian_width,True)diet =性别1,1,1,0,0,0,0,商品类别:0,0,0,0,0,1,1data = pd.DataFr
5、ame(dict)data性别1=data性别replace(0:男,1:女) #将性别中的0替换为男,将1替 换为女data商品类别=data商品类别.replace(0:,商品A:,商品B1) #将商品类别 中的。替换为商品A,将1替换为商品Bprint(初始数据为:n;data)result_crosstab_l = pd.crosstab(index=data 性另,columns=data商品类另 U)print(频数交叉表的结果为果”,result_crosstab_l)result_crosstab_2 = pd.crosstab(index=data性另,columns=dat
6、a商品类另,margins=True)print(添加汇总行与汇总列后频数交叉表的结果为:n”,result_crosstab_2)输出结果如图4-*所示。Run:4-4C:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/4-4.py 初始数据为:性别商品类别0男商品A三1女商品A.2女商品A1 3女商品A4女商品A5 女商品B男商品B6 男商品B男商品B7 男商品B频数交叉表的结果为:商品类别商品A商品B性别女41男14添加汇总行与汇总列后频数交叉表的结果为:商品类别商品A商品B All性别女415男
7、145All5510Process finished with exit code 0图4-*频数交叉表例如结果二、数据透视表频数交叉表只能统计行与列字段交叉出现的频数,而如果还要再统计行与列字段 以外的第3个字段,就需要用到数据透视表。pandas中的数据透视表类似于Excel中 的数据透视表,需要找到行字段、列字段以及统计字段,再确定统计方法就可以绘制 数据透视表。比方年份与地区可以分别作为行字段和列字段,进而再统计销售金额的 各种指标,就可以制作数据透视表。数据透视表结果如表4-*所示。表4-*函数交叉表结果pandas提供了制作数据透视表的函数pivot table, pivot ta
8、ble函数的一般用法为:行字段行字段二行字段二列字段列字段二和和统计字段的统计指标统计字段的统计指标列字段二和统计字段的统计指标和统计字段的统计指标pd.pivot_table(data,index,columns,values,aggfunc,margins)各个参数的作用如下:data表示待分析的DataFrame。index表示数据透视表的行字段。columns表示数据透视表的列字段。values表示数据透视表的统计字段。aggfunc表示统计指标。如np.sum表示计算总和,叩.mean表示计算平均数,使 用前需要导入numpyomargins表示汇总(Total)功能的开关,设为Tr
9、ue后结果集中会出现名为“ALL” 的行和列。默认为False。例如代码如下:import numpy as npdata销售金额=np.arange(ll,l,-l)print(初始数据为:n ”,data)result_pivot_l = pd.pivot_table(data二data,index=性另 i,columns=,商品类另小,values=销 售金额:aggfunc = np.sum)print(数据透视表1的结果为:nresult_pivot_l)result_pivot_2 = pd.pivot_table(data=data,index=性别;columns=商品类别,
10、values=1 销 售 金 额aggfunc=np.mean,margins=True)print(数据透视表 2 的结果为:n”,result_pivot_2)输出结果如图4-*所示。Run:4-4AC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/4-4.py初始数据为:性别商品类别销售金额=50男商品A11丑1女商品A102女商品A93女商品A84女商品A75女商品B66男商品B57男商品B48男商品B39男商品B2数据透视表1的结果为:商品类别商品A商品B 性别 女346男1114数据透视表
11、2的结果为:商品类别商品A商品B All 性别女8.56.08男1103.55All9.04.06Process finished with exit code 0图4-*数据透视表例如结果【结果分析】从结果可以看出,购买商品A的男性客户的平均销售金额明显大于女性客户,而购买商品B的女性客户平均销售金额明显大于男性客户。任务实训任务 1:利用 read excel 导入 supermarket.xlsx (supermarket.xlsx 存放在 c:data 路 径中)中的“销售统计”工作表(第1张工作表),导入时将“客户ID”列设为索引, 完成:(1)从“订单ID”列中提取年份,并将结果存
12、放到新列“年”中。(2)制作数据交叉表,统计不同年份的不同省份的频数,并统计汇总结果。(3)从“产品ID”中提取产品类别,如从“办公用-用品-10002717”提取出“用 品”,并将结果存放到新列“产品类别”中。将“销售金额”进行分段,销售金额75% 分位数以上的数据命名为“优质客户”,销售金额75%分位数以下的数据命名为“一 般客户”。(4)制作数据交叉表,统计不同年份的不同客户的频数,并统计汇总结果。任务1 (1)具体代码如下:pd.set_option(,display.max_columns,None)pd.seLoptionCdisplay. width,None)pd.set_op
13、tion(,True)datal = pd.read_excel(,c:datasupermarket.xlsx,index_col=/1 ID)print(导入的数据为:n”,data 1 .head()datal年=datal J订单 ID.str.split(,-expand=True) 1 print(生成新列年的结果为:n”,datal. head。)输出结果如图4-*所示。Run:0 4-4图4-*任务1 (1)输出结果 个C:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/4-4.py导入
14、的数据为:订单ID产品ID产品名称客户姓名 省城市单价数量的售金额折扣折扣金额*方客户ID14485US-2018-1357144 办公用-用品-10002717Fiskars 剪刀,蓝色曾惠 浙江 杭州 6521300.478.010165CN-2018-1973789 办公用-信封-10004832 GlobeWeis 搭扣信封,红色许安四川内江 6321260.0126.010165CN-2018-1973789办公用-装订-10001505 Cardinal孔加固材料,回收许安 四川 内江 162320.419.217170 US-2018-3017568 办公用-用品-1000374
15、6Kleencut 开信刀,工业宋良 江苏 住江 8043200.4192.015730CN-2017-2975416 办公用-器具-10003452 KitchenAid 搅拌机,黑色万兰广东汕头 459313770.01377.0生成新列年的结果为:订单ID产品ID产品名称客户姓名 省城市单价数M销售金颍折扣折扣金倾 年客户ID14485US-2018-1357144 办公用 用品-10002717Fiskars 剪刀,蓝色曾弟 浙江 杭州 65213。0.478.0 201810165 CN-2018-1973789 办公用-信封-10004832GlobeWeis 搭扣信封,红色许安
16、四川 内江 6321260.0126.0 201810165CN-2018-1973789 办公用-装订-10001505 Cardinal 孔加固材料,回收许安 四川 内江 162320.419.2 201817170US-2018-3017568 办公用-用品-10003746Kleencut 开信刀,工业宋良 江苏 镇江 8043200.4192.0 20181573。CN-2017-2975416 办公用器具-10003452 KitchenAid 搅拌机,黑色万兰广东汕头 459313770.01377.0 2017Process finished with exit code 0任
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python数据分析与可视化 教案 4.4 数据的交叉与透视 Python 数据 分析 可视化 交叉 透视
限制150内