Python数据分析与可视化教案4.3 数据的分组与分段_第1页
Python数据分析与可视化教案4.3 数据的分组与分段_第2页
Python数据分析与可视化教案4.3 数据的分组与分段_第3页
Python数据分析与可视化教案4.3 数据的分组与分段_第4页
Python数据分析与可视化教案4.3 数据的分组与分段_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课 题4.3数据的分组与分段课 型讲练授课班级大数据授课时数2教学目标.能够将数据按照指定列分组并汇总统计。.能够将数据按指定列进行数据分段。教学重点.能够将数据按照指定列分组并汇总统计。.能够将数据按指定列进行数据分段。教学难点.能够将数据按照指定列分组并汇总统计。.能够将数据按指定列进行数据分段。学情分析本次课有一定难度,数据的分组统计是数据分析的一种常用的方法,这 种方法类似于Excel的分类汇总,仅仅分组是很不出任何结果的,只有统计 后才能看到结果,而数据分段有点类似于Excel的if函数嵌套进行数据分 组。充分理解Excel的分类汇总和if函数有助于本次课的学习。在数据分析时,对数据

2、进行分组和分段是常用的一种操作,通过分组和分段可以 挖掘出更多数据的内在信息。数据分组的作用是可以快速对所有分组进行统计计算, 比方计算男女学生的平均成绩时,可以先按性别分组,然后再按成绩统计各组的平均 数。数据分段作用在于可以将连续的数据离散化,比方将成绩分为不同的成绩等级, 将年龄分为不同的年龄段,这样就可以通过不同数据段的统计分析挖掘出一些更加有 用的信息。一、数据分组统计分析分组是指将DataFrame按照某列划分为多个不同的组,然后再按另外一列计算每 组的一些统计指标,这一点类似于Excel的分类汇总,分组统计时只要确定分组字段、 统计字段和统计方法就可以执行。1 .数据分组pand

3、as提供了一个灵活高效的groupby函数,通过groupby函数可以对DataFrame 进行分组操作,进而再对每一组进行统计分析,如计算最大值、最小值、平均值、中 位数等。(1)按某列对DataFrame进行分组通过groupby函数执行分组操作,只会返回一个GroupBy对象,该对象实际上并 没有进行任何的计算,其仅仅是中间数据。groupby函数的一般用法为:DataFrame.groupby(by =分组歹(J)其中,by表示分组的列,即DataFrame按照这一列进行分组,但是其结果只是 一个中间数据,不产生任何的统计结果。例如代码如下:import numpy as npimpo

4、rt pandas as pdarr = np.arange( 1,17).reshape(4,4)data = pd.DataFrame(arr,columns=,aVb,c7d,)datafe1 =print(初始数据为:n;data)group = data.groupby(by=e)print(按e列分组的结果为:group)print(分组结果的类型为:,type(group)输出结果如图4-*所示。 TOC o 1-5 h z Run:4-3AC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjf

5、x/4-3.py初始数据为:a b c d e501234A过 15678 B29 10 11 12 B3 13 14 15 16 A 按e列分组的结果为:(pandas.core.groupby.generic.DataFrameGroupBy object at 0 x000001F7AE17D400 分组结果的类型为: Process finished with exit code 0图4-* DataFrame分组例如结果(2)查看分组结果按某列对DataFrame进行分组后的结果是一个可以迭代的对象,通过循环语句可以查看每一组的情况。例如代码如下:print(按e列分组后的每一组的结

6、果为:)for g in group:print(g)输出结果如图4-求所示。Run:4-3AC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/4-3.py初始数据为: a b c d e二?501234A二1567gB TOC o 1-5 h z .29101112 BW313141516 A按Q列分组后的每一组的结果为:(A, a b c d e01234A313141516A)(E, a b c d e15678B29101112B)Process finished with exit code

7、 0 4: Run := 6: TODO ES Terminal *3* Python Console图4-*查看分组结果例如结果【结果分析】从图4-*的结果中可以看到,利用grougby对data按照e列进行 分组后,所有“A”为一组,所有“B”为一组,共分成了两组,这些分组的信息都被 存储在DataFrameGroupBy的数据类型中,通过循环语句就可以查看每一组的结果。2 .分组统计在DataFrame中,按照某一列进行分组后,还可以再对指定的列进行统计分析, 其一般方法为:DataFrame. 810叩6丫8丫二分组列)统计列,统计方法例如代码如下:print(初始数据为:n”,dat

8、a)data_resultl = data.groupby(by=e)a,mean()data_result2 二 data.groupby(by=e)b.max()print(按e列分组再按a列统计平均值的结果为:n”,data_resultl)print(按e列分组再按b列统计最大值的结果为:n”,data_result2)输出结果如图4-*所示。 TOC o 1-5 h z Run:4-3C:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/4-3.py 初始数据为: a b c d e01234A

9、15678B29101112B313141516A按q列分组再按a列统计平均值的结果为: eA 7B 7Name: a, dtype: int32按e列分组再按b列统计最大值的结果为: eA 14B 10Name: b, dtype: int32Process finished with exit code 0图4-*分组统计例如结果二、数据分段统计分析在数据分析中,常常需要将连续数据离散化,这就是数据分段。数据分段就是指 在连续数据取值范围内设置一些离散的分段点,而将连续数据按照这些分段点进行分 段。如将年龄按照四个分段点7、18、35、65就可以分为五个年龄段,分别是:童年、 少年、青年、

10、中年、老年。pandas中的cut函数可以实现将连续型数据转换为分段型数据,cut函数的一般 用法为:pandas.cut(x,bins,labels)其中,x表示要分段的列。bins表示用于分段的分段点,这些分段点可以组成分 段区间,并且这些区间是左开右闭区间(除了第1个区间和最后1个区间),如 bins=0,10,20,30,40表示四个分段区间:0,10、(11,20、(21,30 31,40o labels 表示 每个分段的标签。例如代码如下:arr = np.arange(3,50,3).reshape(4,4)data = pd.DataFrame(arr,columns=a,b,

11、c,/d,)print(初始数据为:nn,data)dataa_cut=pd.cut(dataa,bins=0,9J9,29,39,49,labels=,0+,;10+,;204-,;30+,;40+,)print(Ma列分段后的结果:n”,data)输出结果如图4-*所示。 TOC o 1-5 h z Run:4-3AC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/4-3.py初始数据为: abed rp0369121115182124”.22730333622730333620+33942454

12、830+Process finished with exit code 0图4-*数据分段例如结果【结果分析】因为分段区间是左开右闭区间,所以29到39是(29, 39,即从30 至U39,而这一数据分段对应的标签是“30+”,因此39属于“30+”。任务实训任务 1:利用 read_excel 导入 supermarket.xlsx (supermarket.xlsx 存放在 c:data 路 径中)中的“销售统计”工作表(第1张工作表),导入时将“客户ID”列设为索引, 将导入数据命名为datal,完成:(1)统计平均销售金额最少的3个省。(2)统计折扣金额总和排名前5的客户名单。具体代码

13、如下:pd.set_option(display.max_columns,None)pd.set_option(,display. width,None)pd.set_option(display.unicode.east_asian_width,True)datal = pd.read_excel(,c:datasupermarket.xlsx,index_col=/Ll ID) print。导入的数据为:n”,data l.head()datal_resultl = datal.groupby(by=,省)峰肖售金额mean()datal_resultl = data 1 _result

14、1 .sort_values().head(3)print(平均销售金额最少的3个省的结果为:n”,datalesultl) datal_result2 = datal.groupby(by士客户姓名)折扣金额.sum() data 1 _result2 = data 1 _result2.sort_values(ascending=False).head() print(折扣金额总和排名前5的客户名单的结果为:n”,datalesult2) 输出结果如图4-*所示。Run:4-3C:UsersliliangAnaconda3python.exe C:/Users/liliang/Pychar

15、mProjects/sjfx/4-3.py导入的数据为:订单ID产品ID产品名林客户姓名省城市单价数呈侑售金额折扣折扣金额客户1014485US-2018-1357144 办公用-用品-10002717Fiskars 剪刀,蓝色浙江 杭州 652130 0.478.0* 一 二10165CN-2018-1973789 办公用-信封-10004832 GlobeWeis 搭扣信封,红色许安四川内江 6321260.0126.010165CN-2018-1973789办公用-装订-10001505 Cardinal孔加固材料,回收许安四川内江 162320.419.217170US-2018-30

16、17568 办公用-用品-10003746Kleencut 开信刀,工业宋R 江苏 镇江 8043200.4192.015730 CN-2017-2975416 办公用器具-10003452 KitchenAid 授摔机,黑色万兰广东汕头 459313770.01377.0平均销售金额最少的3个省的结果为: 省 辽宁 271.2 甘需 291.0 青海 300.0Name:的售金额,dtype: float64折扣金额总和排名前5的客户名单的结果为: 客户姓名21017.015694.014143.09831.07945.0Name:折扣金额,dtype: float64Process fin

17、ished with exit code 0图4-*任务1输出结果【结果分析】因为每个客户都有很多订单,所以要统计折扣金额排名前10的客 户名单,首先需要对数据按照客户进行分组,才能进行后续的统计分析。任务2:根据任务1的导入数据,重新命名为data2,将“销售金额”列进行分段 并生成新列,新列命名为“客户等级”。具体分段方法为:将销售金额的25%分位数、 50%分位数、75%分位数设为三个分段点,并以此将分为4段,“D”、C”、B”、“A”。 输出前10个数据,查看分段的效果。具体代码如下:data2 = dataldes = data2峰肖售金额.describe。cut_bins = 0

18、,des25%r|,des50%r|,des75%r|,data2峰肖售金额r|,max()cutjabels =data2客户等级1=pd.cut(data2/销售金额,bins=cut_bins,labels=cutabels)print(data2.head(l 0)输出结果如图4-*所示。Run:C:UsersliliangAnaconda3python.exe C:/User$/liliang/PycharProjects/sjfx/4-3.pyIT* ID产品ID产品名落客户姓名 售 城市单价数倒营金疑折扣折扣金额客户答圾客户ID2s 51448sUS-2018 1357144 办

19、公用-用品-10002717Fiskars 的刀,蓝色S 浙江 杭州 6521300.478.0D10165CN-2018-1973789 办公用封-10004832 GlobeWeis 播扣信封,红色许安四川 内江 6321260.0126.9D10165CN-2018-1973789办公用-装订-10001505 Cardinal孔加固材料,回收淳安四川 内江 162320.419.2D17170 US-2018-3017S68 办公用-用品-10003746Kleencut 开信刀,工业宋良江苏 镣江 8643200.4192.0C15730CN-2017-2975416 办公用-器具-1000

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论