泰迪杯A题通讯产品销售和盈利能力分析一等奖作品(1)

简介: 泰迪杯A题通讯产品销售和盈利能力分析一等奖作品1. A 题 通讯产品销售和盈利能力分析 简介一、背景二、目标三、任务

1. A 题 通讯产品销售和盈利能力分析 简介

一、背景

进入本世纪以来,我国通讯产品得到了飞速发展,其技术先进,价格便宜,

深受世界各国和地区尤其是非洲国家的欢迎。某通讯公司在非洲的多个国家深耕多年,产品与服务遍布整个非洲大陆。为了更好地了解公司的销售情况,采用产品的销售额和利润数据,对其盈利能力进行分析和预测,给决策人员提供分析报告,以便为非洲各国提供更好的产品销售策略和服务。

二、目标

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

三、任务

请根据附件中提供的数据(其中,金额计量单位:万元;合同数计量单位:

个),自行选择分析工具完成以下任务,并撰写报告。如使用“TipDM-BI 数据分析和可视化平台”实现,使用方式详见附录。

任务 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. 登录方式
  2. 请使用队长的账号登录数睿思网站(www.tipdm.org),进入第四届技能赛页面。为保证成功提交,请使用谷歌浏览器无痕模式。

作品提交

报告以 PDF 格式提交,文件名为“report.pdf”,要求逻辑清晰、条理分

明,内容包括每个任务的完成思路、操作步骤、必要的中间过程、任务的结果及分析。

针对任务 1,报告中应包含但不限于如下要点:

(1) 任务 1.1 需要展示 2020 年年度销售额前 3 名的国家及其年增长率。

(2) 任务 1.2 需要展示各地区有关服务分类利润数据。

(3) 任务 1.3 需要展示销售经理成交合同数前 3 名的数据。

(4) 任务 1.4 需要给出明确的预测模型,并展示地区、国家、服务分类

销售额预测值最大的 1 条数据。

附件提交

3.1 将任务 1、2 所编写的源程序文件,分别用“task1”、“task2”命名,保存在“program”文件夹中;如使用 TipDM-BI 数据分析和可视化平台实现,将使用平台创建的自助仪表盘截图保存到“program”文件夹中。

3.2 将任务 1、2 所产生的结果文件,分别保存到“result1”,“result2”文件夹,然后存放到“result”文件夹中。

3.3 将程序文件夹“program”、结果文件夹“result”以及报告的 word版本打包成“appendix.zip”,作为附件提交。

2. 一等奖作品分享

摘要

进入本世纪以来,我国通讯产品得到了飞速发展,其技术先进,价格便宜,深受世界各国和地区尤其是非洲国家的欢迎。某通讯公司在非洲的多个国家深耕多年,产品与服务遍布整个非洲大陆。为了更好地了解公司的销售情况,采用产品的销售额和利润数据,对其盈利能力进行分析和预测,给决策人员提供分析报告,以便为非洲各国提供更好的产品销售策略和服务。


针对任务一,首先对所给数据集进行缺失值、异常值、重复值等 方面的处理。其次通过python中的loc和groupby等函数,对表SalesData进行处理,获取产品在当地的销售数据,分析统计出各年度各国销售额和利润的同比增长率,以及各年度各服务分类的销售额和利润的同比增长列率,利用groupby函数对“地区”,“国家”,“服务分类”进行分组,统计出销售额和利润数据。针对表SalespersonData,首先计算出每个经理的总合同数,再通过各个经理的成交合同数求出各个经理的成交率。根据2017-2020年第一季度的各个地区,国家,服务分类的销售额和利润数据,给出明确的预测模型,预测出2021年第一季度销售额和利润数据。


针对任务二,首先对各个地区,国家,服务分类的产品销售额和利润等数据,以及销售经理的业绩数据进行同比,类比,相关性等分析或预测,发现趋势。绘制不同维度的图表,设计数字大屏,分析公司产品销售情况和盈利能力,并给出指导建议。

目录


正文

任务一:数据分析与预测

1.1.1 缺失值重复值处理和说明

针对数据缺失情况,本次分析将会采用以下的处理方式:针对数据为空值的情况,如果该特征数据缺失情况低于 10%,则结合该特征的重要性进行综合判断。如果字段重要性较低,则考虑直接删除,如果字段重要性较高,则进行插值法或者采用数据均值进行填补。

导入依赖,并设置中文显示:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
%matplotlib inline
font = {
    'family':'SimHei',
    'weight':'bold',
    'size':12
}
matplotlib.rc("font", **font)
matplotlib.rcParams['axes.unicode_minus']=False

导入非洲通讯产品销售数据.xlsx数据并查看SalesData:

salesData = pd.read_excel("./非洲通讯产品销售数据.xlsx",engine='openpyxl', sheet_name = "SalesData")
salesData

输出为:


导入非洲通讯产品销售数据.xlsx数据并查看SalespersonData:

salespersonData = pd.read_excel("./非洲通讯产品销售数据.xlsx",engine='openpyxl', sheet_name = "SalespersonData")
salespersonData

输出为:


查看SalesData有无缺失值和重复值:

# 对第一张表进行处理
salesData.info() # 无缺失值

输出为:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1056 entries, 0 to 1055
Data columns (total 7 columns):
 #   Column  Non-Null Count  Dtype         
---  ------  --------------  -----         
 0   日期      1056 non-null   datetime64[ns]
 1   国家      1056 non-null   object        
 2   城市      1056 non-null   object        
 3   地区      1056 non-null   object        
 4   服务分类    1056 non-null   object        
 5   销售额     1056 non-null   float64       
 6   利润      1056 non-null   float64       
dtypes: datetime64[ns](1), float64(2), object(4)
memory usage: 57.9+ KB

查看有无重复值

salesData.duplicated().sum()

输出为:

0

查看salespersonData有无缺失值和重复值:

salespersonData.info()

输出为:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 160 entries, 0 to 159
Data columns (total 7 columns):
 #   Column                  Non-Null Count  Dtype         
---  ------                  --------------  -----         
 0   日期                      160 non-null    datetime64[ns]
 1   销售经理                    160 non-null    object        
 2   地区                      160 non-null    object        
 3   销售合同                    160 non-null    int64         
 4   成交率                     160 non-null    float64       
 5   Unnamed: 5              0 non-null      float64       
 6   备注:本表格中“销售合同”为“已成交合同”。  0 non-null      float64       
dtypes: datetime64[ns](1), float64(3), int64(1), object(2)
memory usage: 8.9+ KB

查看重复值

salespersonData.duplicated().sum()

输出为:

0

发现表salesData和salespersonData无重复值

1.1.2 统计各年度各国销售额数据&计算同比增长率

因为统计的是各年度的销售额数据,所有需要对“日期”列进行拆分,取出年份:

# 先对日期列进行处理
year = salesData.loc[:, "日期"].astype("str").str.split("-", expand = True)[0]
year

输出为:


备注:上面代码中对时间数据进行处理,用时间类型会更好一些,所以转变成字符串的方式未必最佳

year_data = salesData.loc[:, ["国家", "地区", "服务分类", "销售额", "利润"]]
year_data["年份"] = year
year_data

输出为:


按照不同年份求各地区的销售额

# 按照不同年份求各地区的销售额
year_area_sale = year_data.groupby(["年份", "地区"])["销售额"].sum()
year_area_sale.to_csv("./year_area_sale.csv")
year_area_sale

输出为:


通过groupby函数对[“年份”, “国家"]进行分组,对”销售额“进行求和

year_cou_sale = year_data.groupby(["年份", "国家"])["销售额"].sum()
year_cou_sale.to_csv("./year_cou_sale.csv")
year_cou_sale

输出为:



计算出各年度各国销售额数据的同比增长率

同比增长率 = ( 今年销售额 − 去年销售额 ) / 去年销售额 同比增长率=(今年销售额-去年销售额)/去年销售额

同比增长率=(今年销售额−去年销售额)/去年销售额

# 各年度各国的销售额的同比增长率
task1 = pd.read_csv("./year_cou_sale.csv")
task1

输出为:


计算同比增长率

temp = pd.merge(task1[task1.loc[:, "年份"] == 2017], task1[task1.loc[:, "年份"] == 2018], how="inner", left_on = "国家", right_on = "国家")
temp = pd.merge(temp, task1[task1.loc[:, "年份"] == 2019] ,how="inner", left_on = "国家", right_on = "国家")
temp = pd.merge(temp, task1[task1.loc[:, "年份"] == 2020] ,how="inner", left_on = "国家", right_on = "国家")
temp.drop(["年份_x", "年份_y"], axis = 1, inplace=True)
temp.columns = ["国家", "2017销售额", "2018销售额", "2019销售额", "2020销售额"]
temp
temp["2017-2018销售额同比增长率"] = (temp["2018销售额"] - temp["2017销售额"]) / temp["2017销售额"]
temp["2018-2019销售额同比增长率"] = (temp["2019销售额"] - temp["2018销售额"]) / temp["2018销售额"]
temp["2019-2020销售额同比增长率"] = (temp["2020销售额"] - temp["2019销售额"]) / temp["2019销售额"]
temp
temp.to_csv("./各年份各国家的销售额同比增长率.csv")
temp

输出为:


共51个国家

1.1.3显示2020年度销售额Top3的国家及其年增长率

通过sort_values函数对”2020销售额“数据进行降序排序,取出Top3


# 展示2020年年度销售额前3名的国家及其年增长率
temp.loc[:, ["国家", "2020销售额", "2019-2020销售额同比增长率"]].sort_values("2020销售额", ascending = False).h

输出为:



1.1.4 统计各年度各国利润数据&计算同比增长率

通过groupby函数对[“年份”, “国家"]进行分组,对”利润“进行求和

year_cou_pro = year_data.groupby(["年份", "国家"])["利润"].sum()
year_cou_pro.to_csv("./year_cou_pro.csv")
year_cou_pro

输出为:

task2 = pd.read_csv("./year_cou_pro.csv")
task2

输出为:


计算出各年度各国利润数据的同比增长率

temp2 = pd.merge(task2[task2.loc[:, "年份"] == 2017], task2[task2.loc[:, "年份"] == 2018], how="inner", left_on = "国家", right_on = "国家")
temp2 = pd.merge(temp2, task2[task2.loc[:, "年份"] == 2019] ,how="inner", left_on = "国家", right_on = "国家")
temp2 = pd.merge(temp2, task2[task2.loc[:, "年份"] == 2020] ,how="inner", left_on = "国家", right_on = "国家")
temp2.drop(["年份_x", "年份_y"], axis = 1, inplace=True)
temp2.columns = ["国家", "2017利润", "2018利润", "2019利润", "2020利润"]
# temp2
temp2["2017-2018利润同比增长率"] = (temp2["2018利润"] - temp2["2017利润"]) / temp2["2017利润"]
temp2["2018-2019利润同比增长率"] = (temp2["2019利润"] - temp2["2018利润"]) / temp2["2018利润"]
temp2["2019-2020利润同比增长率"] = (temp2["2020利润"] - temp2["2019利润"]) / temp2["2019利润"]
temp2.to_csv("./各年份各国家的利润同比增长率.csv")
temp2

输出为:

1.1.5统计各年度各服务分类销售额数据&计算同比增长率

通过groupby函数对[“年份”, “服务分类"]进行分组,对”销售额“进行求和

year_sor_sale = year_data.groupby(["年份", "服务分类"])["销售额"].sum()
year_sor_sale.to_csv("./year_sor_sale.csv")
year_sor_sale

输出为:


task3 = pd.read_csv("./year_sor_sale.csv")
task3

输出为:


计算出各年度各服务分类销售额数据的同比增长率

temp3 = pd.merge(task3[task3.loc[:, "年份"] == 2017], task3[task3.loc[:, "年份"] == 2018], how="inner", left_on = "服务分类", right_on = "服务分类")
temp3 = pd.merge(temp3, task3[task3.loc[:, "年份"] == 2019] ,how="inner", left_on = "服务分类", right_on = "服务分类")
temp3 = pd.merge(temp3, task3[task3.loc[:, "年份"] == 2020] ,how="inner", left_on = "服务分类", right_on = "服务分类")
temp3.drop(["年份_x", "年份_y"], axis = 1, inplace=True)
temp3.columns = ["服务分类", "2017销售额", "2018销售额", "2019销售额", "2020销售额"]
temp3["2017-2018销售额同比增长率"] = (temp3["2018销售额"] - temp3["2017销售额"]) / temp3["2017销售额"]
temp3["2018-2019销售额同比增长率"] = (temp3["2019销售额"] - temp3["2018销售额"]) / temp3["2018销售额"]
temp3["2019-2020销售额同比增长率"] = (temp3["2020销售额"] - temp3["2019销售额"]) / temp3["2019销售额"]
temp3.to_csv("./各年份各服务分类的销售额同比增长率.csv")
temp3

输出为:


1.1.6统计各年度各服务分类利润数据&计算同比增长率

通过groupby函数对[“年份”, “服务分类"]进行分组,对”利润“进行求和

year_sor_pro = year_data.groupby(["年份", "服务分类"])["利润"].sum()
year_sor_pro.to_csv("./year_sor_pro.csv")
year_sor_pro

输出为:


加载数据:

task4 = pd.read_csv("./year_sor_pro.csv")
task4

输出为:


相关文章
|
8月前
|
机器学习/深度学习 数据可视化 数据挖掘
第四届“泰迪杯”数据分析技能赛-赛题A:《通讯产品销售和盈利能力分析》报告
第四届“泰迪杯”数据分析技能赛-赛题A:《通讯产品销售和盈利能力分析》报告
539 0
|
12月前
|
弹性计算 Cloud Native 小程序
【年终特辑】看见科技创新力量 洞见时代创业精神—企业服务—蓝犀牛搬家:挑战非标化运营模式,云加速服务体验
【年终特辑】看见科技创新力量 洞见时代创业精神—企业服务—蓝犀牛搬家:挑战非标化运营模式,云加速服务体验
117 0
|
数据可视化 定位技术
泰迪杯A题通讯产品销售和盈利能力分析一等奖作品(4)
泰迪杯A题通讯产品销售和盈利能力分析一等奖作品 1. A 题 通讯产品销售和盈利能力分析 简介 一、背景 二、目标 三、任务
泰迪杯A题通讯产品销售和盈利能力分析一等奖作品(4)
泰迪杯A题通讯产品销售和盈利能力分析一等奖作品(2)
泰迪杯A题通讯产品销售和盈利能力分析一等奖作品 1. A 题 通讯产品销售和盈利能力分析 简介 一、背景 二、目标 三、任务
泰迪杯A题通讯产品销售和盈利能力分析一等奖作品(2)
|
机器学习/深度学习 算法 Python
泰迪杯A题通讯产品销售和盈利能力分析一等奖作品(3)
泰迪杯A题通讯产品销售和盈利能力分析一等奖作品 1. A 题 通讯产品销售和盈利能力分析 简介 一、背景 二、目标 三、任务
泰迪杯A题通讯产品销售和盈利能力分析一等奖作品(3)
|
存储 小程序 数据可视化
参赛作品05:身“林”其境—基于物联网的园林精细化生产系统
“智物智造杯-2022物联网创新应用大赛”投票开始啦!
382 0
阿里巴巴放大招:迟来的全球货源平台
阿里巴巴放大招:迟来的全球货源平台
128 0
|
存储 监控 数据可视化
【案例现场】“贴身战”背后,是精细化运营的实力较量
大数据时代企业除了在基础建设中更为重视数据以外,对执行力和速度的响应要求也越发严格。BI软件也不再仅仅是一个工具,更是一套契合数智化时代的决策管理方案,通过对数据的整合,融入业务逻辑,供给执行层行动指南,供给管理层决策参考,及时把控整体业务,发现业务问题,调整经营决策,从而不断改善整体业务,推动业务增长。
【案例现场】“贴身战”背后,是精细化运营的实力较量
|
供应链 自动驾驶
发改委等13部门发文:支持微商电商、网络直播等多样化自主就业
7月15日,国家发改委等十三部门发布《关于支持新业态新模式健康发展激活消费市场带动扩大就业的意见》
发改委等13部门发文:支持微商电商、网络直播等多样化自主就业
眼球网站经济学之我见——在网站上建立现代的经济体系,互联网营销
  请大家原谅我一下子发这么多文章,因为我真的是很难的有时间这么畅快的写一些东西出来了。对于挤出其他人的文章,我已经有很深的愧疚感了,真诚致歉。如果真有人觉得在这段时间内发文章不划算,可能导致自己文章被很快的刷掉,那么我建议你可以把你的文章存两天再发出来。
947 0