这周复习了python数据处理的实战,把之前竞赛的题目重新做了一遍。这里侧重数据分析与数据处理的部分。文末含原始题目与数据,需要的小伙伴自取~

【事先说明】:本文只是在技术维度上进行分析及展示,在业务维度上没有做过多分析。事实上在竞赛或工作中,数据分析都是离不开业务的,不过现在就先练练技术啦~

文章目录

  • 1导入相关库和数据
  • 2数据预处理
    • 查看数据前五行
    • 查看数据类型、有无缺失值
    • 查看数值数据
  • 3任务一 数据分析与预测
    • 任务 1.1
      • 销售额和利润数据
      • 同比增长率
    • 任务1.2
      • 各国家有关服务分类销售额和利润数据。
      • 各地区有关服务分类销售额和利润数据。
    • 任务1.3
      • 合同数
      • 成交率
  • 4任务2 可视化展示
    • 任务 2.1
    • 任务 2.2
    • 任务 2.4
    • 任务 2.5
  • 5 数据

先来看看赛题要求吧

赛题要求

目标

  1. 统计产品在当地的销售数据,预测未来的销售情况。
  2. 设计可视化数字大屏,展示产品的销售情况,分析产品的盈利能力。

任务

任务 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 分析数字大屏的指标数据和图表,撰写公司产品的销售情况和盈 利能力的分析报告。

以下是各题的实现代码

1导入相关库和数据

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)

2数据预处理

查看数据前五行

data01.head()

data02.head()

查看数据类型、有无缺失值

#查看数据信息
data01.info()

没有缺失值,非常完美

data02.info()

我们发现,在读取数据的时候,将第6、7列读进去了,这两列是没有意义的,我们直接删掉。

#对data02的数据清洗
data02=data02.iloc[:,0:5]

查看数值数据

粗略看看有无异常

data01.describe()

data02.describe()


看起来没啥问题

3任务一 数据分析与预测

任务 1.1

统计各个年度/季度中,地区、国家、服务分类的销售额和利润数据,并计算各国、各服务分类销售额和利润的同比增长率。

销售额和利润数据

各个年度/季度中,地区的销售额利润数据

# 各个年度/季度中,地区的销售额和利润数据
#将日期设置为索引
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.2

统计各地区、国家有关服务分类销售额和利润数据。

# 相比任务1.1,没有考虑时间
data1_2gj=data01.pivot_table(['销售额','利润'],index='国家',columns='服务分类',aggfunc=['sum','mean'])
data1_2dq=data01.pivot_table(['销售额','利润'],index='地区',columns='服务分类',aggfunc=['sum','mean'])

各国家有关服务分类销售额和利润数据。

各地区有关服务分类销售额和利润数据。

任务1.3

统计各个销售经理的成交合同数和成交率。

合同数

#合同数量
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)

4任务2 可视化展示

我是用tableau实现的,就进行个展示吧

任务 2.1

绘制非洲各国产品的销售地图,并能够查看该国的销售额和利润。 根据销售额的降序排列,绘制非洲各国产品销售额和利润数据的图表。

任务 2.2

根据地区、国家等维度,绘制各服务分类的销售额和利润的年增长率及各季度同比增长率的图表。

任务 2.4

绘制销售经理的销售合同数前 5 名排行榜。

任务 2.5

绘制销售额后 10 名的国家排行榜。

5 数据

百度网盘:
链接:https://pan.baidu.com/s/1Zs24s1UMXJcnZ-ooq38pQA
提取码:56qa

ps:任务1.4和2.3涉及到预测的部分,需用到数据挖掘,挖个坑xx本人打算复习机器学习后再做对应的实践~

总结:

  • 考察点:时间序列数据的处理与分析、数据重组聚合、数据可视化
  • 难易程度:偏简单
  • 个人结合:任务一主要运用数据重组和时间序列分析。pivot_table()函数的可用性极强。时间序列分析中用到较多的方法是:提取年份、季节;同比、环比的计算(shift);时间序列索引的应用。在可视化的部分用tableau来实现既快速又简单。

2021泰迪杯数据分析技能赛A题:Python实现通讯产品销售和盈利能力分析(含原始数据)相关推荐

  1. 2021泰迪杯数据分析技能赛B题-肥料登记数据分析

    调用模块: import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns p ...

  2. 2021 年“泰迪杯”数据分析技能赛 B 题 肥料登记数据分析 (视频讲解+解题源码)、数据挖掘、数据分析实战

    2021 年"泰迪杯"数据分析技能赛 B 题 肥料登记数据分析 (视频讲解+解题源码).数据挖掘.数据分析实战 前言: 整理了2021 年"泰迪杯"数据分析技能 ...

  3. 2022泰迪杯数据分析技能赛B题方案及赛后总结:银行客户忠诚度分析

    第五届"泰迪杯"数据分析技能赛(B题)『一等奖』,@队友:东可在编程.好同志歪歪 B题题目为"银行客户忠诚度分析",题目给出了短期客户产品购买数据"s ...

  4. 2022第五届“泰迪杯”数据分析技能赛-B题-银行客户忠诚度分析(下)

    2022第五届"泰迪杯"数据分析技能赛-B题-银行客户忠诚度分析(上)链接:https://blog.csdn.net/weixin_60200880/article/detail ...

  5. 2022第五届“泰迪杯”数据分析技能赛-B题-银行客户忠诚度分析(上)

    新手参加比赛,不足之处敬请谅解 题目链接:链接:https://pan.baidu.com/s/1x1U-kobvPjNMm8xnvS9Gdg  提取码:7id3 目录 任务1 数据探索与清洗 任务1 ...

  6. 2022年”泰迪杯“数据分析技能赛B题:银行客户忠诚度分析

    A题和B题我们小组都做了,最终A题二等奖,B题一等奖.总结写在最前面,泰迪杯技能赛不像数学建模比赛,所有的问题具有引导性,但一天完成建模和论文也不是一件容易的事,如果想要通过Python实现分析,需要 ...

  7. 2022第五届“泰迪杯”数据分析技能赛-B题-银行客户忠诚度分析

    目录 任务1 数据探索与清洗 任务1.1 任务1.2 任务2 产品销售数据可视化分析 任务2.1 任务3 客户流失因素可视化分析 任务3.1 任务3.2 任务3.3 任务3.4 任务4 特征构建 任务 ...

  8. 第五届“泰迪杯”数据分析技能赛 经验代码分享

    第五届"泰迪杯"数据分析技能赛 经验/代码分享 品牌:"泰迪杯"数据分析技能赛 组织单位:泰迪杯数据分析技能赛组织委员会.广东泰迪智能科技股份有限公司.广东省工 ...

  9. 第五届“泰迪杯”数据分析技能赛

    为推广我国高校数据分析实践教学,培养学生数据分析的应用和创新能力,增加校企交流合作和信息共享,提升我国高校的教学质量和企业的竞争能力,"泰迪杯"数据分析技能赛(以下简称竞赛)于20 ...

  10. 第五届泰迪杯数据分析技能大赛思路

    各有关单位: 为推广我国高校数据分析实践教学,培养学生数据分析的应用和创新能力,增加校企交流合作和信息共享,提升我国高校的教学质量和企业的竞争能力,"泰迪杯"数据分析技能赛(以下简 ...

最新文章

  1. Postfix邮件设定相关
  2. 【C 语言】文件操作 ( 文件加密解密 | 使用第三方 DES 加密解密库 | 头文件导入 | 兼容 C++ 语言 | 加密解密函数说明 )
  3. 玩转oracle 11g(40):Oracle11g 不区分大小写设定
  4. 团结就是力量,TeamCola浅谈创业团队腾云驾雾的归国征程
  5. 【Python】之split()方法
  6. java开发者最常去的20个英文网站
  7. python日常能做什么-Python除了做AI、还能干啥?
  8. 1090 Highest Price in Supply Chain (25 分) 树的遍历:深度搜索+vector
  9. IDEA Mybatis xml中配置sql代码自动提示【必看】
  10. 身份证校验(JAVA、JS)
  11. 最低报酬率计算机公式,股票报酬率计算公式
  12. 游戏术语[持续整理]
  13. 供应博思特posital增量型编码器
  14. Google Docs Viewer在线打开阅读PDF、Word、PPT、Excel等
  15. 整理GitHub近期热门开源后台管理系统
  16. 常州刘国钧计算机专业,2020常州刘国钧高等职业技术学校的录取分数线
  17. quantopian寻找策略之mean_reversion
  18. Photoshop 导入堆栈出错: 载入图层 无法合并智能对象文档。将跳过这些文档
  19. 洪特规则计算孤立原子/离子磁矩
  20. 计算机与网络应用word解析,计算机二级word真题:《计算机与网络应用》教材的编排...

热门文章

  1. 基于C# WinForms窗体——飞机大战
  2. 2020年全国工业固体废物、危险废物产生量、利用处置量及防治措施分析[图]
  3. android视频播放器课程设计,ANDROID视频播放器课程设计.pdf
  4. twitter如何以图搜图_如何从 shutterstock 下载无水印小样图
  5. 作为执行控制功能”守门人”的前岛叶
  6. word修改或删除脚注或尾注分隔符
  7. 2021-06-05按键精灵实现远程获取消息内容
  8. arduino的L298N电机驱动模块
  9. JavaList集合根据ParentId递归【无限套娃】
  10. Obsidian安卓端同步及使用(Remotely Save+阿里云同步S3)