一、数据描述
数据集中9994条数据,横跨1237天,销售额为2,297,200.8603美元,利润为286,397.0217美元,他们的库存中有1862件独特的物品,它们被分为3类,所有这些物品都在美国4个地区的49个州销售,来着793位客户的5009个订单。
数据集: Superstore.csv 来源:kaggle
一共21列数据,每一列属性描述如下:
- Row ID => 每一行唯一的ID.
- Order ID => 每个客户的唯一订单ID.
- Order Date => 产品的订单日期.
- Ship Date => 产品发货日期.
- Ship Mode=> 客户指定的发货模式.
- Customer ID => 标识每个客户的唯一ID.
- Customer Name => 客户的名称.
- Segment => The segment where the Customer belongs.
- Country => 客户居住的国家.
- City => 客户居住的城市.
- State => 客户所在的州.
- Postal Code => 每个客户的邮政编码.
- Region => “客户”所属地区.
- Product ID => 产品的唯一ID.
- Category => 所订购产品的类别.
- Sub-Category => 所订购产品的子类别.
- Product Name => 产品名称
- Sales =>产品的销售.
- Quantity => 产品数量.
- Discount => 提供折扣.
- Profit => 已发生的利润/亏损.
1、数据概览
9994行,21列数据
print(df.info())
<class "pandas.core.frame.DataFrame"> RangeIndex: 9994 entries, 0 to 9993 Data columns (total 21 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Row ID 9994 non-null int64 1 Order ID 9994 non-null object 2 Order Date 9994 non-null object 3 Ship Date 9994 non-null object 4 Ship Mode 9994 non-null object 5 Customer ID 9994 non-null object 6 Customer Name 9994 non-null object 7 Segment 9994 non-null object 8 Country 9994 non-null object 9 City 9994 non-null object 10 State 9994 non-null object 11 Postal Code 9994 non-null int64 12 Region 9994 non-null object 13 Product ID 9994 non-null object 14 Category 9994 non-null object 15 Sub-Category 9994 non-null object 16 Product Name 9994 non-null object 17 Sales 9994 non-null float64 18 Quantity 9994 non-null int64 19 Discount 9994 non-null float64 20 Profit 9994 non-null float64 dtypes: float64(3), int64(3), object(15) memory usage: 1.6+ MB None
二、数据预处理
1、导入包和数据
import pandas as pd from pyecharts.charts import * from pyecharts import options as opts from pyecharts.commons.utils import JsCode data = pd.read_csv(r"./data/Superstore.csv")
2、列名重命名
重命名后的列名:
data.columns = ["行ID", "订单ID", "订单日期", "发货日期", "发货方式", "客户ID", "客户名称", "客户类型", "国家", "城市", "州", "邮政编码", "所属区域", "产品ID", "产品类别", "产品子类别", "产品名称", "销售额", "产品数量", "提供折扣", "利润/亏损"]
3、提取数据中时间,方便后续分析绘图
data["年份"] = data["订单日期"].apply(lambda x: x[-4:]) data["日期"] = pd.to_datetime(data["订单日期"], format="%m/%d/%Y") data["月份"] = data["日期"].dt.month data["年-月"] = data["年份"].astype("str") + "-" + data["月份"].astype("str")
三、数据可视化
1、美国各个地区销售额的分布(地图)
包含:Order_Date Sales Quantity Profit year month
usa_sale = data[["州", "销售额"]].groupby("州").sum().round(2).reset_index() print(usa_sale.head()) def echarts_map(province, data, src="/uploads/allimg/220814/19533061B-0.gif" />
2、各产品类别销售额对比(柱状图)
pro_category = data[["产品类别", "销售额", "利润/亏损"]].groupby("产品类别").sum().round(2).reset_index() pro_category.head() def echarts_bar(x, y, y2, src="/uploads/allimg/220814/19533045I-1.gif" />
3、不同客户类别销售额对比(饼图)
customer_sale = data[["客户类型", "销售额", "利润/亏损"]].groupby("客户类型").sum().round(2).reset_index() def echarts_pie(x, y, src="/uploads/allimg/220814/1953304020-2.gif" />
4、每月各产品销售额top10榜单
month_lis = data.sort_values(by="日期")["年-月"].unique().tolist() month_sale = [] for i in month_lis: month_data = data[data["年-月"] == i][["产品名称", "销售额"]].groupby(["产品名称"]). sum().round(2).reset_index().sort_values(by="销售额", ascending=False)[:10] month_data = month_data.sort_values(by="销售额", ascending=True) # final_data = [month_data["产品名称"].tolist(),month_data["销售额"].tolist()] month_sale.append(month_data) # month_sale[0] # 绘制动态榜单 # 新建一个timeline对象 def echart_line(x, y, src="/uploads/allimg/220814/1953303J5-3.gif" />
5、销售额、净利润在时间维度的变化(折线图)
sale_data = data.sort_values(by="日期")[["年份", "日期", "销售额", "利润/亏损"]]. groupby(["年份", "日期"]).sum().round(2).reset_index() year_lis = sale_data["年份"].unique().tolist() sale_data1 = sale_data[sale_data["年份"] == "2014"] sale_data2 = sale_data[sale_data["年份"] == "2015"] sale_data3 = sale_data[sale_data["年份"] == "2016"] sale_data4 = sale_data[sale_data["年份"] == "2017"] sale_data_lis = [sale_data1, sale_data2, sale_data3, sale_data4] print(sale_data4.head()) def echarts_two_line(x, y, src="/uploads/allimg/220814/195330A06-4.gif" />
6、销售额
sale_sum = int(data["销售额"].sum()) num_count = int(data["产品数量"].sum()) profit_sum = int(data["利润/亏损"].sum()) print(profit_sum) def big_data(title="主标题", subtitle="副标题"): c = Pie( init_opts=opts.InitOpts( chart_id=1, bg_color="#080b30", theme="dark", width="300px", height="300px", ) ) c.set_global_opts( title_opts=opts.TitleOpts( title=title, subtitle=subtitle, title_textstyle_opts=opts.TextStyleOpts( font_size=36, color="#FFFFFF", ), pos_left="center", pos_top="middle" ) ) return c.render(str(title) + "-" + subtitle + ".html") big_data(title=sale_sum, subtitle="销售额")
到此这篇关于Python pyecharts案例超市4年数据可视化分析的文章就介绍到这了,更多相关pyecharts数据可视化内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文地址:https://blog.51cto.com/u_15668438/5572526
延伸 · 阅读
- 2022-08-14opencv python截取圆形区域的实现
- 2022-08-14Python编写车票订购系统 Python实现快递收费系统
- 2022-08-13python manim实现排序算法动画示例
- 2022-08-13Python 操作pdf pdfplumber读取PDF写入Excel
- 2022-08-13Python使用plt.boxplot()函数绘制箱图、常用方法以及
- 2022-08-13基于Python实现nc批量转tif格式
精彩推荐
- Python
Python实现二叉树结构与进行二叉树遍历的方法详解
二叉树是最基本的数据结构,这里我们在Python中使用类的形式来实现二叉树并且用内置的方法来遍历二叉树,下面就让我们一起来看一下Python实现二叉树结构...
- Python
Python3 如何开启自带http服务
这篇文章主要介绍了Python3 开启自带http服务的操作方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...
- Python
用Python给二维码图片添加提示文字
今天教各位小伙伴怎么用Python给二维码图片添加提示文字,文中有非常详细的代码示例,对正在学习python的小伙伴很有帮助,需要的朋友可以参考下...
- Python
python实现应用程序在右键菜单中添加打开方式功能
这篇文章主要介绍了python实现应用程序在右键菜单中添加打开方式功能,本文分步骤给大家介绍的非常详细,具有参考借鉴价值,需要的朋友参考下吧...
- Python
python自动化测试selenium定位frame及iframe示例
这篇文章主要为大家介绍了python自动化测试selenium定位frame及iframe示例的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助...
- Python
python简单图片操作:打开\显示\保存图像方法介绍
这篇文章主要介绍了python简单图片操作:打开\显示\保存图像方法介绍,还涉及将图片保存为灰度图的简单方法示例,具有一定参考价值,需要的朋友可以...
- Python
OpenCV半小时掌握基本操作之图像金字塔
这篇文章主要介绍了OpenCV基本操作之图像金字塔,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...
- Python
基于Python实现通过微信搜索功能查看谁把你删除了
这篇文章主要介绍了基于Python实现微信搜索查看谁把你删除了的相关资料,需要的朋友可以参考下 ...