泰迪杯数据分析比赛2018年B题解答-任务2
泰迪杯数据地址: https://www.tipdm.org/bdrace/jljingsai/20181008/1488.html#sHref.
泰迪杯数据分析2018年B题任务2题目:
任务 2.1 绘制 2017 年 6 月销量前 5 的商品销量柱状图。
任务 2.2 绘制每台售货机每月总交易额折线图及交易额月环比增长率柱
状图。
任务 2.3 绘制每台售货机毛利润占总毛利润比例的饼图(假设饮料类毛
利率为 25%,非饮料类为 20%)。
任务 2.4 绘制 4 月每台售货机交易额与订单量气泡图,横轴为售货机编
号,纵轴为月订单量。
任务 2.5 绘制售货机 C 6、7、8 三个月订单量的热力图,横轴以天为单
位,纵轴以小时为单位。从热力图可以分析得出哪些结论?
任务2 数据可视化
任务2.1
绘制 2017 年 6 月销量前 5 的商品销量柱状图。
老规矩,首先查看一下数据:
目标:此是得出6月份销量前5的商品,并绘制柱状图
分析:首先面对数据,我们得读取数据,然后提取出6月份的数据,紧接着需要对6月份数据中的商品进行总计算,算出商品月销售量。之后进行排序提取出前五数据,并制作柱状图。
实现代码:
import pandas as pd
from datetime import datetime
import numpy as np
import matplotlib.pyplot as plt
data=pd.read_csv(r'D:\大数据学习\数据分析与挖掘\B题\附件1.csv',encoding='gbk')
data.支付时间=pd.to_datetime(data.支付时间,format='%Y/%m/%d')
data['月']=data['支付时间'].dt.month#提取出月数据,并设立一列记录月数据,方便查询
data_1=data.loc[data['月']==6]
dalei=data_1['商品'].unique().tolist()#提取出商品总列表,方便之后进行分类
datasum=[]#设立列表,以便之后使用
datasem=[]#设立列表,以便之后使用
for i in dalei:#对dalei商品数据进行筛选循环,以便提取出对于商品
data_x=data_1[data_1['商品']==i]['实际金额'].sum()#提取出各商品对应的“实际金额”的总金额
data_t=data_1[data_1['商品']==i]['商品'].size#提取出各商品的总数
datasum.append(data_x)#插入列表中
datasem.append(data_t)
task1_2 = pd.DataFrame({
'商品':dalei,'总实际金额':datasum,'销售量':datasem})#对列表进行整理,制作成表单
task1_2.sort_values(by='销售量',ascending=False,inplace=True)#对列表进行以销售量为标准的降序排列
taen=task1_2.head()#取出前5行数据
taen
代码思路:与任务1一样,先对数据进行处理,将时间数据标准化,然后提取出月份数据,以便之后的索引。
然后提取出6月份的数据,对6月份的商品数据进行整合。
最后将数据插入列表中,建立新的表单,对表单进行以销售量为标准的降序处理,再提取出前五行数据。
结果:
得到表单数据后,对数据进行绘制柱状图
实现代码:
%matplotlib#将图置于外窗口显视
plt.rcParams['font.sans-serif']=['SimHei']#将文字设置为微软雅黑
plt.style.use('ggplot')#设置背景图
plt.bar(x=range(taen.shape[0]),#设置柱个数
tick_label=taen.商品,#设置x轴命名
height=taen.销售量,#设置y轴数据
color='red')#颜色取红色
plt.ylabel('销售量')
plt.title('6月份商品销售量前五排名')
for x,y in enumerate(taen.销售量):
plt.text(x,y