实验项目名称:pyecharts交互式绘图
实验目的及要求:
(1)掌握pyecharts的基础语法
(2)掌握柱形图的绘制方法
(3)掌握折线图的绘制方法
(4)掌握饼图的绘制方法
(5)掌握并行多图的绘制方法
(6)掌握时间线轮播多图的绘制方法
实验内容:
(1)根据第2章实训2处理后的数据,统计2017年6月销量前5的商品销量、每台售货机每月的总交易额、每台售货机各类(按大类)商品的销售额,并利用这些数据绘制相关图形。
(2)根据第2章实训2处理后的数据,统计2017年每月每台售货机的销售额、每台售货机每月各类(按大类)商品的销售额,并利用这些数据绘制相关图形
实验步骤
(1)获取处理好的数据
In [179]:
#(1)获取处理好的数据 import pandas as pd import numpy as np from pyecharts.charts import Bar,Pie,Line from pyecharts import options as opts data=pd.read_csv('./处理后的数据.csv',encoding='gbk') data.head()
Out[179]:
订单号 | 设备ID | 应付金额 | 实际金额 | 商品 | 支付时间 | 地点 | 状态 | 提现 | 大类 | 二级类 | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | DD201708167493663618499909784 | E43A6E078A07631 | 4.5 | 4.5 | 68g好丽友巧克力派2枚 | 2017-01-01 00:53:00 | D | 已出货未退款 | 已提现 | 非饮料 | 饼干糕点 |
1 | DD201708167493663555814061164 | E43A6E078A04172 | 3.0 | 3.0 | 40g双汇玉米热狗肠 | 2017-01-01 01:33:00 | A | 已出货未退款 | 已提现 | 非饮料 | 肉干/豆制品/蛋 |
2 | DD201708167493578526890939886 | E43A6E078A06874 | 5.5 | 5.5 | 430g泰奇八宝粥 | 2017-01-01 08:45:00 | E | 已出货未退款 | 已提现 | 非饮料 | 方便速食 |
3 | DD201708167493683507186615837 | E43A6E078A04228 | 5.0 | 5.0 | 48g好丽友薯愿香烤原味 | 2017-01-01 09:05:00 | C | 已出货未退款 | 已提现 | 非饮料 | 膨化食品 |
4 | DD201708167493759548618252006 | E43A6E078A04134 | 3.0 | 3.0 | 600ml可口可乐 | 2017-01-01 09:41:00 | B | 已出货未退款 | 已提现 | 饮料 | 碳酸饮料 |
(2)设置系统配置项和全局配置项,绘制销量前5的商品销量柱形图
In [180]:
#(2)设置系统配置项和全局配置项,绘制销量前5的商品销量柱形图 data1=data.groupby('商品').count()###按商品分组,统计商品的出现频次====>即为商品的销量 data2=data1.sort_values('订单号',ascending=False).head()['订单号']###获取销量前五的数据 columns={'订单号':'销量'}#对列进行重新命名 data2=pd.DataFrame(data2)###将其转换成一个DataFrame类型 data2=data2.rename(columns=columns)##对列索引进行重新命名 data3=data2.T##将获取已经处理好的数据进行一个转置 init_opts=opts.InitOpts(width='1000px', height='800px') bar=( Bar(init_opts) .add_xaxis(data3.columns.tolist()) .add_yaxis('销量', data3.loc['销量'].tolist(), label_opts=opts.LabelOpts(position='insideTop')) .set_global_opts(title_opts=opts.TitleOpts( title='销量前5的商品销量柱形图')) ) bar.render('销量前5的商品销量柱形图.html') bar.render_notebook()
Out[180]:
(3)设置系统配置项和全局配置项,绘制售货机每月总交易额折线图
In [181]:
#(3)设置系统配置项和全局配置项,绘制售货机每月总交易额折线图 data['支付时间']=pd.to_datetime(data['支付时间'])#将支付时间转换成datetime类型,便于分析 data['月份']=data['支付时间'].dt.month##从数据中提取出销售月份具体是哪月,并将其添加到data当中去 temp=data.groupby(by=['月份','地点'],as_index=False)['实际金额'].sum() x=sorted(list(set(data['月份'].values.tolist()))) x_data=[str(i)+'月' for i in x] location=list(set(temp['地点'].values.tolist())) location=sorted(location) y=[] for i in location: y.append(np.round(temp[temp['地点']==i]['实际金额'].values.tolist(),2))
line=(Line() .add_xaxis(x_data) .add_yaxis('售货机A',y[0],label_opts=opts.LabelOpts(is_show=False)) .add_yaxis('售货机B',y[1],label_opts=opts.LabelOpts(is_show=False)) .add_yaxis('售货机C',y[2],label_opts=opts.LabelOpts(is_show=False)) .add_yaxis('售货机D',y[3],label_opts=opts.LabelOpts(is_show=False)) .add_yaxis('售货