Python 利用pandas 和 matplotlib绘制柱状图
当你需要展示数据时,图表是一个非常有用的工具。Python 中的 pandas 和 matplotlib 库提供了丰富的功能,可以帮助你轻松地绘制各种类型的图表。本文将介绍如何使用这两个库,绘制一个店铺销售数量的柱状图,并添加各种元素,如数据标签、图例、网格线等。
准备工作
在开始之前,你需要安装 pandas 和 matplotlib 库。如果你还没有安装,可以使用以下命令进行安装
pip install pandas matplotlib
另外,为了在图表中显示中文,你需要下载并安装中文字体文件。这里我们使用宋体,你可以替换为其他中文字体。下载后,将字体文件路径替换到代码中的 font 变量中
# 设置中文字体
font = FontProperties(fname='C:\\Windows\\Fonts\\simhei.ttf', size=12) # 替换为你的中文字体文件路径和字体大小
数据准备
我们假设有一个 Excel 文件,其中包含多个店铺的销售数据。每个店铺有多个订单,每个订单有一个销售数量。我们需要对每个店铺的销售数量进行求和,并按照销售数量降序排列。以下是数据准备的代码:
import pandas as pd # 从Excel文件中读取数据
data = pd.read_excel('C:\\Users\Admin\\Desktop\\数据核对\\新建 XLSX 工作表.xlsx') # 聚合数据
aggregated_data = data.groupby('店铺名称')['销售数量'].sum() # 按销售数量降序排列
aggregated_data = aggregated_data.sort_values(ascending=False) print(aggregated_data)
首先,我们使用 pandas 库的 read_excel 函数读取 Excel 文件中的数据。然后,使用 groupby 函数对数据进行聚合,按照店铺名称分组,并对每个组中的销售数量求和。最后,使用 sort_values 函数按照销售数量降序排列。
绘制柱状图
接下来,我们使用 matplotlib 库绘制柱状图。以下是绘制柱状图的代码:
import matplotlib.pyplot as plt # 绘制柱状图
aggregated_data.plot(kind='bar', color='steelblue', edgecolor='black', width=0.8) # 设置图表标题和坐标轴标签
plt.title('店铺销售数量')
plt.xlabel('店铺名称')
plt.ylabel('销售数量') # 显示图表
plt.show()
我们使用 plot 函数绘制柱状图,其中 kind 参数指定图表类型为柱状图,color 参数指定柱子的颜色,edgecolor 参数指定柱子边框的颜色,width 参数指定柱子的宽度。然后,使用 title、xlabel 和 ylabel 函数设置图表标题和坐标轴标签。最后,使用 show 函数显示图表。
添加数据标签
为了更清楚地展示每个店铺的销售数量,我们可以在柱子上添加数据标签。以下是添加数据标签的代码:
# 添加数据标签
for i, v in enumerate(aggregated_data):
plt.text(i, v, str(v), ha='center', va='bottom') # 显示图表
plt.show()
我们使用 text 函数添加数据标签,其中 i 和 v 分别表示柱子的索引和高度,ha 参数指定水平对齐方式为居中,va 参数指定垂直对齐方式为底部。最后,再次使用 show 函数显示图表。
设置刻度标签
由于店铺名称较长,如果全部显示会导致刻度标签重叠,影响美观和可读性。因此,我们可以旋转刻度标签,并设置字体大小和字体样式。以下是设置刻度标签的代码:
# 设置刻度标签的字体大小和旋转角度
plt.xticks(rotation=45, fontsize=10) # 显示图表
plt.show()
我们使用 xticks 函数设置刻度标签,其中 rotation 参数指定旋转角度为45度,fontsize 参数指定字体大小为10。
添加图例
我们可以添加图例,以便更好地解释图表中的信息。以下是添加图例的代码:
# 设置图例
plt.legend(['销售数量'], loc='upper right') # 显示图表
plt.show()
我们使用 legend 函数添加图例,其中 loc 参数指定图例位置为右上角,['销售数量'] 表示图例中的文本。
去除边框和添加网格线
为了让图表更加简洁和美观,我们可以去除上边框和右边框,并添加水平虚线网格线。以下是去除边框和添加网格线的代码
# 去除上边框和右边框
plt.gca().spines['top'].set_visible(False)
plt.gca().spines['right'].set_visible(False) # 添加网格线
plt.grid(axis='y', linestyle='--', alpha=0.5) # 显示图表
plt.show()
我们使用 gca 函数获取当前轴对象,然后使用 spines 属性去除上边框和右边框。使用 grid 函数添加水平虚线网格线,其中 axis 参数指定网格线方向为垂直方向,linestyle 参数指定网格线样式为虚线,alpha 参数指定网格线透明度为0.5。
设置背景色和调整布局
最后,我们可以设置图表的背景色,并调整图表布局使得图表内容更加紧凑。以下是设置背景色和调整布局的代码:
# 设置背景色
plt.gca().set_facecolor('#F5F5F5') # 调整图表布局
plt.tight_layout() # 显示图表
plt.show()
我们使用 set_facecolor 函数设置背景色为浅灰色,使用 tight_layout 函数调整图表布局。
完整代码
将上面的代码整合起来,得到完整的代码如下:
import pandas as pd
import matplotlib.pyplot as plt # 从Excel文件中读取数据
data = pd.read_excel('C:\\Users\Admin\\Desktop\\数据核对\\新建 XLSX 工作表.xlsx') # 聚合数据
aggregated_data = data.groupby('店铺名称')['销售数量'].sum() # 按销售数量降序排列
aggregated_data = aggregated_data.sort_values(ascending=False) # 绘制柱状图
aggregated_data.plot(kind='bar', color='steelblue', edgecolor='black', width=0.8) # 添加数据标签
for i, v in enumerate(aggregated_data):
plt.text(i, v, str(v), ha='center', va='bottom') # 设置图表标题和坐标轴标签
plt.title('店铺销售数量')
plt.xlabel('店铺名称')
plt.ylabel('销售数量') # 设置刻度标签的字体大小和旋转角度
plt.xticks(rotation=45, fontsize=10) # 设置图例
plt.legend(['销售数量'], loc='upper right') # 去除上边框和右边框
plt.gca().spines['top'].set_visible(False)
plt.gca().spines['right'].set_visible(False) # 添加网格线
plt.grid(axis='y', linestyle='--', alpha=0.5) # 设置背景色
plt.gca().set_facecolor('#F5F5F5') # 调整图表布局
plt.tight_layout() # 显示图表
plt.show()
Python 利用pandas 和 matplotlib绘制柱状图的更多相关文章
- 用Python的Pandas和Matplotlib绘制股票KDJ指标线
我最近出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中给出了MACD,KDJ ...
- 用Python的Pandas和Matplotlib绘制股票唐奇安通道,布林带通道和鳄鱼组线
我最近出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中给出了MACD,KDJ ...
- Python——使用matplotlib绘制柱状图
Python——使用matplotlib绘制柱状图 1.基本柱状图 首先要安装matplotlib(http://matplotlib.org/api/pyplot_api.htm ...
- Python利用pandas处理Excel数据的应用
Python利用pandas处理Excel数据的应用 最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做 ...
- matplotlib绘制柱状图
参考自Matplotlib Python 画图教程 (莫烦Python)(11)_演讲•公开课_科技_bilibili_哔哩哔哩 https://www.bilibili.com/video/av16 ...
- 利用Pandas和matplotlib分析我爱我家房租区间频率
前几天利用python爬取了我爱我家的租房的一些数据,就想着能不能对房租进行一波分析,于是通过书籍和博客等查阅了相关资料,进行了房租的区间分析.不得不说,用python做区间分析比我之前用sql关键字 ...
- matplotlib 绘制柱状图的几个例子
1 error bar #!/usr/bin/env python # a bar plot with errorbars import numpy as np import matplotlib.p ...
- Python利用pandas处理数据后画图
pandas要处理的数据是一个数据表格.代码: 1 import pandas as pd 2 import numpy as np 3 import matplotlib.pyplot as plt ...
- python基础入门:matplotlib绘制多Y轴画图(附源码)
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:屁屁酱 PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...
- 小白学Python(13)——pyecharts 绘制 柱状图/条形图 Bar
Bar-基本示例 from example.commons import Faker from pyecharts import options as opts from pyecharts.char ...
随机推荐
- ZIM|一站式接入,打通 RTC 和 IM 组合拳
从用户信息.用户心跳到用户间私人与聊天室通信,IM 一直是互联网世界中不可或缺的基础建设之一.早在连麦和直播诞生之前,IM 就已是在通讯领域内服役多年的老兵,而随着线上音视频的兴起,IM 不仅没有没落 ...
- (占坑编辑中)hexo个人博客主页添加百度搜索资源平台
hexo个人博客主页添加百度搜索资源平台 目的是在百度搜你的网站,可以搜到 配置过程 添加效果: 我的个人博客主页,欢迎访问 我的CSDN主页,欢迎访问 我的简书主页,欢迎访问 我的GitHub主页, ...
- linux内核vmlinux的编译过程之 --- $(kallsyms.o)详解(九)
在编译完依赖 vmlinux.o 后,链接 vmlinux 之前,构建系统还要编译依赖目标 $(kallsyms.o).接下来就对 kallsyms 进行一个简单的解释. 一. 引言 1.符号的概念 ...
- win10安装mysql时提示错误:mysqld: Can't change dir to 'C: oftware\mysql\data\' (Errcode: 2 - No such file or directory)
win10安装解压版mysql时,提示错误: 2019-10-22 09:02:00 2004 [ERROR] Can't find messagefile 'C:\WINDOWS\system32\ ...
- MIT 6.5840 Raft Implementation(2A, Leader Election)
Raft实现思路+细节 2A 任务分解 总体来说,2A中主要的任务就是选出领导人,在选出领导人的时候,我们要遵循下图. 在2A中,由于并没有出现日志复制,所以我们只需要考察两者的任期是否相等,以及接收 ...
- 一步一图带你构建 Linux 页表体系 —— 详解虚拟内存如何与物理内存进行映射
笔者之前在自己的专栏<聊聊 Linux 内核> 里通过大量的篇幅写了一个系列关于内存管理相关的文章,在这个系列文章中,笔者分别通过虚拟内存管理和物理内存管理两个角度算是把 Linux 内存 ...
- ChatGPT变笨了,好在还有自知之明
大家好,我是老章 好久没有写文章了,顺便向大家汇报一下最近在忙的事情(多数无疾而终): 1 开发了一个IMG2Latex工具(截图一个公式,自动把latex代码塞进剪贴板) 2 开发了一个播客转文字稿 ...
- virt-install 使用 qcow2格式虚拟机镜 、macvtap网卡
安装虚拟机 这里使用 amazn2 虚拟机镜像安装,根据官网文档,需要预先配置一个 seed.iso 文件 参考文档:https://docs.aws.amazon.com/zh_cn/AWSEC2/ ...
- WPF 全局样式资源管理
在WPF通常我们习惯于把样式直接写在控件属性上,例如: <TextBox x:Name="pluginPathTxt" Margin="0,0,0,0" ...
- VMware 备份操作系统
在VMware 中备份方式有两种:快照和克隆. 快照:又称还原点,就是保存在拍快照时系统的状态,包含所有内容.在之后的使用中,随时都可以恢复.[短期备份,需要频繁备份时,使用该方法.操作的虚拟系统一般 ...