Python数据分析与应用 课件 项目4-7 运动员数据透视分析 -大数据分析师岗位分析_第1页
Python数据分析与应用 课件 项目4-7 运动员数据透视分析 -大数据分析师岗位分析_第2页
Python数据分析与应用 课件 项目4-7 运动员数据透视分析 -大数据分析师岗位分析_第3页
Python数据分析与应用 课件 项目4-7 运动员数据透视分析 -大数据分析师岗位分析_第4页
Python数据分析与应用 课件 项目4-7 运动员数据透视分析 -大数据分析师岗位分析_第5页
已阅读5页,还剩152页未读 继续免费阅读

下载本文档

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

文档简介

项目四运动员数据透视分析4.1了解项目需求2008年是个光耀的数字,是中国历史的辉煌里程碑,又是中国走向更加辉煌的奠基,它将成为中华史诗的新的一页,8月的中国如火的热忱诚邀八方来客,广纳四海宾朋,8日晚20时,举世瞩目的第二十九届奥林匹克运动会开幕式在国家体育馆(鸟巢)隆重举行。4.1.1了解项目需求

中国体育代表团639名运动员参加了28个大项、262个小项的比赛,获得51枚金牌、21枚银牌和28枚铜牌,奖牌总数100枚,创4项世界纪录,是奥运历史上首个亚洲国家登上金牌榜首,也是中国参加奥运会历史上的最好成绩,创造了中国竞技体育新的辉煌。4.1.1了解项目需求

本项目所用到的所有数据均来自和鲸社区和天池大数据平台的开源数据,为了便于教学将数据稍微进行了改动。数据集“athlete_events.csv”记录了2008年北京夏季奥运会参赛队员以及获奖信息。4.1.2项目数据分析属性数据类型字段描述athlete_idInteger运动员IDathlete_nameString运动员姓名athlete_sexFloat运动员性别athlete_ageFloat运动员年龄athlete_heightFloat运动员身高athlete_weightString运动员体重athlete_teamString所代表的国家队nocString国家队奥委会代码hold_yearInteger举办年份hold_placeString举办城市sportString项目大类eventString比赛项目goldString金牌数silverString银牌数bronzeString铜牌数4.1.2项目知识图谱4.2.1单列数据分组

分组聚合的第一个步骤是将数据拆分为组,在Pandas中,可以通过groupby()函数将数据按照索引或字段分为若干个组。4.2.1单列数据分组函数形式参数说明df.groupby(by=None,axis=0,

level=None,sort=True)对数据集中的数据按指定属性进行分组。by:用于确定进行分组的属性;axis:表示分组轴的方向。0表示按行分组,1表示按列分组,默认值是0;level:如果某个轴是一个多层索引,则会按照特定级别或多个级别进行分组;sort:是否对分组标签进行排序。接收布尔值,True为排序,False为不排序。

使用groupby()函数进行单列数据分组,只需要在by参数中要指定要进行分组的列,分组后会返回一个groupby对象,该对象实际上并没有进行任何计算,只是包含一些关于分组键的中间数据而已。4.2.1单列数据分组in[]:athlete_info=pd.DataFrame({'athlete_name':['姚明','易建联','朱婷','孙晋芳'],'athlete_sex':['男','男','女','女'],'sport':['男篮','男篮','女排','女排'],'athlete_height':[2.26,2.11,2.06,1.84],'athlete_weight':[140,116,98,72]})groupby_date=athlete_info.groupby(by='athlete_sex')print(groupby_date)

out[]:<Pandas.core.groupby.generic.DataFrameGroupByobjectat0x000002149C856790>

如果要想查看每个分组的具体内容,则可以使用for循环遍历该对象。以下程序在DataFrameGroupBy对象的基础上,使用for循环进行遍历,代码如下所。4.2.1单列数据分组in[]:groupby_date=athlete_info.groupby(by='athlete_sex')foritemingroupby_date:print(item)

out[]:('女',athlete_nameathlete_sexsportathlete_height2朱婷

女排983孙晋芳

女排72)('男',athlete_nameathlete_sexsportathlete_height0姚明

男篮1401易建联

男篮116)

分组后的数据对象类似于Series和DataFrame,是Pandas提供的一种对象,可以使用常用的描述性统计函数对数据进行统计描述。4.2.1单列数据分组函数含义count()分组计算的数目,包含缺失值head()返回每组的前n个值max()返回每组的最大值min()返回每组的最小值mean()返回每组的均值size()返回每组的大小4.2.1单列数据分组

【任务描述】加载“athlete_events.csv”数据集,将数据集中的数据按照国家分组,分组后的数据使用for循环遍历分组后的每个国家的运动员信息;并且输出每个国家派出运动员的数量。in[]:importpandasaspdfile=open(file='athlete_events.csv')data=pd.read_csv(filepath_or_buffer=file,encoding='utf8')groupResult=data.groupby(by='athlete_team')foritemingroupResult:print(item)

out[]:('布隆迪',athlete_idathlete_nameathlete_sex...gold85428543FrancineNiyonizigiye女...086038604JoachimNshimirimana男...0[2rowsx14columns])4.2.2多列数据分组groupby()函数除了可以进行单列数据分组,还可以进行多列数据分组。当需要按照多列进行分组的时候,by参数中需要入一个列表,列表分别指定分组的多个列名,中间以逗号隔开,其基本形式如下。4.2.2多列数据分组df.groupby[by=[‘key1’,’key2’..’keyn’]]in[]:groupby_date=athlete_info.groupby(by=['athlete_sex','sport'],sort=True)forgroup_name,group_dataingroupby_date:print(group_name)

out[]:('女','女排')('男','男篮')4.2.2多列数据分组

【任务描述】对“athlete_events.csv”数据集中的数据首先按赛项、性别进行分组,分组后对数据进行升序排列,最后输出每个赛项参赛的男女运动员数量。in[]:result=data.groupby(by=['sport','athlete_sex'],sort=True)print('每个赛项参赛的男女运动员的数量为:\n',result.size())

out[]:每个赛项参赛的男女运动员的数量为:sportathlete_sex举重

女87

男166乒乓球

女125

男1254.3.1agg聚合数据agg()支持对分组后的数据应用某函数,可以直接作用于DataFrame对象,当内置统计方法无法满足聚合要求时,可以使用Pandas提供的agg()函数进行聚合,该函数的基本形式如下:4.3.1agg聚合数据函数形式参数说明pd.agg(func,axis=0)对分组的结果应用func函数。func:用于表示聚合数据的函数,可以是单个函数,也可以是函数列表;axis:函数作用于轴的方向,0表示将函数应用到每一列,1表示将函数应用到每一行,默认为0。

1.对每一列应用同一个函数

使用agg()函数最简单的方式,就是给该函数的func传递一个函数,这个函数可以是内置的、也可以是自定义的,将该函数应用于所有分组的列。in[]:groupby_sex=athlete_info.groupby(by='athlete_sex').agg(func=np.mean)print('不同性别运动员的平均身高为:\n',groupby_sex)

out[]:不同性别运动员的平均身高为:athlete_heightathlete_weightathlete_sex女1.95085男2.1851284.3.1agg聚合数据

2.对某列数据应用不同的函数

在分组过程中,我们可能不但要计算出每组数据的和,还需要计算出每组数据的均值以及最大最小值,即需要对一列数据使用不同的函数。这时可以将几个函数的名称放到一个列表中,形成键值对序列,在调用agg()函数时作为参数传入即可。in[]:groupby_sex=athlete_info.groupby(by='athlete_sex').agg({'athlete_height':[np.max,np.min,np.mean]})print('不同性别运动员的平均身高为:\n',groupby_sex)

out[]:不同性别运动员的身高信息为:amaxaminmeanathlete_sex女2.061.841.950000男2.261.882.0833334.3.1agg聚合数据

3.对不同的列应用不同的函数

如果希望对不同的列使用不同的函数,则可以在agg()函数中传入一个{“列名”:”函数名”}格式的字典,对每一个列名都使用不同的聚合函数。in[]:weight_height=athlete_info.groupby(by='athlete_sex').agg({'athlete_height':np.max,'athlete_weight':np.min})print(weight_height)

out[]:athlete_heightathlete_weightathlete_sex女2.0672男2.261164.3.1agg聚合数据

【任务描述】提取数据集中远动员性别、运动员年龄和运动员身高、运动员体重四列数据。(1)按性别分组,输出分组后运动员年龄、体重、身高的平均值;(2)按性别分组后,输出分组后参赛运动员年龄的最大值、最小值和均值;(3)按性别分组后,输出年龄的最大值、身高的最小值、体重的平均值。in[]:file=open(file='athlete_events.csv')data=pd.read_csv(filepath_or_buffer=file,encoding='utf8')result=data[['athlete_sex','athlete_age','athlete_height','athlete_weight']]group_sex=result.groupby(by='athlete_sex').agg(np.mean)print('运动员年龄、身高、体重的平均值为:\n',group_sex)

out[]:运动员年龄、身高、体重的平均值为:athlete_ageathlete_heightathlete_weightathlete_sex女24.971271169.51935361.752279男26.443131181.13096078.5424754.3.1agg聚合数据4.3.2apply聚合数据apply函数类似于agg()函数,能够将函数应用于每一列。不同之处在于与agg()相比,apply()函数传入的函数只能作用于整个DataFrame或Series,在对分组后的数据进行聚合操作时,不能对不同的字段应用不同的函数来获取不同的结果:4.3.2apply聚合数据函数形式参数说明df.apply(func,axis=0)对分组的结果应用apply聚合函数。func:用于表示聚合数据的函数,可以是单个函数,也可以是函数列表。axis:函数作用于轴的方向,0表示将函数应用到每一列,1表示将函数应用到每一行,默认为0。

与agg函数相比,apply可给函数添加参数,以下程序首先按照性别分组,然后分别求出身高和体重最大的前两位:4.3.2apply聚合数据in[]:defweight_top(self,col,n=2):returnself.sort_values(by=col)[-n:]height_top2=athlete_info.groupby('athlete_sex').apply(weight_top,col='athlete_height',n=2)weight_top2=athlete_info.groupby('athlete_sex').apply(weight_top,col='athlete_weight',n=2)print('分组后身高的top2为:\n',height_top2)print('分组后体重的top2为:\n',weight_top2)

out[]:分组后身高的top2为:athlete_nameathlete_sexsportathlete_heightathlete_weightathlete_sex女

孙晋芳

女排1.8472

朱婷

女排2.0698

【任务描述】过滤出中国运动员信息,提取金牌、银牌、铜牌三列,统计出中国运动员获得金牌、银牌和铜牌的数量。in[]:resultChina=data[data['athlete_team']=='中国']resultChina=resultChina[['gold','silver','bronze']]applyResult=resultChina.apply(np.sum)print('中国获得奖牌信息为:\n',applyResult)

out[]:中国获得奖牌信息为:

gold74silver53bronze574.3.2apply聚合数据4.3.3transform聚合数据

transform()函数返回的数据集的形状与被分组的数据集的行数是相同的,即保持与原数据集行数相同。4.3.3transform聚合数据函数形式参数说明df.transform(func,axis=0)使用transform函数聚合数据。func:是指定用于处理数据的函数;axis:是指要应用到哪个轴,0代表列,1代表行。transform()函数返回的结果有两种:一种是可以广播的标量值(np.mean),一种是与分组大小相同的结果分组。以下程序中,以性别进行分组,将mean()函数应用到每个分组中,计算每个分组每列的平均值4.3.3transform聚合数据in[]:resultChina=data[data['athlete_team']=='中国'].copy()resultChina['avg_height']=resultChina.groupby(by='sport')['athlete_height'].transform(np.mean)resultChina['diff_height']=resultChina.loc[:,'athlete_height']-resultChina.loc[:,'avg_height']outputInfo=resultChina[['athlete_name','sport','athlete_height','avg_height','diff_height']]print('运动员身高与该项目大类平均身高之差为:\n',outputInfo.head())

out[]:运动员身高与该项目大类平均身高之差为:athlete_namesportathlete_heightavg_heightdiff_height187LongQingquan举重150162.000000-12.000000AoChangrong曲棍球173171.4242421.575758……………….

【任务描述】过滤出中国运动员信息,按照按项目大类进行分组,统计每组运动的身高与该大类项目平均身高之差,输出运动员姓名、身高、项目大类、平均身高与身高之差。in[]:resultChina=data[data['athlete_team']=='中国'].copy()resultChina['avg_height']=resultChina.groupby(by='sport')['athlete_height'].transform(np.mean)resultChina['diff_height']=resultChina.loc[:,'athlete_height']-resultChina.loc[:,'avg_height']outputInfo=resultChina[['athlete_name','sport','athlete_height','avg_height','diff_height']]print('运动员身高与该项目大类平均身高之差为:\n',outputInfo.head())

out[]:运动员身高与该项目大类平均身高之差为:athlete_namesportathlete_heightavg_heightdiff_height187LongQingquan举重150162.000000-12.000000466AoChangrong曲棍球173171.4242421.575758670BaiXue田径165175.739130-10.7391304.3.3transform聚合数据4.4.1pivot_table透视数据透视表(pivottable)是各种电子表格程序和其他数据分析软件中一种常见的数据汇总工具,它根据一个或多个键对数据进行聚合,并根据行和列上的分组键将数据分配到各个矩形区域中。函数形式参数说明pd.pivot_table(data,index=None,columns=None,values=None,aggfunc,fill_value,dropna)对DataFrame数据中的数据进行透视。data:要进行透视的DataFrame数据;index:数据透视表的行索引,从原始数据的列中筛选;columns:数据透视表的列索引,从原始数据的列中筛选;values:指定进行统计计算的列;aggfunc:指定进行统计计算的类型;fill_value:默认None,可设定缺省值;dropna:默认True,如果列的所有值都是NaN,将被删除;False则保留。4.4.1pivot_table透视数据以下程序中,使用pivot_table()函数创建透视表,行索引为性别与性别,列索引为升高和体重,代码如下所示。4.4.1pivot_table透视数据in[]:result=pd.pivot_table(data=athlete_info,index=['athlete_sex','athlete_name'],values=['athlete_height(m)','weight(kg)'],)print(result)

out[]:athlete_height(m)weight(kg)athlete_sexathlete_name女

郑海霞2.0698

隋菲菲1.8472男

刘翔1.8874

姚明2.26140

易建联2.11116

【任务描述】创建数据透视表,对中国运动员每个项目大类参赛的男女运动员分别进行统计输出;对中国运动员每个项目大类参赛的男女运动员平均年龄、获奖金牌数以及最大体重进行透视输出。in[]:resultChina=data[data['athlete_team']=='中国'].copy()resultChina['avg_height']=resultChina.groupby(by='sport')['athlete_height'].transform(np.mean)resultChina['diff_height']=resultChina.loc[:,'athlete_height']-resultChina.loc[:,'avg_height']outputInfo=resultChina[['athlete_name','sport','athlete_height','avg_height','diff_height']]print('运动员身高与该项目大类平均身高之差为:\n',outputInfo.head())

out[]:运动员身高与该项目大类平均身高之差为:athlete_namesportathlete_heightavg_heightdiff_height187LongQingquan举重150162.000000-12.000000466AoChangrong曲棍球173171.4242421.575758670BaiXue田径165175.739130-10.7391304.4.1pivot_table透视数据4.4.2crosstab透视数据如果想快速地统计分组数据的出现频率,则可以使用crosstab()生成一类特殊的透视表,将两个或多个列中的不重复的元素组成一个新的DataFrame。除了可以统计频率外,crosstab()函数也能进行其他类型的汇总统计。4.4.2crosstab透视数据函数形式参数说明pd.crosstab(index=None,columns=None,values,rownames,colnames,aggfunc)对DataFrame数据创建交叉表。index:用于行分组的值;columns:用于列分组的值;values:指定进行统计计算的列;rownames:行分组的键名;colnames:列分组的键名;aggfunc:指定进行统计计算的类型。4.4.2crosstab透视数据in[]:crosstable=pd.crosstab(index=chinaData['sport'],columns=chinaData['athlete_sex'])print('每个项目大类参赛的男女运动员数目为:\n',crosstable.head())

out[]:每个项目大类参赛的男女运动员数目为:athlete_sex女

男sport举重46乒乓球66体操2735击剑1616垒球150

【任务描述】使用交叉透视输出每个项目大类参赛的男女运动员数目。4.5.1项目背景中国全运会是国内水平最高、运动规模最大的运动会,自1959年首届全运会举办以来,到2021年一共举办过十四届全国运动会。该项赛事每4年举办一次,所涵盖的比赛项目繁多,其目的是为国家奥运会战略做储备力量,一方面为新人提供锻炼平台,另一方面也为国家选拔人才。4.5.1项目背景4.5.1项目背景本项目数据集为中国全运会参赛运动员的部分信息,其数据集的结构见表。4.5.1项目背景4.5.1项目背景字段名称字段类型字段说明username字符串姓名sex字符串性别birth字符串出生年月age整型年龄height整型身高weight整型体重sport字符串参赛项目provice字符串代表省份

本实训设计的目的在于,结合本章所学的分组、聚合以及数据透视,将统计出运动员的信息,然后进行分类与透视,筛选出所有篮球运动员的基本信息4.5.1项目背景4.5.1实训要求(1)读取数据集,将数据集中字段名称修改为字段说明中的中文名称。(2)统计篮球男女运动员的年龄、身高、体重的平均值。(3)统计篮球男运动员的年龄、身高、体重的极差。(4)计算每个运动员的体质指数(BMI)。(5)输出体质指数异常的篮球男运动员的数量。(6)按省份、性别透视每个省参赛运动员数量。4.5.2功能实现4.5.2功能实现in[]:filepath=open('全运会运动员信息.csv')data=pd.read_csv(filepath_or_buffer=filepath)print('修改前数据结构属性为:\n',data.dtypes)data=data.rename(columns={'username':'姓名','sex':'性别','birth':'出生年月','age':'年龄','height':'身高','weight':'体重','sport':'参赛项目','provice':'代表省份'})print('修改后数据结构属性为:\n',data.dtypes)

out[]:修改前数据结构属性为:修改后数据结构属性为:usernameobject姓名objectsexobject性别objectbirthobject出生年月objectageint64年龄int641.数据读取与属性修改

由于全运会运动员数据全部保存在csv文件中,所以我们需要使用read_csv()函数读取其中的数据,并转换为Dataframe对象,调用该对象的rename()函数将属性重命名。4.5.2功能实现in[]:importnumpyasnpdata_group=data.groupby(by='参赛项目')data_basketball=dict([itemforitemindata_group])['篮球']print('提取的篮球项目信息为:\n',data_basketball.head(3))groupby_sex=data_basketball.groupby(by='性别')mean_info=groupby_sex.agg(np.mean)print('篮球男女运动员年龄、身高、体重均值为:\n',mean_info)

out[]:提取的篮球项目信息为:

姓名

性别

出生年月

年龄

身高

体重

参赛项目

代表省份0陈楠

女1983年3519790篮球

山东省2陈晓佳

女1988年3018070篮球

江苏省2.统计篮球男女运动员年龄、身高、体重的均值

统计篮球男女运动员数值数据的均值,其基本思路是首先将数据集中的数据按项目进行分组,取出篮球运动员信息,在此基础上按性别分组,计算均值输出即可。in[]:importnumpyasnpdata_group=data.groupby(by='参赛项目')data_basketball=dict([itemforitemindata_group])['篮球']print('提取的篮球项目信息为:\n',data_basketball.head(3))groupby_sex=data_basketball.groupby(by='性别')mean_info=groupby_sex.agg(np.mean)print('篮球男女运动员年龄、身高、体重均值为:\n',mean_info)

out[]:提取的篮球项目信息为:

姓名

性别

出生年月

年龄

身高

体重

参赛项目

代表省份0陈楠

女1983年3519790篮球

山东省2陈晓佳

女1988年3018070篮球

江苏省4.5.2功能实现in[]:basketball_copy=data_basketball.copy()basketball_copy['体质指数']=0print('体质指数计算前的数据为:\n',basketball_copy.head(2))defouter(num):defath_bmi(sum_bmi):weight=data_basketball['体重']height=data_basketball['身高']sum_bmi=weight/(height/100)**2returnnum+sum_bmireturnath_bmibasketball_copy['体质指数']=basketball_copy[['体质指数']].apply(outer(basketball_copy['体质指数'])).round(1)print('体质指数计算hou的数据为:\n',basketball_copy.head(2))

out[]:4.计算篮球运动员的体质指数BMI

目前体质指数(BMI)是国际上通用的衡量人体胖瘦程度以及是否健康的一个标准,其计算公式如下所示:体质指数(BMI)=体重(kg)÷身高(m)的平方。谢谢项目五经济运行数据可视化分析1合并新冠疫情数据理解项目需求2清洗新冠疫情数据3标准化新冠疫情数据4转换新冠疫情数据5实训演练:新冠在线学习数据处理分析65.1理解项目需求2001年11月10日,在卡塔尔首都多哈举行的世界贸易组织第四届部长级会议,审议通过了中国加入世界贸易组织的法律文件,12月11日,中国正式加入世界贸易组织,成为其第143个成员,标志着我国外开放事业进入一个新的阶段。5.1理解项目需求

2001年GDP为9.6万亿人民币,2020年达到101.6万亿人民币,2021年超过114.4万亿人民币,GDP增幅超过10倍。进入新时代,我国社会主要矛盾发生转化,中国经济由高速增长阶段转向高质量发展阶段,向第二个百年奋斗目标进军的新发展阶段。5.1理解项目需求本项目所有数据来自国家统计局网站平台的开源数据,为了便于教学稍微进行了改动。数据集“国民经济运行数据.xls”记录了2010年以来国民经济运行情况:5.1理解项目需求属性数据类型字段描述时间字符串统计时间国内生产总值浮点型国内生产总值(亿元)人均国内生产总值浮点型人均国内生产总值(元)第一产业浮点型第一产业增加值(亿元)第二产业浮点型第二产业增加值(亿元)第三产业浮点型第三产业增加值(亿元)农林牧渔业浮点型农林牧渔业增加值(亿元)工业浮点型工业增加值(亿元)建筑业浮点型建筑业增加值(亿元)批发和零售业浮点型批发和零售业增加值(亿元)交通运输、仓储和邮政业浮点型交通运输、仓储和邮政业增加值(亿元)住宿和餐饮业浮点型住宿和餐饮业增加值(亿元)金融业浮点型金融业增加值(亿元)房地产业增浮点型房地产业增加值(亿元)其他行业浮点型其他行业增加值(亿元)5.1理解项目需求2理解项目需求合并新冠疫情数据1清洗新冠疫情数据3标准化新冠疫情数据4转换新冠疫情数据5实训演练:新冠在线学习数据处理分析65.2.1图形绘制流程要想使用Matplotlib绘制图形,首先需要导入绘制图形的模块pyplot,该模块提供了绘制常见图形的函数,用于绘制简单或复杂图形。导入模块的具体代码如下:5.2经济数据绘制与参数设置5.2.1图形绘制流程importmatploltlib.pyplotasplt在pyplot模块中,默认拥有一个figure()函数,该函数可以创建一张空白的画布,用于容纳各种图表组件,如图例、标题、坐标等。该函数的基本形式如下。5.2经济数据绘制与参数设置5.2.1图形绘制流程:figure()函数创建画布函数形式参数说明plt.figure(num=None,

figsize=None,

facecolor=None,

edgecolor=None)创建一张空白画布。num:图形的编号或名称,数字代表编号,字符串表示名称;figsize:设置画布的尺寸,宽度、高度都以英寸为单位;facecolor:设置画布的背景颜色;

edgecolor:用于显示边框颜色。in[]:importmatplotlib.pyplotaspltimportnumpyasnpdata=np.arange(100,200)plt.figure()plt.plot(data)plt.show()

建完画布后,可以为图形添加一些标签信息,比如标题、坐标轴名称、坐标轴刻度、图形标题等。pyplot模块中提供了为图形添加标签的函数。5.2经济数据绘制与参数设置5.2.1图形绘制流程:添加画布内容函数形式参数说明plt.title()设置当前图形的标题plt.xlabel()设置当前图形x轴的名称plt.ylabel()设置当前图形y轴的标题plt.xticks()设置x轴刻度的数目与取值plt.yticks()设置y轴刻度的数目与取值plt.xlim()设置x轴的取值范围,只能使用数字区间plt.ylim()设置y轴的取值范围,只能使用数字区间plt.legend()设置图形图例这些函数之间是并列的关系,没有先后的顺序,我们既可以先绘制图形,也可以先添加标签。值得一提的是,图例的添加只有在绘制图形完成之后才能进行。5.2经济数据绘制与参数设置5.2.1图形绘制流程:添加画布内容in[]:data=np.arange(0,1,0.01)plt.title('lines')#添加标题plt.xlabel('x')

#添加x轴的名称plt.ylabel('y')#添加y轴的名称plt.xlim((0,1))#确定x轴范围plt.ylim((0,1))#确定y轴范围plt.xticks([0,0.2,0.4,0.6,0.8,1])#规定x轴刻度plt.yticks([0,0.2,0.4,0.6,0.8,1])#确定y轴刻度plt.plot(data,data**2)#添加y=x^2曲线plt.plot(data,data**4)#添加y=x^4曲线plt.legend(['y=x^2','y=x^4'])plt.show()

Matplotlib绘图时,如果设置图表的标题中有中文字符,则会出现乱码,原因是库的配置信息里没有中文字符相关的信息,我们可以在程序中加入如下代码:5.2经济数据绘制与参数设置5.2.1图形绘制流程:显示中文in[]:plt.rcParams["font.family"]="SimHei"plt.rcParams['axes.unicode_minus']=Falsex_data=np.arange(0,7)y_data=[50,35,41,24,80,18,39]plt.plot(x_data,y_data)plt.title('活跃度')plt.xlabel('登录时间')plt.ylabel('登录次数')x_ticks=['星期一','星期二','星期三','星期四','星期五','星期六','星期日']plt.xticks(x_data,x_ticks)plt.show()plt.rcParams["font.family"]="SimHei“plt.rcParams['axes.unicode_minus']=False

【任务描述】近五年人均国民生产总值(单位:元)如下表所示,请绘制图表显示每年的人均国民生产总值。其中标题为“2018-2022年人均国民生产总值(元)”,X轴的名称为:“年份”,Y轴的名称为“人均国民总值(元)。5.2经济数据绘制与参数设置5.2.1图形绘制流程2018年2019年2020年2021年2022年6553470078718288137085698

【任务描述】近五年人均国民生产总值(单位:元)如下表所示,请绘制图表显示每年的人均国民生产总值。其中标题为“2018-2022年人均国民生产总值(元)”,X轴的名称为:“年份”,Y轴的名称为“人均国民总值(元)。5.2经济数据绘制与参数设置5.2.1图形绘制流程in[]:plt.rcParams["font.family"]="SimHei"plt.rcParams['axes.unicode_minus']=Falsex_data=np.arange(0,5)y_data=[65534,70078,71828,81370,85698]x_ticks=(['2018年','2019年','2020年','2021年','2022年'])plt.title('2028-2022年人均国民生产总值(元)')plt.xlabel('年份')plt.ylabel('人均国民总值(元)')plt.xticks(x_data,x_ticks)plt.plot(x_data,y_data)plt.show()

5.2.2创建子图有时希望同一个画布中绘制多个图形,而不是在多个画布中创建多个图形。Figure允许在画布上划分多个绘图区域,每个绘图区域都含有Axes对象,它有自己的坐标系统,称为子图。5.2经济数据绘制与参数设置5.2.2创建子图要想在画布上创建多个子图,可以通过subplot()函数实现,该函数的基本形式如下表所示。5.2经济数据绘制与参数设置5.2.2创建子图:subplot()函数创建子图函数形式参数说明plt.subplot(nrows,ncols,index)将整个画布划分为nrows*ncols的矩形区域。nrows:表示矩阵区域的行数;ncols:表示矩阵区域的列数;index:表示当前矩阵区域的索引。in[]:data=np.arange(start=1,stop=11,step=1)plt.subplot(2,2,1)plt.plot(data,data)plt.subplot(222)plt.plot(data,-data)plt.subplot(2,1,2)plt.plot(data,data**2)plt.show()如果希望一次性创建多个子图,则可以使用subplots()实现,该函数可以创建多个子图,其函数形式如下表所示:5.2经济数据绘制与参数设置5.2.2创建子图:subplots()函数创建子图函数形式参数说明plt.subplots(nrows,ncols)创建多个子图对象。nrows:表示矩阵区域的行数。ncols:表示矩阵区域的列数。in[]:data=np.arange(start=1,stop=11,step=1)fig,axes=plt.subplots(2,2)ax1=axes[0,0]ax2=axes[0,1]ax3=axes[1,0]ax4=axes[1,1]ax1.plot(data,data)ax2.plot(data,-data)ax3.plot(data,data**2)ax4.plot(data,1/data)plt.show()

【任务描述】近五年国民生产总值(单位:亿元)、人均生产总值(单位:元)如下表所示,请使用子图分别绘制国民生产总值和人均生产总值情况。。5.2经济数据绘制与参数设置5.2.2创建子图年份2018年2019年2020年2021年2022年国民生产总值919281986515101356711492371210207人均生产总值6553470078718288137085698

【任务描述】近五年国民生产总值(单位:亿元)、人均生产总值(单位:元)如下表所示,请使用子图分别绘制国民生产总值和人均生产总值情况。。5.2经济数据绘制与参数设置5.2.2创建子图in[]:x_data=np.arange(0,5)x_ticks=(['2018年','2019年','2020年','2021年','2022年'])plt.subplot(1,2,1)y_data=[919281,986515,1013567,1149237,1210207]plt.plot(x_data,y_data)plt.xticks(x_data,x_ticks)plt.title('2018-2022国民经济生产总值(亿元)')plt.subplot(1,2,2)y_data=[65534,70078,71828,81370,85698]plt.plot(x_data,y_data)plt.xticks(x_data,x_ticks)plt.title('2018-2022人均国民生产总值(元)')plt.show()2清洗新冠疫情数据清洗新冠疫情数据1标准化新冠疫情数据3转换新冠疫情数据4实训演练:新冠在线学习数据处理分析55.3.1绘制折线图折线图是用直线段将各个数据点连接起来而组成的图形,以折线的方式显示数据的变化趋势,可以显示随时间变化的连续数据,适用于显示在相等时间间隔下数据的变化趋势。5.3经济数据特征间分布分析5.3.1绘制折线图函数形式参数说明plt.plot(x,y,color,linestyle,marker)绘制指定样式的折线图。x,y:表示x轴和y轴的对应数据;color:表示线条颜色;

linestyle:表示线条的类型,默认为“-”;marker:表示线条中点的类型,默认为None缩写代表的颜色缩写代表的颜色b蓝色m品红g绿色y黄色r红色k黑色c青色w白色线条值说明线条值类型‘-’实线‘-.’短点相间线‘--’长虚线‘:’短虚线

marker表示线条中点的类型,其参数常见的取值如下表所示。5.3经济数据特征间分布分析5.3.1绘制折线图标记值说明标记值说明‘o’实心圆圈‘d’菱形‘p’五边形‘h’六边形‘+’加号‘.’点‘*’星形‘v’三角形in[]:ata=np.arange(1,3,0.3)plt.plot(data,color='c',marker='x',linestyle='--')plt.plot(data+1,color='m',marker='o',linestyle=':')plt.plot(data+2,color='k',marker='p',linestyle='-.')plt.show()

【任务描述】读取“国民经济运行数据.xls”文件,使用不同样式的折折线图分别可视化2000-2022年“国内生产总值”和“财政收入”两列数据。5.3经济数据特征间分布分析in[]:data=pd.read_excel(io='国民经济运行数据.xls',sheet_name='年度数据')plt.figure(figsize=(8,7))plt.title('2000-2022年国内生产总值及财政收入')plt.xlabel("年份")plt.ylabel('生产总值')plt.plot(data.iloc[:,0],data.iloc[:,2],color='r',linestyle='--',marker='o')plt.plot(data.iloc[:,0],data.iloc[:,3],color='b',linestyle='-',marker='*')plt.xticks(range(1,24,3),data.iloc[range(1,24,3),1])plt.legend(['国内生产总值(亿元)','人均国内生产总值(元)'])plt.show()

5.3.1绘制折线图5.3.2绘制散点图散点图又称为散点分布图,是以一个特征为横坐标、另一个特征为纵坐标,通过散点的疏密程度和变化趋势来表示两个特征的数量关系。5.3经济数据特征间分布分析5.3.2绘制散点图函数形式参数说明plt.scatter(x,y,s,c,marker)创建指定格式的散点图。x,y:表示x轴和y轴对应的数据;s:表示点的大小,若传入一组数据,则表示每个点的大小;c:表示点的颜色,若传入一组数据,则表示每个点的颜色;marker:表示绘制的点的类型。

【任务描述】读取“国民经济运行数据.xls”文件,使用散点图分别可视化2000-2022年“第一产业”、“第二产业”和“第三产业”生产总值。5.3经济数据特征间分布分析in[]:data=pd.read_excel(io='国民经济运行数据.xls',sheet_name='年度数据')plt.title('2000-2022年不同产业生产总值')plt.xlabel("年份")plt.ylabel('产值(亿元)')plt.scatter(data.iloc[:,0],data.iloc[:,6],marker='o',c='r')plt.scatter(data.iloc[:,0],data.iloc[:,7],marker='D',c='y')plt.scatter(data.iloc[:,0],data.iloc[:,8],marker='v',c='b')plt.xticks(range(1,21,3),data.iloc[range(1,21,3),1])plt.legend(['第一产业','第二产业','第三产业'])plt.show()

5.3.2绘制散点图4分析碳排放数据结构索引与排序碳排放数据1读写碳排放数据文件2操作碳排放数据内容3统计与描述碳排放数据5实训:环境监测数据统计与分析65.4.1绘制柱状图柱状图也称为条形图,是一种把连续数据画成数据条的表现形式,用宽度相同的条形的高度或长短来表示数据多少的图形。柱状图可以分为垂直柱状图和水平柱状图。5.4经济数据特征内分布分析5.4.1绘制柱状图函数形式参数说明plt.bar(x,height,width=0.8,bottom=None,color=None

)绘制指定样式的垂直柱状图。x:表示x轴的数据;height:表示y轴的数据;bottom:表示y轴边界的起点,用于设置堆叠柱状图;color:表示每一项的颜色,接收颜色字符串或数组。in[]:x=np.arange(4)y1,y2=np.random.randint(low=1,high=31,size=(2,4))width=0.25plt.bar(x=x,height=y1,width=width,color='r')plt.bar(x=x+width,height=y2,width=width,color='g')plt.show()有些时候我们需要绘制水平柱状图,可以理解为正常柱状图旋转了90度,pyplot模块中提供了绘制水平柱状图的barh()函数,其基本的语法格式如下:5.4经济数据特征内分布分析5.4.1绘制柱状图函数形式参数说明plt.barh(y,width,height=0.8,left=None,color)绘制指定样式的水平柱状图。y:表示y轴的数据width:表示平柱状图的长度;height:表示水平柱状图的高度left:表示x轴边界的起点,用于设置堆叠柱状图。color:表示每一项的颜色,接收颜色字符串或数组。in[]:y=np.arange(4)x1,x2=np.random.randint(low=1,high=31,size=(2,4))height=0.25plt.barh(y=y,height=height,width=x1,color='c')plt.barh(y=y+height,height=height,width=x2,color='b')plt.show()

【任务描述】读取“国民经济运行数据.xls”文件,使用水平和垂直柱状图分别可视化2022年“农林牧渔业”、“工业”、“建筑业”、“批发和零售业”、“交通运输、仓储和邮政业”、“住宿和餐饮业”、“金融业”、“房地产业”、“其他行业”的生产总值。。5.4经济数据特征内分布分析in[]:data=pd.read_excel(io='国民经济运行数据.xls',sheet_name='年度数据')label=[‘农林’,‘工业’,‘建筑业’,'批发业','交通业','住宿业','金融业','房地产业','其他行业']plt.title('2022年度不同产业产值对比(水平柱状图)')plt.subplot(1,2,1)plt.bar(x=range(9),height=data.iloc[-1,8:17],width=0.5)plt.xticks(range(9),label)plt.subplot(1,2,2)plt.barh(y=range(9),width=data.iloc[-1,8:17],height=0.5)plt.yticks(range(9),label)plt.show()5.4.1绘制柱状图5.4.2绘制饼图柱状图也称为条形图,是一种把连续数据画成数据条的表现形式,用宽度相同的条形的高度或长短来表示数据多少的图形。柱状图可以分为垂直柱状图和水平柱状图。5.4经济数据特征内分布分析5.4.2绘制饼图函数形式参数说明plt.bar(x,height,width=0.8,bottom=None,color=None

)绘制指定样式的垂直柱状图。x:表示x轴的数据;height:表示y轴的数据;bottom:表示y轴边界的起点,用于设置堆叠柱状图;color:表示每一项的颜色,接收颜色字符串或数组。in[]:x=np.arange(4)y1,y2=np.random.randint(low=1,high=31,size=(2,4))width=0.25plt.bar(x=x,height=y1,width=width,color='r')plt.bar(x=x+width,height=y2,width=width,color='g')plt.show()饼图是将各项的大小与各项总和的比例显示在一张“饼”中,以“饼”的大小来确定每一项的占比。5.4经济数据特征内分布分析5.4.2绘制饼图函数形式参数说明plt.pie(x,explode=None,labels=None,colors=Noneautopct=None)绘制指定样式的饼图。x:表示用于绘制饼图的数据;explode:表示某一项离开中心距离;labels:表示每一项的名称;color:表示每一项的颜色,接收颜色字符串或数组;autopct:表示数值的显示样式。

in[]:languages=['JavaScript','HTML/CSS','SQL','Python','Java']popularity=[59219,55466,47544,36443,35917]plt.pie(popularity,labels=languages,autopct='%1.1f%%',counterclock=False,startangle=90,explode=[0,0,0.1,0,0])plt.show()

【任务描述】读取“国民经济运行数据.xls”文件,使用饼图可视化2022年“第一产业”、“第二产业”、“第三产业”的产值所占比例。5.4经济数据特征内分布分析in[]:data=pd.read_excel(io='国民经济运行数据.xls',sheet_name='年度数据')label=['第一产业产值','第二产业产值','第三产业产值']plt.subplot(1,2,1)plt.pie(x=data.iloc[-1,5:8],labels=label,autopct='%1.2f%%')

温馨提示

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

评论

0/150

提交评论