admin 管理员组文章数量: 887006
2018年“泰迪杯”数据分析职业技能大赛B题
提示:以下是本篇文章正文内容,下面案例可供参考
目录
题目
任务 1 数据处理与分析
任务 2 数据可视化分析
任务 3 自动售货机画像
任务一
任务二
任务2.1
任务2.2
任务2.3
任务2.4
任务2.5
题目
任务 1 数据处理与分析
任务 1. 1 根据附件 1 中的数据,提取每台售货机对应的销售数据,保存 在 CSV 文件中,文件名分别为“task1-1A. csv”、“task1-1B. csv”、…、 task1-21E. csv”。
任务 1. 2 计算每台售货机 2017 年 4 月份的交易额、订单量及所有售货机 交易总额和订单总量,以表格形式体现在报告中。 任务 1. 3 计算每台售货机每个月的每单平均交易额与日均订单量,以表 格形式体现在报告中。
任务 2 数据可视化分析
任务 2. 1 绘制 2017 年 6 月销量前 5 的商品销量柱状图。
任务 2. 2 绘制每台售货机每月总交易额折线图及交易额月环比增长率柱 状图。
任务 2. 3 绘制每台售货机毛利润占总毛利润比例的饼图(假设饮料类毛 利率为 25%,非饮料类为 20%)。
任务 2. 4 绘制 4 月每台售货机交易额与订单量气泡图,横轴为售货机编 号,纵轴为月订单量。
任务 2. 5 绘制售货机 C 6、 7、 8 三个月订单量的热力图,横轴以天为单 位,纵轴以小时为单位。从热力图可以分析得出哪些结论?
任务 3 自动售货机画像
任务 3. 1 分析各售货机商品销售数据,总结规律,给出每台售货机饮料 类商品的标签,结果保存在 CSV 文件中,文件名分别为 “task3-1A. csv”、 “task3-1B. csv”、…、“task3-1E. csv”
任务 3. 2 在任务 3. 1 的基础上进行标签拓展,依据标签生成完整的售货 机画像,结果保存在 CSV 文件中,文件名分别为“task3-2A. csv”、 task3- 2B. csv”、…、“task3-2E. csv”。依据此画像进行总结描述,给出营销意见。
任务一
#任务1.1
import pandas as pd
import numpy as np
from datetime import datetime
def task1(file, level):data = pd.read_csv('D:\\桌面\\2018 B题\\2018 B题\\附件1.csv', engine='python', encoding='utf-8')df = data.groupby('地点')A = df.get_group(level)A.to_csv('D:\\桌面\\2018 B题\\2018 B题\\' + file, encoding='utf-8-sig')
task1('task1-A.csv', 'A')
task1('task1-B.csv', 'B')
task1('task1-C.csv', 'C')
task1('task1-D.csv', 'D')
task1('task1-E.csv', 'E')#任务1.2
money=[]
goods=[]
def task2(file):data=pd.read_csv('D:\\桌面\\2018 B题\\2018 B题\\'+file,engine='python',encoding='utf-8')if file=='task1-C.csv' or file=='附件1.csv':data=data[~data['支付时间'].isin(['2017/2/29/ 3:44:00 PM'])]data.支付时间=pd.to_datetime(data.支付时间,format='%Y/%m/%d %H:%M')data['月']=data['支付时间'].dt.monthdata_t=data.loc[data['月']==4]data_money=data['实际金额'].sum()data_goods=data_t['商品'].sizemoney.append(data_money)goods.append(data_goods)
task2('task1-A.csv')
task2('task1-B.csv')
task2('task1-C.csv')
task2('task1-D.csv')
task2('task1-E.csv')
task2('附件1.csv')
taskt=pd.DataFrame({'交易额':money,'订单量':goods},index=['A','B','C','D','E','合计'])
taskt.to_csv('D:\\桌面\\2018 B题\\2018 B题\\task2.csv',encoding='utf-8-sig')# 任务1.3
df = {}
def task3(file, level):Month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]money3 = []goods3 = []data = pd.read_csv('D:\\桌面\\2018 B题\\2018 B题\\' + file, engine='python', encoding='utf-8')if file == 'task1-C.csv' or file == '附件1.csv':data = data[~data['支付时间'].isin(['2017/2/29/ 3:44:00 PM'])]data.支付时间 = pd.to_datetime(data.支付时间, format='%Y/%m/%d %H:%M')data['月'] = data['支付时间'].dt.monthfor i in range(1, 13):data_t = data.loc[data['月'] == i]data_money3 = data['实际金额'].sum()data_goods3 = data_t['商品'].sizemean_money3 = data_money3 / data_goods3mean_goods3 = data_goods3 / Month[i - 1]money3.append(mean_money3)goods3.append(mean_goods3)df[level + '每单平均交易额'] = money3df[level + '日均订单量'] = goods3
task3('task1-A.csv', 'A')
task3('task1-B.csv', 'B')
task3('task1-C.csv', 'C')
task3('task1-D.csv', 'D')
task3('task1-E.csv', 'E')
df1 = pd.DataFrame(df, index=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
df1.to_csv('D:\\桌面\\2018 B题\\2018 B题\\task3.csv', encoding='utf-8-sig')
任务二
任务2.1
#任务2.1
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
data=pd.read_csv('D:\\桌面\\2018 B题\\2018 B题\\附件1.csv',engine='python')
data=data[~data['支付时间'].isin(['2017/2/29 3:44:00 PM'])]
data.支付时间=pd.to_datetime(data.支付时间,format='%Y/%m/%d')
data['月']=data['支付时间'].dt.month
data_six=data.loc[data['月']==6]
data_six2=data_six['商品'].unique().tolist()
sum=[]
size=[]
for i in data_six2:data_six3=data_six.loc[data_six['商品']==i]data_six_sum=data_six3['实际金额'].sum()data_six_size=data_six3['商品'].sizesum.append(data_six_sum)size.append(data_six_size)
data1=pd.DataFrame({'商品':data_six2,'销量':size,'销售额':sum})
data1.sort_values(by='销量',ascending=False,inplace=True)
data2=data1.iloc[0:5]
x=np.arange(len(data2['商品']))
plt.bar(x-0.2,data2['销量'],width=0.4,label='销量')
plt.bar(x+0.2,data2['销售额'],width=0.4,label='销售额')
data3=data2['销量'].tolist()
data4=data2['销售额'].tolist()
data5=data2['商品'].tolist()
for i in x :plt.text(i-0.2,data3[i],data3[i],va='bottom',ha='center')plt.text(i+0.2, data4[i], data4[i], va='bottom', ha='center')
plt.rcParams['font.sans-serif']=["SimHei"]
plt.rcParams['axes.unicode_minus']=False
plt.xticks(x,labels=data5,rotation=15)
plt.title('六月销量排名前五商品')
plt.legend()
plt.show()
任务2.2
代码如下:
#任务2.2
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
def task22(file,level):datatask2 = pd.read_csv('D:\\桌面\\2018 B题\\2018 B题\\'+file)if file=='task1-C.csv':datatask2=datatask2[~datatask2['支付时间'].isin(['2017/2/29 3:44:00 PM'])]datatask2.支付时间 = pd.to_datetime(datatask2.支付时间, format='%Y/%m/%d')datatask2['月'] = datatask2['支付时间'].dt.monthsumtask2 = datatask2.groupby('月').sum('实际金额')month = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]sumlist = sumtask2['实际金额'].tolist()disl = []for i in range(1, 12):dis = (sumlist[i] - sumlist[i - 1]) / sumlist[i - 1]disl.append(dis)plt.subplot(121)plt.plot(month, sumtask2['实际金额']plt.legend()plt.title('每月总交易额折线图')plt.subplot(122)plt.bar(month[1:], disl,label=level)plt.title('交易额月环比增长率柱状图')plt.legend()
task22('task1-A.csv','A')
task22('task1-B.csv','B')
task22('task1-C.csv','C')
task22('task1-D.csv','D')
task22('task1-E.csv','E')
plt.rcParams['font.sans-serif']=["SimHei"]
plt.rcParams['axes.unicode_minus']=False
plt.show()
任务2.3
#任务2.3
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
datatask31=pd.read_csv('D:\\桌面\\2018 B题\\2018 B题\\附件2.csv')
datatask32=datatask31['商品'].tolist()
drink=datatask31.groupby('大类').groups
dlist=drink['饮料'].tolist()
s_profit=[]
def task23(file):datatask23 = pd.read_csv('D:\\桌面\\2018 B题\\2018 B题\\'+file)dsum = 0for i in dlist:ddrink = datatask23.loc[datatask23['商品'] == datatask32[i]]s = ddrink['实际金额'].sum()dsum += ssum1 = datatask23['实际金额'].sum()ndsum = sum1 - dsumprofit = dsum * 0.25 + ndsum * 0.2s_profit.append(profit)
task23('task1-A.csv')
task23('task1-B.csv')
task23('task1-C.csv')
task23('task1-D.csv')
task23('task1-E.csv')
plt.pie(s_profit,labels=['A','B','C','D','E'],autopct='%.2f%%')
plt.title('售货机毛利润占总毛利润比例的饼图')
plt.rcParams['font.sans-serif']=['SimHei']
plt.show()
任务2.4
#任务2.4
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
sum4=[]
size4=[]
def task24(file):data24=pd.read_csv('D:\\桌面\\2018 B题\\2018 B题\\'+file)data24=data24[~data24['支付时间'].isin(['2017/2/29 3:44:00 PM'])]data24['支付时间']=pd.to_datetime(data24['支付时间'],format='%Y/%m/%d')data24['月']=data24['支付时间'].dt.monthdata24=data24[data24['月']==4]sum24=data24['实际金额'].sum()size24=data24['商品'].sizesum4.append(sum24)size4.append(size24)
task24('task1-A.csv')
task24('task1-B.csv')
task24('task1-C.csv')
task24('task1-D.csv')
task24('task1-E.csv')
index=['A','B','C','D','E']
plt.scatter(index,size4,s=size4,color='pink')
plt.title('4月售货机交易额与订单量气泡图')
plt.rcParams['font.sans-serif']=['SimHei']
plt.show()
任务2.5
#任务2.5
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
import seaborn as sns
dataC=pd.read_csv('D:\\桌面\\2018 B题\\2018 B题\\task1-C.csv')
dataC=dataC[~dataC['支付时间'].isin(['2017/2/29 3:44:00 PM'])]
dataC['支付时间']=pd.to_datetime(dataC['支付时间'],format='%Y/%m/%d')
dataC['月']=dataC['支付时间'].dt.month
dataC['日']=dataC['支付时间'].dt.day
dataC['时']=dataC['支付时间'].dt.hour
def task25(month):dataC1 = dataC[dataC['月'] == month]dataC1 = dataC1.groupby(['日', '时'])grp = dataC1.aggregate({'商品': np.size})grp1 = grp.pivot_table(index='时', columns='日', values='商品')sns.heatmap(data=grp1,cmap='Greens', linewidths=.1, annot=False, fmt='.1')plt.title('售货机C{:d}月订单量的热力图'.format(month))plt.rcParams['font.sans-serif'] = ['SimHei']plt.show()
task25(6)
task25(7)
task25(8)
本文标签: 2018年“泰迪杯”数据分析职业技能大赛B题
版权声明:本文标题:2018年“泰迪杯”数据分析职业技能大赛B题 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732354725h1534103.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论