pyecharts案例 超市4年数据可视化分析(一)(pyecharts实例)

网友投稿 607 2022-08-22


pyecharts案例 超市4年数据可视化分析(一)(pyecharts实例)

一、数据描述

数据集中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())

RangeIndex: 9994 entries, 0 to 9993Data 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 float64dtypes: float64(3), int64(3), object(15)memory usage: 1.6+ MBNone

二、数据预处理

0、导入包和数据

import pandas as pdfrom pyecharts.charts import *from pyecharts import options as optsfrom pyecharts.commons.utils import JsCodedata = pd.read_csv(r'./data/Superstore.csv')

1、列名重命名

重命名后的列名:

data.columns = ['行ID', '订单ID', '订单日期', '发货日期', '发货方式', '客户ID', '客户名称', '客户类型', '国家', '城市', '州', '邮政编码', '所属区域', '产品ID', '产品类别', '产品子类别', '产品名称', '销售额', '产品数量', '提供折扣', '利润/亏损']

2、提取数据中时间,方便后续分析绘图

data['年份'] = data['订单日期'].apply(lambda x: x[-4:])data['日期'] = pd.to_datetime(data['订单日期'], format='%m/%d/%Y')data['月份'] = data['日期'].dt.monthdata['年-月'] = 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, title='主标题', subtitle='副标题', label='图例'): """ province:传入省份List data:传入各省对应的数据List title:主标题 subtitle:副标题 label:图例 """ map_ = Map( init_opts=opts.InitOpts( bg_color='#080b30', # 设置背景颜色 theme='dark', # 设置主题 width='980px', # 设置图的宽度 height='700px', # 设置图的高度 ) ) map_.add(label, [list(i) for i in zip(province, data)], maptype='美国' ) map_.set_global_opts( # 标题设置 title_opts=opts.TitleOpts( title=title, # 主标题 subtitle=subtitle, # 副标题 pos_left='center', # 标题展示位置 title_textstyle_opts=dict(color='#fff') # 设置标题字体颜色 ), # 图例设置 legend_opts=opts.LegendOpts( is_show=True, # 是否显示图例 pos_left='right', # 图例显示位置 pos_top='3%', # 图例距离顶部的距离 orient='horizontal' # 图例水平布局 ), visualmap_opts=opts.VisualMapOpts(max_=int(max(data)), is_piecewise=False) ) return map_.render(title + '-' + subtitle + '.html')echarts_map(usa_sale['州'].tolist(), usa_sale['销售额'].tolist(), title='美国各地区销售额分布' , subtitle='销售额分布地图', label='销售额')

2、各产品类别销售额对比(柱状图)

3、不同客户类别销售额对比(饼图)

customer_sale = data[['客户类型', '销售额', '利润/亏损']].groupby('客户类型').sum().round(2).reset_index()def echarts_pie(x, y, title='主标题', subtitle='副标题', label='图例'): pie = Pie( init_opts=opts.InitOpts( bg_color='#080b30', # 设置背景颜色 theme='dark', # 设置主题 width='900px', # 设置图的宽度 height='600px' ) ) pie.add('', [list(z) for z in zip(x, y)]) pie.set_series_opts(label_opts=opts.LabelOpts( formatter="{b}: {c}", font_size='15', font_style='oblique', font_weight='bolder' ) ) pie.set_global_opts( # 标题设置 title_opts=opts.TitleOpts( title=title, # 主标题 subtitle=subtitle, # 副标题 pos_left='center', # 标题展示位置 title_textstyle_opts=dict(color='white'), # 设置标题字体颜色 subtitle_textstyle_opts=dict(color='white') ), legend_opts=opts.LegendOpts( is_show=True, # 是否显示图例 pos_left='right', # 图例显示位置 pos_top='3%', # 图例距离顶部的距离 orient='vertical', # 图例水平布局 textstyle_opts=opts.TextStyleOpts( color='white', # 颜色 font_size='13', # 字体大小 font_weight='bolder', # 加粗 ), ) ) return pie.render(title + '-' + subtitle + '.html')echarts_pie(customer_sale['客户类型'], customer_sale['销售额'], title='不同客户类别销售额对比', subtitle=' ', label='销售额')echarts_pie(customer_sale['客户类型'], customer_sale['利润/亏损'], title='不同客户类别利润对比', subtitle=' ', label='利润/亏损')

4、每月各产品销售额top10榜单

5、销售额、净利润在时间维度的变化(折线图)

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='销售额')


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:pyecharts案例 超市4年数据可视化大屏(二)
下一篇:解决maven打包失败:程序包xxxx不存在问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~