这周复习了python数据处理的实战,把之前竞赛的题目重新做了一遍。这里侧重数据分析与数据处理的部分。文末含原始题目与数据,需要的小伙伴自取~
【事先说明】:本文只是在技术维度上进行分析及展示,在业务维度上没有做过多分析。事实上在竞赛或工作中,数据分析都是离不开业务的,不过现在就先练练技术啦~
先来看看赛题要求吧
赛题要求
目标
任务
任务 1 数据分析与预测 根据附件“非洲通讯产品销售数据”中的数据,分别实现以下任务:
任务 1.1 统计各个年度/季度中,地区、国家、服务分类的销售额和利润数 据,并计算各国、各服务分类销售额和利润的同比增长率。
任务 1.2 统计各地区、国家有关服务分类销售额和利润数据。
任务 1.3 统计各个销售经理的成交合同数和成交率。
任务 1.4 分别预测各个地区、国家、服务分类 2021 年第一季度销售额和利 润。
任务 2 可视化展示和撰写分析报告 对各地区、国家、服务分类的产品销售额和利润等数据,以及销售经理的业 绩数据,进行同比、类比、相关性等分析或预测,发现趋势。根据分析和预测结 果,设计一个数字大屏,根据目标,合理布局,展示能够代表产品销售情况和盈 利能力的数据指标和可视化图表等。 在下面任务不同的维度分析中,必要时,可以设置选择框,使用联动的方式, 根据选择框,查看和展示该选择框范围的数据和可视化图表。例如,设立国家选 择框,选项包括“全部”和国家名称,可以查看全部或某个国家的指标数据和可 视化图表。其他类推。 数字化大屏至少包括以下任务:
任务 2.1 绘制非洲各国产品的销售地图,并能够查看该国的销售额和利润。 根据销售额的降序排列,绘制非洲各国产品销售额和利润数据的图表。
任务 2.2 根据地区、国家等维度,绘制各服务分类的销售额和利润的年增 长率及各季度同比增长率的图表。
任务 2.3 根据地区、国家等维度,绘制 2021 年第一季度各服务分类的销售 额和利润预测值的图表。
任务 2.4 绘制销售经理的销售合同数前 5 名排行榜。
任务 2.5 绘制销售额后 10 名的国家排行榜。
任务 2.6 分析数字大屏的指标数据和图表,撰写公司产品的销售情况和盈 利能力的分析报告。
以下是各题的实现代码
import pandas as pd
import numpy as np
import datetime as dt
data01=pd.read_excel(r'C:\Users\章ky\Desktop\非洲通讯产品销售数据.xlsx')
data02=pd.read_excel(r'C:\Users\章ky\Desktop\非洲通讯产品销售数据.xlsx',sheet_name=1)
data01.head()
data02.head()
#查看数据信息
data01.info()
没有缺失值,非常完美
data02.info()
我们发现,在读取数据的时候,将第6、7列读进去了,这两列是没有意义的,我们直接删掉。
#对data02的数据清洗
data02=data02.iloc[:,0:5]
粗略看看有无异常
data01.describe()
data02.describe()
统计各个年度/季度中,地区、国家、服务分类的销售额和利润数据,并计算各国、各服务分类销售额和利润的同比增长率。
各个年度/季度中,地区的销售额和利润数据
# 各个年度/季度中,地区的销售额和利润数据
#将日期设置为索引
ind=pd.DatetimeIndex(data01['日期'])
data01=data01.set_index(ind)
#分组
data01['year']=data01['日期'].dt.year
data01['quarter']=data01['日期'].dt.quarter
#统计各个年度/季度中,地区、国家、服务分类的销售额和利润数据
writer = pd.ExcelWriter('result1.1.xlsx')
diqu=data01.pivot_table(['利润','销售额'],index=['year','quarter'],columns='地区',aggfunc=['sum','mean','median'],margins=True)
diqu.to_excel(writer,index=True,sheet_name='年度地区')
gj=data01.pivot_table(['利润','销售额'],index=['year','quarter'],columns='国家',aggfunc=['sum','mean','median'],margins=True)
gj.to_excel(writer,index=True,sheet_name='年度国家')
fw=data01.pivot_table(['利润','销售额'],index=['year','quarter'],columns='服务分类',aggfunc=['sum','mean','median'],margins=True)
fw.to_excel(writer,index=True,sheet_name='年度服务分类')
writer.save()
writer.close()
【这里利用 pd.ExcelWriter()更加来方便的将数据一个sheet一个sheet的写到excel中】
各个年度/季度中,地区的销售额和利润数据
计算各国、各服务分类销售额和利润的同比增长率。
#计算各国、各服务分类销售额和利润的同比增长率
# 同比增长率一般是指去年和同期相比较的增长率。
#各服务分类年度销售额和利润的同比增长率
fw=data01.pivot_table(['销售额','利润'],index='year',columns='服务分类',aggfunc='sum')
fw_y=fw/fw.shift(1)-1
fw_y=fw_y.loc[2018:,:]
#各服务分类季度销售额和利润的同比增长率
fwq=data01.pivot_table(['销售额','利润'],index=['year','quarter'],columns='服务分类',aggfunc='sum')
fw_q=fwq/fwq.shift(4)-1
fw_q=fw_q.iloc[4:,:]
#各国家年度销售额和利润的同比增长率
gj=data01.pivot_table(['销售额','利润'],index='year',columns='国家',aggfunc='sum')
gj_y=gj/gj.shift(1)-1
gj_y=gj_y.loc[2018:,:]
#各国家各季度销售额和利润的同比增长率
gjq=data01.pivot_table(['销售额','利润'],index=['year','quarter'],columns='国家',aggfunc='sum')
gj_q=gjq/gjq.shift(4)-1
gj_q=gj_q.iloc[4:,:]
【知识点:shift()、pivot_table()的使用】
结果如下:
各年各国同比增长:
各年各服务分类同比增长:
各季度各国同比增长:
各季度各服务分类同比增长:
统计各地区、国家有关服务分类销售额和利润数据。
# 相比任务1.1,没有考虑时间
data1_2gj=data01.pivot_table(['销售额','利润'],index='国家',columns='服务分类',aggfunc=['sum','mean'])
data1_2dq=data01.pivot_table(['销售额','利润'],index='地区',columns='服务分类',aggfunc=['sum','mean'])
统计各个销售经理的成交合同数和成交率。
#合同数量
grouped=data02[['销售经理','销售合同']].groupby('销售经理').sum()
grouped_sorted=grouped.sort_values(by='销售合同',ascending=False)
grouped_sorted
各销售经理的合同数
这里注意,成交率直接相加的意义不大
#成交率:由于每行的销售合同数量不一样,成交率不应该直接相加
def deal(data):
s=data02['销售合同']*data02['成交率']
rate=s.sum()/data['销售合同'].sum()
return rate
data02.groupby('销售经理').apply(deal)
我是用tableau实现的,就进行个展示吧
绘制非洲各国产品的销售地图,并能够查看该国的销售额和利润。 根据销售额的降序排列,绘制非洲各国产品销售额和利润数据的图表。
根据地区、国家等维度,绘制各服务分类的销售额和利润的年增长率及各季度同比增长率的图表。
绘制销售经理的销售合同数前 5 名排行榜。
绘制销售额后 10 名的国家排行榜。
百度网盘:
链接:https://pan.baidu.com/s/1Zs24s1UMXJcnZ-ooq38pQA
提取码:56qa
ps:任务1.4和2.3涉及到预测的部分,需用到数据挖掘,挖个坑xx本人打算复习机器学习后再做对应的实践~
总结: