第 4 章 Python 数据可视化之 matplotlib 库 和 pyplot 库——Python办公自动化
当前位置:首页 > python基础
第 4 章 Python 数据可视化之 matplotlib 库 和 pyplot 库——Python办公自动化

中中

2022/8/7 21:47:01

       图表是最能直观展示数据所汇总的结果,特别是在大数据时代,庞大的数据量让我们目不暇接。如股票市场就是最典型的案例,如果没有图表的展示,巨量的大数据一定会让我们无所适从,通过图表的描述,我们才能得以从浩瀚的数据海洋中解脱出来,一目了然的了解市场整体的走向,从而影响到我们的判断及动作。可以说,图表是大数据直观展示最为重要的一环。图表具有多样性,可以根据不同来源的数据给出不同的展示方式。

      本章中主要讨论由电子表格 Excel 承载的数据所产生的图表。其中包括常用的柱状图、饼图、拆线图、散点图、直方图、密度图、面积图、环形图、雷达图等。通过以不同图表对数据的展示,可以从不同的角度了解分析大量数据里隐含的规律性,从而提高对事物的了解程度,并可作为各种预测与决策的依据。


实例01绘制条形图


题目:将d:盘abc文件夹中的“例题锦集.xlsx”文件打开,同时打开其中的“饮料全表”工作表,以“品名”和“单价”建立条形图。

											
  1. import matplotlib.pyplot as plt
  2. import pandas as pd
  3. import numpy as np
  4. plt.rcParams['font.sans-serif']=['SimHei']      #设置默认字体
  5. plt.rcParams['axes.unicode_minus']=False        #正常显示负号
  6. stu=pd.read_excel('d:/abc/例题锦集.xlsx',sheet_name="饮料全表")
  7. fig,axes=plt.subplots(2,1)
  8. data=pd.Series(list(stu['单价']),index=list(stu['品名']))
  9. data.plot.bar(ax=axes[0],color='k',alpha=0.7,rot=0)
  10. data.plot.barh(ax=axes[1],color='k',alpha=0.7)
  11. plt.show()



教学视频:

/Upload/image/20220807085522_6858.mp4



实例02绘制散点图


题目:将d:盘abc文件夹中的“例题锦集.xlsx”文件打开,同时打开其中的“销售额度”工作表,以“月份”为X轴,“销售额”为Y轴建立散点图。

											
  1. import pandas as pd
  2. import matplotlib .pyplot as plt
  3. plt.rcParams['font.sans-serif']=['SimHei']      #设置默认字体
  4. plt.rcParams['axes.unicode_minus']=False        #正常显示负号
  5. stu=pd.read_excel('D:/abc/例题锦集.xlsx',sheet_name="销售额度")
  6. stu.plot.scatter(x='月份',y='销售额')    #建立散点图
  7. plt.show()



教学视频:

/Upload/image/20220807085821_6498.mp4



实例03绘制普通柱状图


题目:将d:盘abc文件夹中的“例题锦集.xlsx”文件打开,同时打开其中的“饮料全表”工作表,以“品名”、“单价”为依据建立柱状图。

						
  1. import pandas as pd
  2. import matplotlib .pyplot as plt
  3. plt.rcParams['font.sans-serif']=['SimHei']      #设置默认字体
  4. plt.rcParams['axes.unicode_minus']=False        #正常显示负号
  5. stu=pd.read_excel('d:/abc/例题锦集.xlsx',sheet_name="饮料全表")
  6. plt.bar(stu.品名,stu.单价)    #建立柱型图
  7. plt.show()



教学视频:

/Upload/image/20220807090009_6380.mp4



实例04分组柱状图及优化


题目:d:abc文件夹中的“例题锦集.xlsx”文件打开,同时打开其中的“饮料全表”工作表,以“品名”、“数量”、“总价”为依据建立柱状图。

						
  1. import pandas as pd
  2. import matplotlib .pyplot as plt
  3. plt.rcParams['font.sans-serif']=['SimHei']      #设置默认字体
  4. plt.rcParams['axes.unicode_minus']=False        #正常显示负号
  5. stu=pd.read_excel('d:/abc/例题锦集.xlsx',sheet_name='饮料全表')
  6. stu.sort_values(by='数量',inplace=True,ascending=False)    #排序
  7. stu.plot.bar(x='品名',y=['数量','总价'])                       #建立柱型图
  8. plt.title('饮料销售情况',fontsize=16,fontweight='bold')     #设置图表标题及字体字号
  9. plt.xlabel('品名',fontweight='bold')                          #设置图表行标题          
  10. plt.ylabel('数量/总价',fontweight='bold')                     #设置图表列标题
  11. ax=plt.gca()
  12. ax.set_xticklabels(stu['品名'],rotation=360)                 #旋转行标题
  13. plt.show()



教学视频:

/Upload/image/20220808090839_0112.mp4



实例05绘制叠加柱状图


题目:d:abc文件夹中的“例题锦集.xlsx”文件打开,同时打开其中的“销售情况”工作表,以“1月销量”、“2月销量”“3月销量”、“4月销量”为依据建立叠加柱状图。

						
  1. import pandas as pd
  2. import matplotlib .pyplot as plt
  3. plt.rcParams['font.sans-serif']=['SimHei']      #设置默认字体
  4. plt.rcParams['axes.unicode_minus']=False        #正常显示负号
  5. stu=pd.read_excel('d:/abc/例题锦集.xlsx',sheet_name="销售情况")
  6. stu.plot.barh(y=['1月销量','2月销量','3月销量','4月销量'],stacked=True) #建立柱形图
  7.                           
  8. plt.title("饮料销量情况图",fontsize=16,fontweight='bold')   #建立图表标题
  9. plt.ylabel("数量",fontsize=12,fontweight='bold')            #设置图表Y轴
  10. ax=plt.gca()
  11. ax.set_xticklabels(stu['品名'],rotation=360)                #旋转行标题 
  12. plt.show()



教学视频:

/Upload/image/20220808091006_0256.mp4



实例06绘制普通饼图


题目:d:abc文件夹中的“例题锦集.xlsx”文件打开,同时打开其中的“销售情况”工作表,以“1月销量”为依据建立饼图。

						
  1. import pandas as pd
  2. import matplotlib .pyplot as plt
  3. plt.rcParams['font.sans-serif']=['SimHei']      #设置默认字体
  4. plt.rcParams['axes.unicode_minus']=False        #正常显示负号
  5. stu=pd.read_excel('d:/abc/例题锦集.xlsx',sheet_name="销售情况",index_col="品名")
  6. stu['1月销量'].plot.pie()        #建立饼图
  7. plt.show()



教学视频:

/Upload/image/20220808091143_6958.mp4



实例07饼图优化


题目:d:abc文件夹中的“例题锦集.xlsx”文件打开,同时打开其中的“销售情况”工作表,以“1月销量”为依据建立饼图。

						
  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. plt.rcParams['font.sans-serif']=['SimHei']      #设置默认字体
  4. plt.rcParams['axes.unicode_minus']=False        #正常显示负号
  5. stu=pd.read_excel('d:/abc/例题锦集.xlsx',sheet_name="销售情况",index_col="品名")
  6. stu['1月销量'].plot.pie(fontsize=8,counterclock=False,startangle=-270) #建立饼图 
  7. plt.title("饮料销量情况图",fontsize=20,fontweight='bold')         #加入标题
  8. plt.ylabel('1月销量',fontsize=14,fontweight='bold')              #重新设置列标题
  9. plt.show()



教学视频:

/Upload/image/20220808091307_2203.mp4



实例08绘制环形图


题目:d:abc文件夹中的“例题锦集.xlsx”文件打开,同时打开其中的“销售报表”工作表,对各种“品名”以“销售数量”方式建立环形图。

						
  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. plt.rcParams['font.sans-serif']=['SimHei']      #设置默认字体
  4. plt.rcParams['axes.unicode_minus']=False        #正常显示负号
  5. stu=pd.read_excel('D:/abc/例题锦集.xlsx',sheet_name="销售报表")
  6. x=stu['品名']
  7. y=stu['销售数量']
  8. plt.pie(y,labels=x,autopct='%.2f%%',pctdistance=0.85,radius=1.0,labeldistance=1.1,wedgeprops={'width':0.3,'linewidth':2,'edgecolor':'white'})    #制作圆环图
  9. plt.title(label='产品销售数量占比图',fontdict={'color':'black',\
  10.                                       'size':20},loc='center')
  11. plt.show()



教学视频:

/Upload/image/20220808091453_8540.mp4



实例09绘制直方图


题目:d:abc文件夹中的“例题锦集.xlsx”文件打开,同时打开其中的“服装销售”工作表,以“月销售额”建立直方图。

						
  1. import pandas as pd
  2. import matplotlib .pyplot as plt
  3. plt.rcParams['font.sans-serif']=['SimHei']      #设置默认字体
  4. plt.rcParams['axes.unicode_minus']=False        #正常显示负号
  5. stu=pd.read_excel('D:/abc/例题锦集.xlsx',sheet_name="服装销售")
  6. stu.月销售额.plot.hist()     #建立直方图
  7. plt.show()



教学视频:

/Upload/image/20220808091623_3212.mp4



实例10直方图优化


题目:d:abc文件夹中的“例题锦集.xlsx”文件打开,同时打开其中的“服装销售”工作表,以“月销售额”建立直方图。

						
  1. import pandas as pd
  2. import matplotlib .pyplot as plt
  3. plt.rcParams['font.sans-serif']=['SimHei']      #设置默认字体
  4. plt.rcParams['axes.unicode_minus']=False        #正常显示负号
  5. stu=pd.read_excel('D:/abc/例题锦集.xlsx',sheet_name="服装销售")
  6. stu.月销售额.plot.hist(bins=30)                          #建立直方图
  7. plt.xticks(range(5,40,10),fontsize=8,rotation=90)  #设置X轴间隔
  8. plt.show()



教学视频:

/Upload/image/20220808091748_6336.mp4



实例11绘制密度图


题目:d:abc文件夹中的“例题锦集.xlsx”文件打开,同时打开其中的“股票数据”工作表,以“最高”建立密度图。本例中需要安装外部库pip installscipy。

		
  1. import pandas as pd
  2. import matplotlib .pyplot as plt
  3. plt.rcParams['font.sans-serif']=['SimHei']      #设置默认字体
  4. plt.rcParams['axes.unicode_minus']=False        #正常显示负号
  5. stu=pd.read_excel('D:/abc/例题锦集.xlsx',sheet_name="股票数据",index_col='股票名称')
  6. stu.最高.plot.density()        #建立密度图
  7. plt.show()



教学视频:

/Upload/image/20220808095034_9181.mp4



实例12绘制折线图


题目:d:abc文件夹中的“例题锦集.xlsx”文件打开,同时打开其中的“销售数量”工作表,以“农夫山泉”为依据建立折线图。

		
  1. import pandas as pd
  2. import matplotlib .pyplot as plt
  3. plt.rcParams['font.sans-serif']=['SimHei']      #设置默认字体
  4. plt.rcParams['axes.unicode_minus']=False        #正常显示负号
  5. stu=pd.read_excel('d:/abc/例题锦集.xlsx',sheet_name="销售数量")
  6. stu.plot(y='农夫山泉')     #建立拆线图
  7. plt.show()



教学视频:

/Upload/image/20220808095152_7841.mp4



实例13折线图优化


题目:d:abc文件夹中的“例题锦集.xlsx”文件打开,同时打开其中的“销售数量”工作表,以“农夫山泉”为依据建立折线图。

		
  1. import pandas as pd
  2. import matplotlib .pyplot as plt
  3. plt.rcParams['font.sans-serif']=['SimHei']      #设置默认字体
  4. plt.rcParams['axes.unicode_minus']=False        #正常显示负号
  5. stu=pd.read_excel('d:/abc/例题锦集.xlsx',sheet_name="销售数量")
  6. stu.plot(y=['农夫山泉'])                                        #建立拆线图
  7. plt.title("饮料销量情况图",fontsize=16,fontweight='bold')  #加入标题
  8. plt.xlabel("产品名称",fontsize=12,fontweight='bold')       #设置X轴
  9. plt.ylabel("销售数量",fontsize=12,fontweight='bold')       #设置Y轴
  10. plt.show()



教学视频:

/Upload/image/20220808095312_0444.mp4



实例14折线图叠加


题目:d:abc文件夹中的“例题锦集.xlsx”文件打开,同时打开其中的“销售数量”工作表,以“农夫山泉”、“加多宝”“可口可乐”、“红牛饮料”为依据建立叠加折线图。

		
  1. import pandas as pd
  2. import matplotlib .pyplot as plt
  3. plt.rcParams['font.sans-serif']=['SimHei']      #设置默认字体
  4. plt.rcParams['axes.unicode_minus']=False        #正常显示负号
  5. stu=pd.read_excel('d:/abc/例题锦集.xlsx',sheet_name="销售数量")
  6. stu.plot.area(y=['农夫山泉','加多宝','可口可乐','红牛饮料'])    #建立拆线图
  7. plt.title("饮料销量情况图",fontsize=16,fontweight='bold')     #加入标题
  8. plt.xlabel("产品名称",fontsize=12,fontweight='bold')          #设置X轴
  9. plt.ylabel("销售数量",fontsize=12,fontweight='bold')          #设置Y轴
  10. plt.show()



教学视频:

/Upload/image/20220808095433_0478.mp4



实例15绘制多折线图


题目:d:abc文件夹中的“例题锦集.xlsx”文件打开,同时打开其中的“销售数量”工作表,以“农夫山泉”、“加多宝”“可口可乐”、“红牛饮料”为依据建立多折线图。

		
  1. import pandas as pd
  2. import matplotlib .pyplot as plt
  3. plt.rcParams['font.sans-serif']=['SimHei']      #设置默认字体
  4. plt.rcParams['axes.unicode_minus']=False        #正常显示负号
  5. stu=pd.read_excel('d:/abc/例题锦集.xlsx',sheet_name="销售数量")
  6. stu.plot(y=['农夫山泉','加多宝','可口可乐','红牛饮料'])        #建立拆线图
  7. plt.title("饮料销量情况图",fontsize=16,fontweight='bold')  #加入标题
  8. plt.xlabel("产品名称",fontsize=12,fontweight='bold')       #设置X轴
  9. plt.ylabel("销售数量",fontsize=12,fontweight='bold')       #设置Y轴
  10. plt.show()



教学视频:

/Upload/image/20220808095602_6449.mp4



实例16绘制气泡图


题目:d:abc文件夹中的“例题锦集.xlsx”文件打开,同时打开其中的“销售额度”工作表,以“月份”为X轴,“销售额”为Y轴建立气泡图。

		
  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. plt.rcParams['font.sans-serif']=['SimHei']      #设置默认字体
  4. plt.rcParams['axes.unicode_minus']=False        #正常显示负号
  5. stu=pd.read_excel('D:/abc/例题锦集.xlsx',sheet_name="销售额度")
  6. size=stu['销售额'].rank()  #先定义气泡大小
  7. n=20                          #n 为倍数,用来调节气泡的大小 
  8. plt.scatter(stu['月份'],stu['销售额'],s=size*n,alpha=0.6)   #建立气泡图
  9. plt.show()



教学视频:

/Upload/image/20220808095719_7931.mp4



实例17绘制雷达图


题目:将D:盘abc文件夹中的“例题锦集.xlsx”文件打开,同时打开其中的“班级成绩”工作表,以“班级”为依据建立雷达图。

		
  1. import pandas as pd
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. df=pd.read_excel('d:\\abc\\例题锦集.xlsx',sheet_name="班级成绩")
  5. df=df.set_index('科目')                       #设置行索引
  6. def plot_ldb(data,feature):                   #自定义函数
  7.     plt.rcParams['font.sans-serif']=['SimHei']       #设置默认字体
  8.     plt.rcParams['axes.unicode_minus']=False      #解决坐标轴值为负数时无法正常显示负号的问题
  9.     cols=['语文','数学','外语','物理','化学']        #指定各个班级要显示的各科的名称
  10.     colors=['green','blue','red']                   #为每个班级设置图表中的显示颜色
  11.     angles=np.linspace(0.1*np.pi,2.1*np.pi,len(cols),endpoint=False)  #根据要显示的科目个数对圆形进行等分
  12.     angles=np.concatenate((angles,[angles[0]]))  #连接刻度线数据
  13.     fig=plt.figure(figsize=(8,8))           #设置显示图表的窗口大小
  14.     ax=fig.add_subplot(111,polar=True)     #设置图表在窗口中的显示位置,并设置坐标轴为极坐标体系
  15.     for i,c in enumerate(feature):
  16.         stats=data.loc[c]                      #获取班级对应的科目数据
  17.         stats=np.concatenate((stats,[stats[0]]))     #连接班级的指标数据
  18.         ax.plot(angles,stats,'-',linewidth=6,c=colors[i],label='%s'%(c))  #制作雷达图
  19.         ax.fill(angles,stats,color=colors[i],alpha=0.25)       #为雷达图填充颜色
  20.     ax.legend()                                       #为雷达图添加图例
  21.     ax.set_xticklabels(close)
  22.     ax.set_yticklabels([])                               #隐藏坐标轴数据
  23.     plt.show()                                        #显示制作的雷达图
  24.     return fig
  25. fig=plot_ldb(df,['甲班','乙班','丙班'])                       #调用自定义函数制作雷达图
  26. plt.show()



教学视频:

/Upload/image/20220808154203_0612.mp4



实例18绘制面积图


题目:将D:盘abc文件夹中的“例题锦集.xlsx”文件打开,同时打开其中的“销售报表”工作表,以“销售数量”为依据建立面积图。

		
  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. plt.rcParams['font.sans-serif']=['SimHei']      #设置默认字体
  4. plt.rcParams['axes.unicode_minus']=False    #解决显示问题
  5. stu=pd.read_excel('D:/abc/例题锦集.xlsx',sheet_name="销售报表")
  6. stu1=pd.DataFrame(stu['销售数量'])
  7. stu1.plot.area(stacked=False)
  8. plt.show()



教学视频:

/Upload/image/20220808154418_3713.mp4



实例19绘制叠加区域图


题目:将D:盘abc文件夹中的“例题锦集.xlsx”文件打开,同时打开其中的“销售情况”工作表,以“1月销量”“2月销量”“3月销量”“品名”为依据建立叠加区域图。

		
  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. plt.rcParams['font.sans-serif']=['SimHei']        #设置默认字体
  4. plt.rcParams['axes.unicode_minus']=False      #正常显示负号
  5. stu=pd.read_excel('d:\\abc\\例题锦集.xlsx',sheet_name="销售情况",index_col="品名") 
  6. stu.plot.area(y=['1月销量','2月销量','3月销量'])  #建立叠加区域图
  7. plt.title('月份销售情况',fontsize=16,fontweight='bold')
  8. plt.ylabel('总量',fontsize=12,fontweight='bold')
  9. plt.show()



教学视频:

/Upload/image/20220808154539_0210.mp4



实例20绘制股票趋势图


题目:通过Tushare输出代码为“300111”(向日葵)的股票在2009年1月之后的股价变化趋势图表。

		
  1. import pandas as pd
  2. import tushare as ts                            #调用财经数据接口包
  3. import matplotlib.pyplot as plt
  4. frame=ts.get_k_data('300111',start='2009-01-01')    #查询“向日葵”股票信息 
  5. frame=frame.set_index('date')                   #为日期设置索引
  6. frame.index=pd.to_datetime(frame.index)         #获取指定的日期
  7. plt.plot(frame['close'])                        #绘制基础走势图 
  8. plt.show()



教学视频:

/Upload/image/20220808154703_4712.mp4



实例21制作数据透视表


题目:将D:盘abc文件夹中的“例题锦集.xlsx”文件打开,同时打开其中的“销售报表”工作表,以“序号”为索引建立新的工作表,并将工作簿以“466.xlsx”为名保存在相同文件夹中。

		
  1. import pandas as pd
  2. import numpy as np
  3. stu=pd.read_excel('D:/abc/例题锦集.xlsx',sheet_name="销售报表",index_col='序号')
  4. stu['Year']=pd.DatetimeIndex(stu['销售日期']).year
  5. pt1=stu.pivot_table(index='类别',columns='Year',values='销售数量',aggfunc=np.sum)
  6. pt1.to_excel('d:/abc/466.xlsx')  #写入Excel文件中



教学视频:

/Upload/image/20220808154822_0212.mp4




                        <本 章 完>




还可以输入200个字

蝈蝈派【海南省教改项目(Hnjg2022-80)支持】 网站版权所有

Python remained the copyright of our website

吉公网安备 22020402000437号

备案号:吉ICP备2020005062号-2

关注QQ群

了解Python

实时动态