Python数据分析与可视化(第2版) 教案 5.4 绘制折线图_第1页
Python数据分析与可视化(第2版) 教案 5.4 绘制折线图_第2页
Python数据分析与可视化(第2版) 教案 5.4 绘制折线图_第3页
Python数据分析与可视化(第2版) 教案 5.4 绘制折线图_第4页
Python数据分析与可视化(第2版) 教案 5.4 绘制折线图_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

课题5.4绘制折线图课型讲练授课班级大数据授课时数2教学目标1.能够根据数据绘制折线图。2.理解辅助线的添加方法。教学重点1.能够根据数据绘制折线图。教学难点1.理解辅助线的添加方法。学情分析绘制折线图往往需要利用之前学过的一些数据分析的方法,比如利用分组统计的结果绘制图形,所以数据分析对于本次课的学习至关重要,可以略微复习之前学过的数据分析方法。折线图是一种将数据点按照顺序连接起来的图形,可以看作将散点图按照x轴顺序连接起来的图形。折线图的主要功能是查看因变量y随着自变量x改变的趋势,比较适合用于显示时间而变化的连续数据,同时还可以看出数量的差异和增长趋势的变化。一、绘制折线图pyplot模块中绘制折线图的函数plot,其一般用法为:plt.plot(x,y,linestyle)其中,x表示x轴对应的数据。y表示y轴对应的数据。linestyle表示线条样式,linestyle可取’-’、’--’、’-.’、’:’四种,默认为“-”。示例代码如下:importpandasaspdimportmatplotlib.pyplotaspltdict={'a':['A','B','C','D','E'],'b':[90,85,90,80,95],'c':[60,65,70,65,75]}data=pd.DataFrame(dict)print(data)x=data['a']y=data['b']plt.plot(x,y,linestyle='-')plt.show()输出结果1如图5-*所示。图5-*绘制折线图示例结果1输出结果2如图5-*所示。图5-*绘制折线图示例结果2二、添加折线图辅助线在绘制柱形图或条形图时,一般可采用某个字段的平均值作为辅助线,平均值可以通过计算得到,添加起来较为简单。而在折线图中,往往需要通过辅助线标注最高点或最低点,其位置并不固定,所以首先需要通过方法确定最高点或最低点的横坐标与纵坐标,才能添加折线图的辅助线。1.确定最值的索引位置确定最值的索引位置,首先需要算出最大值或最小值,然后得到该值对应得索引位置,以Series的最大值为例,其一般方法为:s=Seriesmax=s.max()max_num=s.loc[s==max].index其中,利用Series.max()可以算出Series中的最大值,利用s.loc[s==max].index得到最大值数据对应的索引编号,如果最大值出现多次,其对应的索引编号就有多个,这些索引编号就构成一个列表。index返回的是符合条件(最大值)对应索引构成的列表,利用index[0]可以取出列表中的第一个元素,即最大值第一次出现对应的索引编号。示例代码如下:s=pd.Series([12,13,15,11,14])print(s)max=s.max()max_num=s.loc[s==max].index[0]print("s中最大值对应的索引编号为:%d,最大值为:%d"%(max_num,s[max_num]))min=s.min()min_num=s.loc[s==min].index[0]print("s中最小值对应的索引编号为:%d,最小值为:%d"%(min_num,s[min_num]))输出结果1如图5-*所示。图5-*确定最值的索引位置示例结果2.根据最值添加折线图辅助线示例代码如下:x=s.indexy=splt.plot(x,y)max=s.max()max_num=s.loc[s==max].index[0]plt.axvline(max_num,color='r',linestyle=':')plt.axhline(s[max_num],color='r',linestyle=':')plt.show()输出结果1如图5-*所示。图5-*添加折线图辅助线示例结果【结果分析】在绘制折线图x轴和y轴的辅助线时,还可以通过其中的参数最大显示比例以保证辅助线的添加效果更好,如添加x轴辅助线时,可以利用plt.axvline(ymax)中的参数ymax来控制x轴辅助线的y轴方向的最大显示比例,如plt.axvline(ymax=0.5)表示x轴辅助线在y轴方向的最大显示比例为50%。任务实训任务1:利用read_excel导入meal.xlsx(meal.xlsx存放在c:\data路径中),导入数据命名为data1,完成:(1)查看data1的前5行。(2)从“开始时间”列中提取出星期名称,并存放在新列“星期”中。(3)根据星期进行分组,并计算不同星期的消费金额的平均值,将分组统计结果按照'Monday'、'Tuesday'、'Wednesday'、'Thursday'、'Friday'、'Saturday'、'Sunday'的顺序排列,将命名为data1_group,并查看结果。(4)根据(3)的结果,绘制不同星期平均消费金额的折线图,折线图的线型为直线,颜色为蓝色,标题为“不同星期平均消费金额折线图”。任务1(1)具体代码如下:data1=pd.read_excel("c:\data\meal.xls")pd.set_option('display.width',None)pd.set_option('display.unicode.east_asian_width',True)print(data1.head())输出结果如图5-*所示。图5-*任务1(1)输出结果任务1(2)具体代码如下:data1['weekday']=data1['开始时间'].dt.weekday_nameprint(data1.head())输出结果如图5-*所示。图5-*任务1(2)输出结果任务1(3)具体代码如下:group=data1.groupby('weekday')['消费金额'].mean()data1_group=round(data1_group,2)group=group.reindex(['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'])print(group)输出结果如图5-*所示。图5-*任务1(3)输出结果任务1(4)具体代码如下:plt.rcParams['figure.figsize']=(8,6)plt.rcParams['font.sans-serif']=['SimHei']x=data1_group.indexy=data1_groupplt.plot(x,y,linestyle='-',color='b')plt.title("不同星期平均消费金额折线图",size=15)plt.show()输出结果如图5-*所示。图5-*任务1(4)输出结果任务2:根据任务1得到的结果data1_group,重新命名为result,并完成:(1)绘制不同星期平均消费金额的折线图,折线图的线型为直线,颜色为蓝色,标题为“不同星期平均消费金额折线图”。(2)根据折线的最高点,添加相应x轴和y轴的辅助线。(ymax和xmax的值分别设为0.95和0.8)任务2(1)具体代码如下:importnumpyasnpresult=data1_groupplt.rcParams['figure.figsize']=(8,6)plt.rcParams['font.sans-serif']=['SimHei']x=result.indexy=resultplt.plot(x,y,linestyle='-',color='b')plt.title("不同星期平均消费金额折线图",size=15)任务2(2)具体代码如下:max=result.max()max_num=result.loc[result==max].index[0]plt.axvline(max_num,color='r',linestyle=':',ymax=0.95)plt.axhline(result[max_num],color='r',linestyle=':',xmax=0.8)plt.show()输出结果1如图5-*所示。图5-*任务2输出结果巩固训练利用r

温馨提示

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

最新文档

评论

0/150

提交评论