pyecharts案例 超市4年数据可视化大屏(二)
643
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())
二、数据预处理
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~