还剩8页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
课题
4.4数据的交叉与透视课型讲练授课班级大数据授课时数
21.理解频数交叉表与数据透视表的区别教学目标
2.能够绘制频数交叉表
3.能够绘制数据透视表
1.能够绘制频数交叉表教学重点
2.能够绘制数据透视表教学难点
1.理解频数交叉表与数据透视表的区别数据的交叉透视分析是数据分析的一种常用的方法,这种方法类似于学情分析Excel的数据透视表,其中区别在于pandas的交叉透视分析既有交叉的频数统计还有函数统计数据交叉透视分析是数据分析中常用方法之一,通过交叉透视分析可以用来判断不同字段之间是否存在相互关联
一、频数交叉表频数交叉表是一种用于计算分组频率的表格,频数交叉表只统计行与列字段交叉出现的频数,因为表格统计的内容是有限的,所以行字段和列字段的取值不能过多,一般都是字符型分类字段比如判断分析性别与商品类别之间是否存在关联,就可以把性别与商品类别可以分别作为行字段和列字段,进而统计交叉字段出现的频数,并判断不同性别选择不同商品时是否存在明显差异比如一共有20个客户,其中男性和女性客户各占10个,而使用A手机和B手机各占10个客户,如果仅仅分析性别或商品类别的话,看不出明显的规律但是如果将两个字段进行交叉分析的话,就可以进一步统计不同性别选择不同商品类别的频数,将各个频数绘制在表格中,如表4-*所示表4-*不同性别选择不同商品结果A B小计男2810女8210小计101020从表4-*可以看出,购买A手机的客户中,女性客户明显多于男性客户,而B手机的客户中,男性客户明显多于女性客户,而这些规律是无法仅通过一个字段看出的,只有通过字段的交叉统计才能看出如果要把数值型字段作为交叉表的行字段或列字段,可以先将数值型字段通过分段函数转化成分类型字段,进而再进行统计分析,比如直接绘制年龄和商品类别的交叉表意义不大,因为年龄的取值过多此时,可以对年龄进行分段,再制作年龄段和商品类别的交叉表频数交叉表一般格式如表4-*所示表4-*频数交叉表结果行字段行字段二
①行字段二
②列列字段二
③①和
③频数
②和
③频数字段列字段二
④①和
④频数
②和
④频数pandas提供了crosstab函数用来制作频数交叉表,crosstab函数的一般用法为pd.crosstabindex,columns,margins其中,index表示交叉表行字段columns表示交叉表列字段margins表示汇总Total功能的开关,设为True后结果会出现名为“ALL”的行和列,默认为False示例代码如下import pandasas pdpd.set_optiondisplay.unicode.east_asian_width,True diet=『性别1,1』,1,0,0,0,0],商品类别:[0,0,0,0,0』,1,1』[]}data=pd.DataFramedict data[性别1=data「性别[replace({0:男,1:女})#将性别中的0替换为男,将1替换为女data「商品类别]=data「商品类别].replace({0:,商品A」:,商品B1))#将商品类别中的替换为商品A,将1替换为商品B print(初始数据为:\n;data)result_crosstab_l=pd.crosstab(index=data「性另『],columns=data「商品类另U])print(频数交叉表的结果为果”,result_crosstab_l)result_crosstab_2=pd.crosstab(index=data[性另『],columns=data「商品类另『],margins=True)print(添加汇总行与汇总列后频数交叉表的结果为:\n”,result_crosstab_2)输出结果如图4-*所示Run:4-4C:\Users\liliang\Anaconda3\python.exe C:/Users/liliang/PycharmProjects/sjfx/4-
4.py初始数据为性别商品类别0男商品A三1女商品A.2女商品A13女商品A■4女商品A5女商品B6男商品B7男商品B8男商品B9男商品B频数交叉表的结果为商品类别商品A商品B性别女41男14添加汇总行与汇总列后频数交叉表的结果为商品类别商品A商品B All性别女415男145All5510Process finished with exit code0图4-*频数交叉表示例结果
二、数据透视表频数交叉表只能统计行与列字段交叉出现的频数,而如果还要再统计行与列字段以外的第3个字段,就需要用到数据透视表pandas中的数据透视表类似于Excel中的数据透视表,需要找到行字段、列字段以及统计字段,再确定统计方法就可以绘制数据透视表比如年份与地区可以分别作为行字段和列字段,进而再统计销售金额的各种指标,就可以制作数据透视表数据透视表结果如表4-*所示表4-*函数交叉表结果行字段行字段二
①行字段二
②列
①和
③②和
③字列字段二
③段统计字段的统计指标统计字段的统计指标
①和
④②和
④列字段二
④统计字段的统计指标统计字段的统计指标pandas提供了制作数据透视表的函数pivot table,pivot table函数的一般用法为:pd.pivot_table(data,index,columns,values,aggfunc,margins)各个参数的作用如下data表示待分析的DataFrame index表示数据透视表的行字段columns表示数据透视表的列字段values表示数据透视表的统计字段aggfunc表示统计指标如np.sum表示计算总和,叩.mean表示计算平均数,使用前需要导入numpyo margins表示汇总(Total)功能的开关,设为True后结果集中会出现名为“ALL”的行和列默认为False示例代码如下import numpyas 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的结果为:\n\result_pivot_l)result_pivot_2=pd.pivot_table(data=data,index=性别;columns=商品类别,values=1销售金额\aggfunc=np.mean,margins=True)print(数据透视表2的结果为:\n”,result_pivot_2)输出结果如图4-*所示Run:4-4A C:\Users\liliang\Anaconda3\python.exe C:/Users/liliang/PycharmProjects/sjfx/4-
4.py初始数据为性别商品类别销售金额=0男商品A115丑1女商品A102女商品A93女商品A84女商品A75女商品B66男商品B57男商品B48男商品B39男商品B2数据透视表1的结果为商品类别商品A商品B性别女346男1114数据透视表2的结果为商品类别商品A商品B All性别女
8.
56.08男11・
03.55All
9.
04.06Process finishedwith exitcode0图4-*数据透视表示例结果【结果分析】从结果可以看出,购买商品A的男性客户的平均销售金额明显大于女性客户,而购买商品B的女性客户平均销售金额明显大于男性客户任务实训任务1利用read excel导入supermarket.xlsx(supermarket.xlsx存放在c:\data路径中中的“销售统计”工作表第1张工作表,导入时将“客户ID”列设为索引,完成1从“订单ID”列中提取年份,并将结果存放到新列“年”中2制作数据交叉表,统计不同年份的不同省份的频数,并统计汇总结果3从“产品ID”中提取产品类别,如从“办公用-用品-10002717”提取出“用品”,并将结果存放到新列“产品类别”中将“销售金额”进行分段,销售金额75%分位数以上的数据命名为“优质客户”,销售金额75%分位数以下的数据命名为“一般客户”4制作数据交叉表,统计不同年份的不同客户的频数,并统计汇总结果任务11具体代码如下pd.set_option,display.max_columns,,None pd.seLoptionCdisplay.width,None pd.set_option,display.unicode.east_asian_width,,True datal=pd.read_excel,,c:\data\supermarket.xlsx,,,index_col=§/±1ID print导入的数据为:\n”,data
1.head datal「年]=datal J订单ID].str.split,-\expand=True
[1]print生成新列年的结果为:\n”,datal.head输出结果如图4-*所示Run:04-4►个C:\Users\liliang\Anaconda3\python.exe C:/Users/liliang/PycharmProjects/sjfx/4-
4.py导入的数据为订单ID产品ID产品名称客户姓名省城市单价数量的售金额折扣折扣金额*方客户ID14485US-2018-1357144办公用-用品-10002717Fiskars剪刀,蓝色曾惠浙江杭州
6521300.
478.010165CN-2018-1973789办公用-信封-10004832GlobeWeis搭扣信封,红色许安四川内江
6321260.
0126.010165CN-2018-1973789办公用-装订-10001505Cardinal孔加固材料,回收许安四川内江
162320.
419.217170US-2018-3017568办公用-用品-10003746Kleencut开信刀,工业宋良江苏住江
8043200.
4192.015730CN-2017-2975416办公用-器具-10003452KitchenAid搅拌机,黑色万兰广东汕头
459313770.
01377.0生成新列•年•的结果为订单ID产品ID产品名称客户姓名省城市单价数M销售金颍折扣折扣金倾年客户ID14485US-2018-1357144办公用用品-10002717Fiskars剪刀,蓝色曾弟浙江杭州
652130.
478.0201810165CN-2018-1973789办公用-信封-10004832GlobeWeis搭扣信封,红色许安四川内江
6321260.
0126.0201810165CN-2018-1973789办公用-装订-10001505Cardinal孔加固材料,回收许安四川内江
162320.
419.2201817170US-2018-3017568办公用-用品-10003746Kleencut开信刀,工业宋良江苏镇江
8043200.
4192.020181573CN-2017-2975416办公用器具-10003452KitchenAid搅拌机,黑色万兰广东汕头
459313770.
01377.02017Process finishedwith exitcode0图4-*任务11输出结果任务12具体代码如下crosstab_resultl=pd.crosstabindex=datal[1省^columns=datal[,年margins二True printcrosstab_result1输出结果如图3-*所示Run:4-4A年2015201620172018All省上海2411118云南047011■I内蒙古1404220Ei北京02136吉林221813w四川416617天津01359■安徽109111山东2817633山西00224广东1417830广西02046江苏114141342江西655420河北4271326河南0018018浙江4116829海南00303湖北209213湖南215513甘肃631111福建821011贵州20136江宁49162251重庆024713陕西821516青海00011黑龙江813161249All9479175152500图4-*任务1
(2)输出结果【结果分析】从结果中可以看出,江苏、辽宁、重庆、黑龙江等省份近三年的订单有明显地上升广东、甘肃、福建等省份地订单有下降地趋势任务1
(3)具体代码如下datal「产品类另=datal「产品ID*].str.split(,-\expand=True)
[1]des=data1「销售金额[describe datal「客户等级1=pd.cut(datal[销售金额1bins=[0,des[,75%,],des[,max,]],labels=[,一般客户优质客户])print(生成新列产品类别和客户等级,的结果为:\rT,datal.head)输出结果如图4-*所示Run:4-4WE新司,产品类别•和,客户等级,的结果为订华ID产品ID产品名称客户姓名省城市单价数量销售金额折扣折扣金微年产品矣另客户等级客户I514485US-2018-1357144办公用-用品-10002717Fiskars剪刀,色S«
0.
478.02018用।□一般客户浙江杭州
6521300.
0126.02018优一般客户10165CN-2018-1973789办公用-信封-10004832Globe10165CN-2018-1973789办公用装VI-10001505Cardinal孔加固材料,回收许安四川内江
162320.
419.22018装i T一般客户w17170US-2018-3017568办公用-用品-10003746Kleencut开信刀,工业宋R江苏慎江
8043200.
4192.02018用;□・叙客户■15730CN-2017-2975416办公用-器具-1003452KitchenAid搅拌机,黑色万兰广东汕头
459313770.
01377.02017器1一锻客户Process finishedwith exitcode0图4-*任务13输出结果任务14具体代码如下crosstab_result2=pd.crosstabindex=data1「产品类另叫,columns=datal[客户等级margins=True printcrosstab_result2输出结果如图4-*所示Run:4-4►C:\Users\liliang\Anaconda3\python.exe C:/Users/liliang/PycharmProjects/sjfx/4-
4.py客户等级一般客户优质客户All产品类别■■F5书架111324信封30030器具92231复印61824收纳31839标签28028桌子178椅子181836用具22224用品35035电话182139系固33033纸张26026美术20020装订49049设备101020配件28634All3乃125500Process finishedwith exitcode0图4-*任务14输出结果【结果分析】从结果中可以看出,虽然优质客户的人数较少,但是“器具”、“复印“、“椅子”、“电话”、“设备”等产品有至少一半订单来自于优质客户任务2将任务1的结果重新命名为data2,制作数据透视表,统计分析不同年份的不同产品类别对应的平均销售金额具体代码如下data2=data1result_pivot=pd.pivot_tabledata=data2,index=产品类别,columns=年,values=销售金额\aggfunc=np.mean printroundresult_pivot,0输出结果如图4-*所示Run:4-4C:\Users\liliang\Anaconda3\python.exe C:/Users/liliang/PycharmProjects/sjfx/4-
4.py►t年2015201620172018产品类别5s=5书架
2450.
02746.
02091.
02888.0丑信封
660.
0459.
0358.
0588.0器具
8373.
07280.
05321.
04266.0w复印
4034.
02962.
02483.
02792.0收纳
1467.
01995.
01350.
01364.0标签
141.
0217.
0209.
0193.0桌子
13601.0NaN
4021.
05670.0椅子
5294.
05449.
02781.
02575.0用具
603.
0354.
0789.
01028.0用品
325.
0400.
0468.
0341.0电话
3308.
04418.
02806.
05298.0系固21440216,0178*0235,0纸张
432.
0292.
0419.
0707.0美术
371.
0369.
0252.
0389.0装订203・
0444.
0276.
0419.0设备
488.
05718.
02374.
02522.0配件
1390.
01187.
01019.
01198.0Process finishedwith exitcode0图4-*任务2输出结果巩固训练利用read_excel导入c:\data\score.xls,完成1将“area”列拆分成两个新列,将其中的省份生成新列“province,将其中的城市生成新列“city”2制作频数交叉表,统计不同省份不同性别的频数3制作数据透视表,统计不同城市不同性别对应的数学的平均分Run4-3C:\Users\liliang\Anaconda3\python.exe C:/Users/liliang/PycharmProjects/sjfx/4-
3.py导入的数据为省订单ID产品ID产品名称客户姓名省城市单价数量侑售金额折扣折扣金额客户1014485US-2018-1357144办公用-用品-10002717Fiskars剪刀,监色四惠浙江杭州
6521300.
478.010165CN-2018-1973789办公用-信封-10004832GlobeWeis搭扣信封,红色许安四川内江
6321260.
0126.010165CN-2018-1973789办公用-装订-10001505Cardinal孔加固材料,回收许安四川内江
162320.
419.217170US-2018-3017568办公用-用品-10003746Kleencut开信刀,工业宋良江苏镇江
8043200.
4192.015730CN-2017-2975416办公用器具10003452KitchenAid授拌机,黑色万兰广东汕头
459313770.
01377.0平均俏区金额最少的3个营的结果为辽宁
271.2甘肃
291.0西海
300.0Name:伪包金额,dtype:float64折扣金陵总和排名前5的客户名单的结果为客户姓名俞明
21017.0EVM
15694.0芬聒
14143.0白鹄
9831.0赵蜂
7945.0Name:折扣金额,dtype:float64Process finishedwith exitcode0图4-*任务1输出结果【结果分析】因为每个客户都有很多订单,所以要统计折扣金额排名前10的客户名单,首先需要对数据按照客户进行分组,才能进行后续的统计分析任务2根据任务1的导入数据,重新命名为data2,将“销售金额”列进行分段并生成新列,新列命名为“客户等级”具体分段方法为将销售金额的25%分位数、50%分位数、75%分位数设为三个分段点,并以此将分为4段,“D”、C”、B”、“A”输出前10个数据,查看分段的效果具体代码如下data2=datal des=data21销售金额[.describe cujbins=「销售金额]max]cut」abels=[DC;BA]data2r客户等级1=pd.cutdata2「销售金额]bins=cut_bins,labels二cut」abels printdata
2.headl0输出结果如图4-*所示Run:4-3C:\Users\liliang\Anaconda3\python.exe C:/User$/liliang/Pychar«Projects/sjfx/4-
3.py订单10产品10产品名睡客户姓名告城市单价数・倒营金腺折扣折扣金额客户等取客户ID14485US-2018-1357144办公用-用品-10002717Fiskars就刀,匕色H®浙江杭州
6521300.
478.0D10165CN-2018-1973789办公用任封-10004832GlobeWeis塔扣信封,红色许安BJII内江
6321260.
0126.0D二10165CN2018-1973789办公用-装订-10001505Cardinal孔加固材料,回收淳安四川内江
162320.
419.2D TT17170US-2018-3017568办公用-用品-10903746Kleencut开信刀,工业宋良江苏镇江
8043200.
4192.0C i15730CM-2017-2975416办公用-器具-10003452KitchenAid搅摔机,黑色万兰广东汕头
459313770.
01377.0B18325CN-2016-4497736技术-设冬-10001640柯尼卡打印机,红色南明江西景僚镇
12379111330.
011133.0A18325CN-2016-4497736办公用-装订-10001029Ibico订书机,实思俞明江西景德镇
24024800.
0480.0C18325CN-2016-4497736家具椅子1OO0CS78SAFCO扶手椅,可调俞明江西景彼模
2165486600.
08660.0A18325CN-2016-4497736办公用-版张-10001629Green Bar计划信息费,姿色副明江西
11855900.
0590.0B18325CN-2016-4497736办公用-系固-10004801Stockwell株皮筋,整包俞明江西«««
7721540.01S
4.6D Processfinishedwithexitcode0图4-*任务2输出结果巩固训练利用read csv导入c:\data\score.csv,完成:⑴按“class”班级分组,计算各班“math”列的平均数和中位数2将“math”列进行分段,成绩段分段方法为0-59设为“不及格”,为60-74“合格”,75-89为“良好”,90-100为“优秀”,并将结果生成新列“math_cut”。