泰迪杯数据分析比赛2018年B题解答

泰迪杯数据分析比赛2018年B题解答-任务1

任务1-文章目录

  • 泰迪杯数据分析比赛2018年B题解答-任务1
  • 任务1 数据处理与分析
    • 任务1.1
    • 任务1.2
    • 任务1.3
  • 结尾

泰迪杯数据地址:https://www.tipdm.org/bdrace/jljingsai/20181008/1488.html#sHref
泰迪杯数据分析2018年B题任务1题目:

任务 1.1 根据附件 1 中的数据,提取每台售货机对应的销售数据,保存# 系列文章目录
任务 1.2 计算每台售货机 2017 年 4 月份的交易额、订单量及所有售货机交易总额和订单总量,以表格形式体现在报告中。
任务 1.3 计算每台售货机每个月的每单平均交易额与日均订单量,以表格形式体现在报告中。


任务1 数据处理与分析

任务1.1

题目:根据附件 1 中的数据,提取每台售货机对应的销售数据,保存在 CSV 文件中,文件名分别为“task1-1A.csv”、“task1-1B.csv”、…、task1- 1E.csv”。

附件1数据:

泰迪杯数据分析比赛2018年B题解答_第1张图片

代码内容:

import pandas as pd
from datetime import datetime
def task1(data1,level):  
    data=pd.read_csv(r'D:\大数据学习\数据分析与挖掘\B题\附件1.csv',encoding='gbk')#获取数据
    data.支付时间=pd.to_datetime(data.支付时间,format='%Y/%m/%d')#对数据进行时间数据转换
    data.drop(columns='设备ID',axis=1,inplace=True)#删除设备ID
    data=data.loc[data['地点']==level,:]#取出地点
    data.drop(columns='地点',axis=1,inplace=True)#删除地点
    data.to_csv(r'D:\大数据学习\数据分析与挖掘\B题\\'+data1,encoding='gbk')#保存数据
task1('task1-B.csv','B')
task1('task1-C.csv','C')
task1('task1-D.csv','D')
task1('task1-E.csv','E')

代码思路:
通过python类方法进行统一的整合处理。在类中使用索引方法对地点数据进行索引便可得出数据集。
因提取出的地点数据中设备ID与地点是相同的,因此我将提取出的数据删除设备ID与地点,节省表单空间。
结果:

提取后的数据表

任务1.2

题目:计算每台售货机 2017 年 4 月份的交易额、订单量及所有售货机交易总额和订单总量,以表格形式体现在报告中。

分析:目标为计算4月份的交易额与订单量,但在表单中只有实际金额与商品,因此我们需要先对数据进行索引,先索引出4月份的数据,然后进行统计交易额与订单量。

实现代码:

import numpy as np
import pandas as pd
from datetime import datetime
def task2(data1):
    data_2=pd.read_csv(r'D:\大数据学习\数据分析与挖掘\B题\\'+data1,encoding='gbk')
    data_2.支付时间=pd.to_datetime(data_2.支付时间,format='%Y/%m/%d')#对时间数据进行标准化处理
    data_2['月']=data_2['支付时间'].dt.month#提取出月数据,并设立一列记录月数据,方便查询
    data_t=data_2.loc[data_2['月']==4]#提取出月份为4的数据表
    data_meny=data_t['实际金额'].sum()
    data_xs=data_t['商品'].size
    print('交易额:'+str(data_meny)+',订单量:'+str(data_xs))
task2('task1-A.csv')
task2('task1-B.csv')
task2('task1-C.csv')
task2('task1-D.csv')
task2('task1-E.csv')
task2('附件1.csv')

代码思路:
此依旧使用类方法进行处理,首先对数据中的‘支付时间’进行时间标准化处理,然后使用datetime中的datetime方法进行月份提取,并且将提取出来的月份数据添加入列表中,以便之后使用。
最后将‘实际金额’与‘商品’进行统计。
结果:

交易额:1804.5,订单量:447
交易额:2457.3999999999996,订单量:603
交易额:3232.3,订单量:734
交易额:1679.1,订单量:443
交易额:3723.1000000000004,订单量:895
交易额:12896.400000000001,订单量:3122

任务1.3

题目:计算每台售货机每个月的每单平均交易额与日均订单量,以表格形式体现在报告中。

分析:此题与1.2的处理方法是相似的,首先对月份数据进行提取,随后统计每月的交易额与订单量,每单平均交易额则是月总交易额除以月总订单量,日均订单量则是月总订单量除以当月天数。

实现代码:

def task3(data1):
    data_2=pd.read_csv(r'D:\大数据学习\数据分析与挖掘\B题\\'+data1,encoding='gbk')
    data_2.支付时间=pd.to_datetime(data_2.支付时间,format='%Y/%m/%d')
    data_2['月']=data_2['支付时间'].dt.month#提取出月数据,并设立一列记录月数据,方便查询
    date=[31,28,31,30,31,30,31,31,30,31,30,31]#设置月份天数
    a=0
    data_vm=[]#设置列表,方便数据存储
    data_vs=[]
    data_mone=[]
    data_sum=[]
    while a<12:
        a+=1
        data_t=data_2.loc[data_2['月']==a]#提取出月份为4的数据表
        data_meny=data_t['实际金额'].sum()
        data_xs=data_t['商品'].size
        data_vmeny=int(data_meny)/int(data_xs)#每月的每单平均交易额
        data_vxs=int(data_xs)/int(date[a-1])#日均订单量
        data_vm.append(data_vmeny)
        data_vs.append(data_vxs)
        data_mone.append(a)#月份
        data_sum.append(data_meny)
    task=pd.DataFrame({
     '月份':data_mone,'每月的每单平均交易额':data_vm,'日均订单量':data_vs})#制成表单
    print(task)
    return data_sum#此是因为后面任务需要使用到,所以返回data_sum
    #return task
task3('task1-A.csv')
task3('task1-B.csv')
task3('task1-C.csv')
task3('task1-D.csv')
task3('task1-E.csv')

代码思路:与1.2的代码思路相同。
结果:

'''因为数据众多,因此这里显视A数据的结果'''
    月份  每月的每单平均交易额      日均订单量
0    1    4.504478  10.806452
1    2    3.859649   4.071429
2    3    3.584314   8.225806
3    4    4.035794  14.900000
4    5    4.477513  24.387097
5    6    4.047334  55.633333
6    7    4.096639  15.354839
7    8    3.357357  21.483871
8    9    4.306731  34.666667
9   10    4.020447  50.483871
10  11    4.471552  38.666667
11  12    3.787818  64.612903

结尾

关于之后的任务2,3,4题目,我将会持续更新滴。
还请各位大神指点我这小白的代码。

你可能感兴趣的:(数据分析,数据分析)