首页 > 编程语言 >Python 利用pandas和matplotlib绘制饼图

Python 利用pandas和matplotlib绘制饼图

时间:2023-11-03 22:57:37浏览次数:34  
标签:shop plt Python sales matplotlib 店铺 pandas 圆环

制作店铺销量占比圆环图

在数据分析中,数据可视化是非常重要的一环。在可视化的过程中,圆环图是一种常用的方式,特别适合于展示各类别占比情况。本文将介绍如何使用 Python 中的 pandas 和 matplotlib 库,来制作一个店铺销量占比的圆环图。

数据准备

我们假设现在有一份销售数据的 Excel 文件,其中包含了不同店铺的销售数量数据。我们将使用 pandas 库来读取和处理这份数据。下面是读取数据的代码:

import pandas as pd

# 从Excel文件中读取数据
data = pd.read_excel(r'C:\Users\liuchunlin2\Desktop\新建文件夹\新建 XLSX 工作表.xlsx')

数据预处理

我们需要按照店铺名称来聚合销售数量数据,以便于后续的可视化。我们可以使用 pandas 库的 groupby 函数来实现这一步骤。下面是代码:

# 按店铺名称聚合销售数量
sales_by_shop = data.groupby('店铺名称')['销售数量'].sum()

可视化

现在我们已经得到了按店铺名称聚合后的销售数量数据,接下来就可以使用 matplotlib 库来制作圆环图了。下面是完整的可视化代码:

import matplotlib.pyplot as plt

plt.rcParams['font.family'] = ['SimHei']  # 指定中文字体为黑体

# 绘制圆环图
fig, ax = plt.subplots(figsize=(8, 8))
colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ffa3a3'] # 设置颜色
wedges, texts, autotexts = ax.pie(sales_by_shop, labels=sales_by_shop.index, startangle=90, autopct='%1.1f%%', wedgeprops={'width': 0.3}, labeldistance=1.15, colors=colors)

# 添加标题和图例
ax.set_title('店铺销量占比', size=20)
ax.legend(wedges, sales_by_shop.index,
          title="店铺名称",
          loc="center left",
          bbox_to_anchor=(1, 0, 0.5, 1),
          fontsize=14)

# 修改字体大小
plt.setp(texts, size=15)
plt.setp(autotexts, size=14)

# 显示图形
plt.show()

首先,我们使用 subplots 函数创建一个画布,并设置画布的大小。然后,我们定义了一个颜色列表,用于设置不同类别的颜色。

接着,我们调用 pie 函数来绘制圆环图。在该函数中,我们传入按店铺名称聚合后的销售数量数据,设置了一系列参数,如起始角度、自动计算百分比等。

最后,我们添加了标题和图例,并修改了字体大小。最后一步调用 show 函数来显示图形。

效果展示

下面是绘制出的店铺销量占比圆环图:

完整代码:

import pandas as pd
import matplotlib.pyplot as plt

plt.rcParams['font.family'] = ['SimHei']  # 指定中文字体为黑体

# 从Excel文件中读取数据
data = pd.read_excel(r'C:\Users\liuchunlin2\Desktop\新建文件夹\新建 XLSX 工作表.xlsx')

# 按店铺名称聚合销售数量
sales_by_shop = data.groupby('店铺名称')['销售数量'].sum()

# 绘制圆环图
fig, ax = plt.subplots(figsize=(8, 8))
colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ffa3a3'] # 设置颜色
wedges, texts, autotexts = ax.pie(sales_by_shop, labels=sales_by_shop.index, startangle=90, autopct='%1.1f%%', wedgeprops={'width': 0.3}, labeldistance=1.15, colors=colors)

# 添加标题和图例
ax.set_title('店铺销量占比', size=20)
ax.legend(wedges, sales_by_shop.index,
          title="店铺名称",
          loc="center left",
          bbox_to_anchor=(1, 0, 0.5, 1),
          fontsize=14)

# 修改字体大小
plt.setp(texts, size=15)
plt.setp(autotexts, size=14)

# 显示图形
plt.show()

总结

在本文中,我们介绍了如何使用 Python 的 pandas 和 matplotlib 库,来绘制一个店铺销量占比圆环图。我们按照店铺名称聚合销售数量数据,使用 matplotlib 库绘制圆环图,并最终展示了结果。希望这篇文章对你在数据分析和可视化方面有所帮助。

标签:shop,plt,Python,sales,matplotlib,店铺,pandas,圆环
From: https://www.cnblogs.com/lcl-cn/p/17808676.html

相关文章

  • 全网首发 Python3 实现快读(按字符读入(省内存专用
    全网首发Python3实现快读(按字符读入(省内存专用来源:https://www.luogu.com.cn/discuss/724761此题卡内存,如果按照Python常用的input().split()方法会MLE。因为input()一次读入大量字符串,占用内存极大。于是打算按照C++的快读逻辑写一个Python3的快读。然而并没有......
  • Python 包管理器入门指南
    什么是PIP?PIP是Python包管理器,用于管理Python包或模块。注意:如果您的Python版本是3.4或更高,PIP已经默认安装了。什么是包?一个包包含了一个模块所需的所有文件。模块是您可以包含在项目中的Python代码库。检查是否安装了PIP在命令行中导航到Python脚本目录的位......
  • Python 包管理器入门指南
    什么是PIP?PIP是Python包管理器,用于管理Python包或模块。注意:如果您的Python版本是3.4或更高,PIP已经默认安装了。什么是包?一个包包含了一个模块所需的所有文件。模块是您可以包含在项目中的Python代码库。检查是否安装了PIP在命令行中导航到Python脚本目录的......
  • python49days
    定时器案例         需要手动删除 改为placeholder时   变为虚拟背景 提示作用   如何修改标签属性 省市联动   jQuery快速入门它是js的一个封装库、它里面简化了js的一些复杂的写法,jQuery在三五年之前非常的流行,现......
  • python_冒泡排序
    #冒泡排序list1=[82,33,96,33,60,77,12,0]#控制比较多少轮,有n个数时需要比较的轮数是n-1foriinrange(len(list1)-1):#控制每轮比较的次数forjinrange(len(list1)-1-i):iflist1[j]>list1[j+1]:#交换两数的位置......
  • 认识python
    目标Python的起源为什么要用Python?Python的特点Python的优缺点01.Python的起源Python的创始人为吉多·范罗苏姆(GuidovanRossum)1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的解释程序,作为ABC语言的一种继承(感觉下什么叫牛人)ABC是由吉多参......
  • 代码随想训练营第二十四天(Python)| 第77题. 组合
    第77题.组合需要注意剪枝细节纵向代表递归,横行代表取数1、回溯classSolution:defcombine(self,n:int,k:int)->List[List[int]]:res=[]self.backtrack(n,k,1,[],res)returnresdefbacktrack(self,n,k,start,path,r......
  • 从零开始构建报警中心:part01 使用python脚本接收zabbix报警信息
    在part00中提到过,zabbix在整个结构中,只起到发起报警,并将信息推送给Python脚本的作用。所以此文的主要目的就是描述如何配置zabbix的报警媒介。zabbix可以通过配置报警媒介的方式,来自定义的接收报警信息。查看AlertScriptsPath配置报警脚本可以是shell、py或者其他各种格式类型的可......
  • pythonDay6
    for循环 案列 for+range(同while一样) while输入限制次数解决办法 range补充 for循环嵌套字符串正反步长及 .strip去除(lstrip是去除左边,rstrip是去除右边) rsplit,rsplit和join indigit 了解1.  了解2:字符串打印格式 了解3 了解4 了解5 ......
  • Python-流程控制-while循环-for循环
    Python-流程控制-while循环-for循环写重复代码是可耻的行为程序在一般情况下是按顺序执行的,编程语言提供了各种控制结构,允许更复杂的执行路径。循环(loop)用于解决重附代码的问题1.循环类型1.1.循环分类1)根据循环次数分类有限循环(次数限制)无限循环(死循环)标志位flag2)根据......