当前位置: 首页 > article >正文

python办公自动化--数据可视化(pandas+matplotlib)--生成条形图和饼状图

前言

前几天我们学习了pandas读取数据,还学习了如何用patplotlib绘制柱状图和折线图。
今天我们继续学习,如何绘制条形图和饼状图。

一、课程回顾-pandas读取数据

1.示例数据文件

在这里插入图片描述

这里我们用到的依旧是d盘底下的这个excel工作簿,这个工作簿里面有四个工作表,如下:
在这里插入图片描述
我们今天用到的是第三个表和第四个表里面的数据,数据如下:
数据表:各个产品销量
在这里插入图片描述
数据表:各大区总利润
在这里插入图片描述

2.pandas读取数据

import pandas as pd

file_name=r"D:\数据可视化示例Excel文件.xlsx"

首先我们导入pandas库,同时将我们的示例文件的路径用file_name来表示

nums_products=pd.read_excel(file_name,sheet_name="各个产品销量")
print("读取各个产品销量")
print(nums_products)

接下来我们读取“各月销售额”这个表格的数据
在这里插入图片描述

profit_continent=pd.read_excel(file_name,sheet_name="各大区总利润")
print("读取各大区总利润")
print(profit_continent)

接下来我们读取“各大区总利润”这个表格的数据

在这里插入图片描述

可以看到,我们通过pandas库成功地读取到了数据可视化示例Excel文件.xlsx这个工作簿里面,名为“各个产品销量”的工作表的数据。

二、matplotlib绘制条形图和饼状图

1.绘制折线图

plt.barh(nums_products.产品,height=0.5,width=nums_products.销量,align="center",label="销量")

plt.title("各种产品销量条形图",loc="center")

for a,b in zip(nums_products.产品,nums_products.销量):
    plt.text(b,a,b,ha="center",va="center",fontsize=15,color="red")

plt.ylabel("产品名称")
plt.xlabel("二月份销量")

plt.grid(False)

plt.legend()

plt.show()

这里我还是简单说一下各行代码的含义,因为上一篇文章讲的很详细,所以就不多说
点击这里跳转到上一篇文章
第一行表示这是条形图,并设置图形的各个参数
第二行设置标题
第三四行设置数据标签
第五六行设置横纵坐标的意义
第七行表示不要网格线,可以删掉,因为默认就是不要网格线
第八行表示增加图例
第九行表示展示生成的条形图

最后我们将代码进行整合

import matplotlib.pyplot as plt
import pandas as pd

file_name=r"D:\数据可视化示例Excel文件.xlsx"

nums_products=pd.read_excel(file_name,sheet_name="各个产品销量")
print("读取各个产品销量")
print(nums_products)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.barh(nums_products.产品,height=0.5,width=nums_products.销量,align="center",label="销量")

plt.title("各种产品销量条形图",loc="center")

for a,b in zip(nums_products.产品,nums_products.销量):
    plt.text(b,a,b,ha="center",va="center",fontsize=15,color="red")

plt.ylabel("产品名称")
plt.xlabel("二月份销量")

plt.grid(False)

plt.legend()

plt.show()

运行代码后我们可以得到条形图如下:
在这里插入图片描述

2.绘制饼状图

import matplotlib.pyplot as plt
import pandas as pd

file_name=r"D:\数据可视化示例Excel文件.xlsx"

profit_continent=pd.read_excel(file_name,sheet_name="各大区总利润")
print("读取各大区总利润")
print(profit_continent)

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.pie(profit_continent.利润,labels=profit_continent.大区,autopct="%.0f%%",shadow=True,radius=1.0)
plt.title("各大洲利润饼状图",loc="center",fontdict={"size":"15","color":"red","weight":"bold"})
plt.show()

运行后结果如下:
在这里插入图片描述

当然,上述图形并不好看,因为matplotlib在最开始的时候只是为了满足工业作图的要求,能做出来就行了,要什么自行车。
但是随着互联网的发展,这种图已经满足不了我们的需求了。
有兴趣的同学可以自行去了解一下如何优化这些图形。
当然,如果有兴趣,后续我们可以讲一讲seaborn等第三库,那才是真正精彩的世界。

总结

今天我们复习了前一天学习的pandas读取excel表格的数据,同时学习了如何用matplotlib库将读取的数据生成条形图和饼状图。
后面有时间我们再更新学习其它图知识的文章。

有兴趣的朋友可以点个关注和订阅哟!!!!


http://www.kler.cn/a/579872.html

相关文章:

  • Spring MVC 全面解析
  • 第六次CCF-CSP认证(含C++源码)
  • Elasticsearch 入门教学:从零开始掌握分布式搜索引擎
  • ESP32的IDF开发学习-移植lvgl并显示简单ui(以gc9a01为例)
  • 内网安全-横向移动PTH 哈希PTT 票据PTK 密匙Kerberos密码喷射
  • 蓝桥杯备考:离散化详解
  • 数据结构:有序表的插入
  • MongoD和关系型数据库相关概念的对应
  • PyTorch 张量数据类型定义和转换
  • 【Linux内核系列】:深入理解缓冲区
  • 在ubuntu 24 命令行 下,制作无人值守ubuntu-24.04.2-desktop 桌面版安装U盘
  • 《深入理解Linux:高效崩溃分析与实时栈回溯技巧》
  • 操作系统知识点25
  • OCR图片识别原理
  • C++:面向对象之多态(运算符重载)
  • AF3 squeeze_features函数解读
  • Vue3 Pinia 符合直觉的Vue.js状态管理库
  • 超越经典:量子通信技术的发展与未来
  • MySQL8.0窗口函数
  • HTML 表格详解(简单易懂较详细)