Bootstrap

2021年“泰迪杯”数据分析技能赛A题任务1:数据分析与预测

一、背景

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

二、目标

  1. 统计产品在当地的销售数据,预测未来的销售情况。

三、任务

根据附件“非洲通讯产品销售数据”中的数据,分别实现以下任务:
任务 1.1 统计各个年度/季度中,地区、国家、服务分类的销售额和利润数
据,并计算各国、各服务分类销售额和利润的同比增长率。
任务 1.2 统计各地区、国家有关服务分类销售额和利润数据。
任务 1.3 统计各个销售经理的成交合同数和成交率。
任务 1.4 分别预测各个地区、国家、服务分类 2021 年第一季度销售额和利
润。
原始数据:https://kdocs.cn/l/clmWG135WsLe

四、过程

4.1查看数据

导入数据

import pandas as pd
import numpy as np
SalesData = pd.read_excel("D:/2021泰迪杯数据/2021 泰迪杯数据分析/A题-通讯产品销售和盈利能力分析/非洲通讯产品销售数据.xlsx", sheet_name = "SalesData")
SalesData

在这里插入图片描述

SalespersonData = pd.read_excel("D:/2021泰迪杯数据/2021 泰迪杯数据分析/A题-通讯产品销售和盈利能力分析/非洲通讯产品销售数据.xlsx", sheet_name =
"SalespersonData")
SalespersonData

在这里插入图片描述

#从上表我们发现,在读取数据时将第六,七列读进去了,这两列没有任何意义,因此删掉。
SalespersonData=SalespersonData.iloc[:,0:5]
#该代码表示为每行都进行读取,列只读取索引为[0,1,2,3,4]的前五列
#iloc的索引为数字,loc的索引为预先定义好的索引
SalespersonData

在这里插入图片描述

4.2数据处理与分析

4.2.1查看数据是否有空缺值
SalesData.info()
#从下方结果看到无缺失值

在这里插入图片描述

SalespersonData.info()

在这里插入图片描述

4.2.2去除数据中的重复值
SalesData.drop_duplicates(inplace = True) 
#inplace=True表示直接在原数组上对数据进行修改。
SalesData.info()
#依旧是1056行数据,所以不存在重复数据

在这里插入图片描述

SalespersonData.drop_duplicates(inplace=True)#发现没有重复值
SalespersonData.info()

在这里插入图片描述

4.2.3粗略查看数据是否异常
#粗略查看数据有无异常
SalesData.describe()

在这里插入图片描述

SalespersonData.describe()

在这里插入图片描述
经过以上步骤确定数据基本没问题

4.2.4统计各年度各国销售额数据&计算同比增长率
#因为统计的是各年度的销售额数据,所有需要对“日期”列进行拆分,取出年份
year = SalesData.loc[:, "日期"].astype("str").str.split("-",expand = True)[0]
#astype()函数可用于转化DataFrame某一列的数据类型
#str.split("分割符", 分割次数)
#expand表示是否把series类型转化为DataFrame类型
#因为日期形式如:2017-01-21,分割后成为三列(年,月,日),[0]代表只展示年份
year

在这里插入图片描述

year_data = SalesData.loc[:, ["国家", "地区", "服务分类", "销售额", "利润"]]
year_data["年份"] = year
#追加一个年份
year_data

在这里插入图片描述

#通过groupby函数对["年份", “国家"]进行分组,对”销售额“进行求和
year_cou_sale = year_data.groupby(["年份", "国家"])["销售额"].sum()
#以csv格式保存本地
year_cou_sale.to_csv("D:/2021泰迪杯数据/自己练习/year_cou_sale.csv")
task1=pd.read_csv("D:/2021泰迪杯数据/自己练习/year_cou_sale.csv")
task1

在这里插入图片描述
计算出各年度各国销售额数据的同比增长率
同比增长率 (今年销售额 -去年销售额 )/去年销售额

import warnings
warnings.filterwarnings("ignore")
#merge(left, right, how='inner'(内连接), on=None, left_on=None, right_on=None, left_index=False, 
#right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)合并函数
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

在这里插入图片描述

temp.drop(["年份_x", "年份_y"], axis = 1, inplace=True)
temp

在这里插入图片描述

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("D:/2021泰迪杯数据/自己练习/各年份各国家的销售额同比增长率.csv")
temp

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

temp.loc[:, ["国家", "2020销售额", "2019-2020销售额同比增长率"]].sort_values("2020销售额", ascending = False).head(3)
#ascending表示逆序或者正序排序,ascending=False代表的是从大到小

在这里插入图片描述

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

#通过groupby函数对[“年份”, “国家”]进行分组,对”利润“进行求和计算出各年度各国利润数据的同比增长率

year_cou_pro = year_data.groupby(["年份", "国家"])["利润"].sum()
year_cou_pro.to_csv("D:/2021泰迪杯数据/自己练习/year_cou_pro.csv")
task2=pd.read_csv("D:/2021泰迪杯数据/自己练习/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

在这里插入图片描述

temp2.drop(["年份_x", "年份_y"], axis = 1, inplace=True)
temp2

在这里插入图片描述
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("D:/2021泰迪杯数据/自己练习/各年份各国家的利润同比增长率.csv")
temp2

在这里插入图片描述

4.2.6统计各年度各服务分类销售额数据&计算同比增长率
year_sor_sale = year_data.groupby(["年份", "服务分类"])["销售额"].sum()
year_sor_sale.to_csv("D:/2021泰迪杯数据/自己练习/year_sor_sale.csv")
task3=pd.read_csv("D:/2021泰迪杯数据/自己练习/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

在这里插入图片描述

temp3.drop(['年份_x','年份_y'],axis=1,inplace=True)
temp3

在这里插入图片描述

temp3.columns = ["服务分类", "2017销售额", "2018销售额", "2019销售额", "2020销售额"]
temp3

在这里插入图片描述

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("D:/2021泰迪杯数据/自己练习/各年份各服务分类的销售额同比增长率.csv")
temp3

在这里插入图片描述

;