Python 如何利用pandas 和 matplotlib绘制柱状图

 更新时间:2023年10月30日 09:17:16   作者:悬崖上的金鱼  
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 参数指定柱子的宽度。然后,使用 titlexlabel 和 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 matplotlib绘制柱状图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • beam search及pytorch的实现方式

    beam search及pytorch的实现方式

    这篇文章主要介绍了beam search及pytorch的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • 通过gradio和摄像头获取照片和视频实现过程

    通过gradio和摄像头获取照片和视频实现过程

    这篇文章主要为大家介绍了gradio和摄像头获取照片和视频实现过程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Python PaddlePaddle机器学习之求解线性模型

    Python PaddlePaddle机器学习之求解线性模型

    这篇文章主要介绍了Python PaddlePaddle机器学习之求解线性模型,文章围绕主题展开详细的内容介绍,具有一定参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • Python对list列表进行去重的几种方法

    Python对list列表进行去重的几种方法

    python 列表就是我们js中的数组了,我们下文整理几个常用的python 列表去重实现方法,非常的简单好用,通过代码示例讲解的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2024-10-10
  • Python flask与fastapi性能测试方法介绍

    Python flask与fastapi性能测试方法介绍

    这篇文章主要介绍了Python flask与fastapi性能测试方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-12-12
  • Python函数高级(命名空间、作用域、装饰器)

    Python函数高级(命名空间、作用域、装饰器)

    这篇文章介绍了Python函数的高级用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 利用Python Django实现简单博客系统

    利用Python Django实现简单博客系统

    这篇文章主要介绍了利用Python Django实现简单博客系统,文中有非常详细的代码示例,对正在学习python的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • 一文详解如何使用Python自动调整Excel行高和列宽

    一文详解如何使用Python自动调整Excel行高和列宽

    在 Excel 数据处理和报告编制过程中,确保单元格内容完整显示是常见需求,本文将介绍如何使用 Free Spire.XLS for Python 来实现自动调整 Excel 行高和列宽,有需要的小伙伴可以了解下
    2025-10-10
  • 五个Pandas 实战案例带你分析操作数据

    五个Pandas 实战案例带你分析操作数据

    pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。Pandas纳入了大量库和一些标准的数据模型,提供了高效操作大型数据集的工具。pandas提供大量快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python强大而高效的数据分析环境的重要因素之一
    2022-01-01
  • PyTorch 检查GPU版本是否安装成功的操作

    PyTorch 检查GPU版本是否安装成功的操作

    这篇文章主要介绍了PyTorch 检查GPU版本是否安装成功的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论