版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课题4.1数据的排序与排名课型讲练
授课班级大数据授课时数2
L能够对数据按照指定列排序。
教学目标2.能够对数据按照指定列排名。
3.理解排名函数rank中排名方法参数method的用法。
1.能够对数据按照指定列排序。
教学重点
2.能够对数据按照指定列排名。
教学难点1.理解排名函数rank中排名方法参数method的用法。
对数据进行排序是数据分析的一种常用的方法,而且这种方法也常常和
学情分析其他方法一起使用,比如在统计频数后,可以再按照方式进行排序。排序和
排名在Excel中已经学过了,方法也类似。
在数据分析时,对数据进行排序和排名是常用的一种操作。通过数据的排序和排
名,比较容易发现数据的特征或趋势,找到解决问题的线索。除此之外,排序和排名
还有助于对数据检查纠错,为数据的分组或分段等提供方便。
一、数据排序
数据排序是指数据按一定方式进行排列,通过数据排序可以更为方便地看出数据
特征。DataFrame排序可以分为按索引排序和按某列值排序,索引排序是指按照
DataFrame索引的值升序或降序的方式重新排列数据,而按列值排序是指可以按照
DataFrame某一列的值升序或降序的方式重新排列数据。利用sort_index函数可对索
引进行排序,而利用sort_values函数可对值进行排序。
1.按索引排序
按索引排序是指DataFrame按照索引进行排序,索引排序可以使用sort_index函
数,sort_index函数的一般用法如下:
sort_index(ascendingjnplace)
其中,ascending表示排序方式,True为升序排列,False为降序排列,默认是True,
即默认是升序排序。
示例代码如下:
importnumpyasnp
importpandasaspd
arr=np.arange(1,10).reshape(3,3)
data=pd.DataFrame(arr,columns=['a,/b,,,c,J)
datafd*]=[3,4,2]
data=data.set_index(d)
print("初始数据为:\n”,data)
data_sort_index_1=data.sort_index(inplace=False)
print("按索引升序排序的结果为:\n”,data_sort_index_l)
data_sort_index_2=data.sort_index(ascending=False,inplace=False)
print("按索引降序排序的结果为:\n”,data_sort_index_2)
输出结果如图4-*所示。
Run:4-1
>C:\Users\liliang\Anaconda3\python.exeC:/Users/liliang/PycharmProjects/sjfx/4-l.py
初始数据为:
abc
二ad
a3123
».4456
?2789
■按索引升序排序的结果为:
abc
d
2789
3123
4456
按索引降序排序的结果为:
abc
d
4456
3123
2789
Processfinishedwithexitcode0
图4-*按索引排序示例结果
2.按列值排序
按列值排序是DataFrame按照某一列的值进行排序,值排序序可以使用
sort_values函数,sort_values函数的一般用法为:
sort_values(by,ascending,inplace)
其中,by表示表示按照某一列或几列得值进行排序。ascending表示排序方式,
True为升序排列,False为降序排列,默认是True,即默认是升序排序。
示例代码如下:
data=data.reset_index()#取消用户自定义索引,恢复成自动索引
data['e']=[2,3,2]
data=data[['a','b','c','d','e']]#重新排列原来的列
print("初始数据为:\n”,data)
data_sort=data.sort_values(by=['e','d'],ascending=[False,False])
print("按e、d两列降序排序的结果为:\n",data_sort)
输出结果如图4-*所示。
Run:4-1
>C:\Users\liliang\Anaconda3\python.exeC:/Users/liliang/PycharmProjects/sjfx/4-l.py
初始数据为:
abcde
rp012332
“145643
278922
7按e、d两列降序插手的结.为:
■abed?
145643
012332
27892;
Processfinishedwithexitcode0
图4-*按列排序示例结果
【结果分析】按e、d两列降序排序时,即先按e列降序排序,再按d列降序排
序。只有当e列的值相同时(都为2),才会再按d列的值排序。。
二、数据排名
在实际工作中,经常需要对数据进行排名,比如对客户的销售金额进行排名,查
看重点客户名单。排名函数在很多数据分析软件都有,如Excel中的rank函数。而在
pandas中,也有类似的rank函数,该函数可以对DataFrame按照某列进行排名,其
一般用法如下:
rank(method,ascending)
其中,method表示重复数值排名的处理方法。average表示整个相同排名组中平
均排名。min表示整个相同排名组中的最小排名。max表示整个相同排名组中的最大
排名。ascending表示排名顺序,True表示升序排列,False表示降序排列,默认是True。
如一组数据6、5、5、2,在降序的情况下,数值6排名第1,数值2排名第4,
重复的数值5占据排名第2和第3。如果按照平均排名,两个数值5都是排名2.5;
如果按照最小排名,两个数值5都是排名2;如果按照最大排名,两个数值5都是排
名3。
在利用rank函数对数据进行排名时,还有一点需要注意,就是在对某一列进行
排名,需要对该列进行去空处理,否则会报错。
示例代码如下:
print("初始数据为:\n”,data)
data['e_rank_avg']=data['e'].rank(method='average',ascending=False)
print("降序排名时按平均排名的结果:\n”,data)
data.drop(labels=,e_rank_avg,,axis=1,inplace=True)
data「e_rank」nin']=data['e*].rank(method=,min,,ascending=False)
print("降序排名时按最小排名的结果:\n”,data)
data.drop(labels='e_rank_min',axis=1,inplace二True)
data「e_rank_max']=data[,e,].rank(method=,max,,ascending=False)
prinl("降序排名时按最大排名的结果:\n”,data)
输出结果如图4・*所示。
Run:4-1
AC:\Users\liliang\Anaconda3\python.exeC:/U$er$/1i1iang/Pychar«Projects/sjfx/4-i.py
初始数惬为:
abcde
■J5012332
145643
278922
二崎后排名时按平均排名的培果:
■abcdee_rank_avg
0123322.5
1456431.0
2789222.5
降序排名时技最小排名的结果:
abcdee_rank_min
O123322.0
145643l.O
2789222.0
降序排名时按最大揖名的结果:
abcdee__rank_max
0123323.0
145643l.O
2789223.6
Processfinishedwithexitcode0
图4-*数据排名示例结果
任务实训
任务1:利用read_excel导入supermarket.xlsx(supermarket.xlsx存放在c:\data路
径中)中的“销售统计”工作表(第1张工作表),导入时将“客户ID”列设为索引,
将导入数据命名为datal,完成:
(1)按索引升序排序,输出前5个数据。
(2)按列进行排序,先按“折扣”列降序排序,再按照“折扣金额”升序排序,
输出前5个数据。
任务1(1)具体代码如下:
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:\data\supermarket.xlsx”,index_col='客户ID')
print("导入的数据为:\n",data1.head())
result_sort_l=datal.sort_index().head()
print。,按索引升序排序的结果为:\n",result_sort_l)
输出结果如图4-*所示。
Run:4-1
C:\Users\liliang\Anaconda3\python.exeC:/Users/liliang/PycharmProjects/sjfx/4-l.py
导入的数据为:
订单10产品ID产品名称客户姓名省城市单价储售金额折扣折扣金额
S三客户ID
=i14485US-2018-1357144办公用-用品-10062717Fiskars剪刀,蓝色西惠浙江杭州6521300.478.0
16165CN-2018-1973789办公用-信封-10094832GlobeWeis搭扣信封,红色许安四川内江6321260.0126.0
10165CN-2018-1973789办公用-装订-10001505Cardinal孔加固材料,回收许安四川内江162320.419.2
■17170US-2018-3017568办公用用品-10003746Kleencut开信刀,工史宋良江苏镇江8043290.4192.0
15730CN-2017-2975416办公用-器具-10003452KitchenAid搅拌机,黑色万兰广东汕头459313770.01377.0
按索引升序排序的结果为:
订单ID产品ID产品名称客户姓名省城市单价数at俏售金额折扣折扣金额
客户10
10165CN-2018-1973789办公用-信封-10004832GlobeWeis搭扣信封,红色将安四川内江6321260.0126.0
1016SCN-2018-1973789办公用-装订-10001S05Cardinal孔加固材料,回收许安四川内江162320.419.2
14485US-2018-1357144办公用-用品-10002717Fiskars剪刀,蓝色B5K淅江杭州6521300.478.0
157珀CN-2017-2975416办公用法三-10005452KitchenAid税挥机,黑色万兰广东汕头459313770.01377.0
17170US-2018-3017568办公用用品-10003746Kleencut开信刀,工业宋良江苏镇江8。43200.4192.0
Processfinishedwithexitcode0
图4・*任务1(1)输出结果
任务1(2)具体代码如下:
result_sort_2=data1.sort_values(by=[*折扣V折扣金额
,J,ascending=[False,TrueJ).head()
print("先按折扣,列降序排序再按照折扣金额,升序排序的结果为:\n\result_sort_2)
输出结果如图3・*所示。
Run:4-1
C:\Users\liliang\Anaconda3\python.exeC:/User$/liliang/Pychar«Projects/sjfx/4-l.py
先按‘折扣’列降序排序再度照•折扣金额•升序探序的结果为:
订单ID产品ID产品名称客户姓名省城市半价梢售金额折扣折扣金饿
5客户ID
16360US-2018-4733722办公用-荚术-10002705Sanford灵光笔,匕色统黎江苏盐城152300.86.0
二21265U$-2017-5956361办公用-美术-10001467Boston速写本,蓝色都濡四川内江4562700.854.0
10165CN-2018-1973789办公用装订10001505Cardinal孔加固材料,回收许安四川内江162320.419.2
■10600US-2017-4150614家具•用具-10001174Tenex灯泡,黑色贾影浙江温岭5321060.463.6
11980US-2617-4297166办公用-系固-10004142ACCOS按仃,整包林丹江宁沈阳4131230.473.8
Processfinishedwithexitcode0
图4-*任务1(2)输出结果
任务2:将任务1的结果datal重新命名为data2,在“销售金额”列降序排序的
情况下,统计“数量”列的排名,“数量”列排名方式为降序,如果“数量”列数据
出现重复,采用最小排名。
具体代码如下:
data2=datal
data2=data2.sort_values(by='销售金额',ascending=False)
data2r数量排名']=data2r数量]rank(method='min',ascending=False)
print("排序和排名处理结果为:\n",dala2.head())
输出结果如图4-*所示。
C:\Users\liliang\Anaconda3\python.exeC:/Users/1i1iang/PycharmProjects/sjfx/4-l.py
撑序和撑名处理也聚力:
订单ID产品10产品名称客户姓名管城市单位段・WtK金舞折扣折扣金金坡・嫌名
用户ID
1982sCN-2617-2828982办公用-器具-10000297HMiltonBeach炉灶,36色苏第山东青岛5126406.012640.018.e
IS98sCN-2018-239689S技术-电话-10064015
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论