import pandas as pd

#读取文件

data= pd.read_csv('./dataset.csv')

########################### 查看数据概览 ###########################

data.head()

# data.info()

# data.shape

# #非空统计

# data.count()

# data.isnull().sum()

# # 拓展,获取含有空值的行

# data[data.isnull().T.any()]

########################### 查看数据概览 ###########################

####################################### 清洗数据 #######################################

# 将其转化成时间(ShipDate,OrderDate均为object,需要先转化成时间)

data['ShipDate'] = pd.to_datetime(data['ShipDate'])

data['OrderDate'] = pd.to_datetime(data['OrderDate'])

#data.info()

#找出发货时间早于下单日期的记录

data[data['ShipDate']

#删去发货时间早于下单日期的记录,且在原数据上进行修改

data.drop(index=data[data['ShipDate']

#data

#查看是否有销售额小于0的记录

data[data.Sales<0]

#RowID不重复的个数 (经过上面的数据处理后 data.shape#(51097, 24),不重复的为51094)

data.RowID.unique().size

#取出重复的记录

data[data.RowID.duplicated()]

#删去RowID重复的记录,且在原数据上进行修改

data.drop(index=data[data.RowID.duplicated()].index, inplace=True)

#data.info()

#1.查看ShipMode空值

# data[data.ShipMode.isnull()]

# data.ShipMode

#2.对空值进行修补

#从选择的某个轴 返回这个众数, 如果缺失就是用NaN填充, 然后 轴上可能会有多个众数,所以这个函数返回的类型是一个dateframe

# data.ShipMode.mode()[0]

#进行空值填充

data['ShipMode'].fillna(value=data.ShipMode.mode()[0], inplace=True)

data.info()

####################################### 清洗数据 #######################################

#分别取出订单日期的年、月、季

data['Order-year'] = data ['OrderDate'].dt.year

data ['Order-month'] = data ['OrderDate'].dt.month

data ['quarter'] = data ['OrderDate'].dt.to_period('Q')

# result = data [['OrderDate','Order-year','Order-month', 'quarter']].head()

# print(result)

sales_year = data.groupby(by='Order-year')['Sales'].sum()

print(sales_year)

# (本年的销售额-上年的销售额)/ 上年的销售额 -> 本年的销售额/上年的销售额 -1

sales_rate_12 = sales_year[2012] / sales_year[2011] - 1

sales_rate_13 = sales_year[2013] / sales_year[2012] - 1

sales_rate_14 = sales_year[2014] / sales_year[2013] - 1

print(sales_rate_12,sales_rate_13,sales_rate_14)

sales_rate_12_label = "%.2f%%" % (sales_rate_12 * 100)

sales_rate_13_label = "%.2f%%" % (sales_rate_13 * 100)

sales_rate_14_label = "%.2f%%" % (sales_rate_14 * 100)

print(sales_rate_12_label,sales_rate_13_label,sales_rate_14_label)

# sales_rate = pd.DataFrame(

# {'sales_all':sales_year,

# 'sales_rate':[0,sales_rate_12,sales_rate_13,sales_rate_14],

# 'sales_rate_label':['0.00%',sales_rate_12_label,sales_rate_13_label,sales_rate_14_label]

# })

# print(sales_rate)

import matplotlib.pyplot as plt

import matplotlib as mpl

# 设置字体

mpl.rcParams['font.sans-serif'] = ['SimHei']

# 设置风格

plt.style.use('ggplot')

sales_rate = pd.DataFrame(

{'sales_all':sales_year,

'sales_rate':[0,sales_rate_12,sales_rate_13,sales_rate_14],

'sales_rate_label':['0.00%',sales_rate_12_label,sales_rate_13_label,sales_rate_14_label]

})

y1 = sales_rate['sales_all']

y2 = sales_rate['sales_rate']

x = [str(value) for value in sales_rate.index.tolist()]

# 新建figure对象

fig=plt.figure()

# 新建子图1

ax1=fig.add_subplot(1,1,1)

# ax2与ax1共享X轴

ax2 = ax1.twinx()

ax1.bar(x,y1,color = 'blue')

ax2.plot(x,y2,marker='*',color = 'r')

ax1.set_xlabel('年份')

ax1.set_ylabel('销售额')

ax2.set_ylabel('增长率')

ax1.set_title('销售额与增长率')

plt.show()

#2011-2014年之间各个区域的总销售额占比

sales_area = data.groupby(by='Market')['Sales'].sum()

sales_area.plot(kind='pie')

sales_area.plot(kind='pie',autopct="%1.1f%%",title='2011年-2014年的总销售额占比')

# 各地区每一年的销售额(不重新设置索引)

sales_area = data.groupby(by=['Market','Order-year'],as_index=False)['Sales'].sum()

sales_area

# 将分组后的多层索引设置成列数据(如果没有as_index=False,可以使用下面的方法再还原索引)

# reset_index可以还原索引,重新变为默认的整型索引

# sales_area = sales_area.reset_index(level=[0,1])

# sales_area

# # 使用数据透视表重新整理数据

sales_area = pd.pivot_table(sales_area,

index='Market',

columns='Order-year',

values='Sales')

sales_area

# # 绘制图形

sales_area.plot(kind = 'bar',title = '2011年-2014年不同地区销售额对比')

############################# RFM #######################

#取出订单日期为2014年的数据

data_14 = data [data ['Order-year']==2014]

#取出三列

data_14 = data_14[['CustomerID','OrderDate','Sales']]

#重新复制给customdf

customdf = data_14.copy()

#customdf

customdf.set_index('CustomerID',drop=True,inplace=True)

#增加一个辅助列,每一条订单都计数为1

customdf['orders'] = 1

#customdf

#透视图

rfmdf = customdf.pivot_table(index=['CustomerID'],

values=['OrderDate','orders','Sales'],

aggfunc={'OrderDate':'max',

'orders':'sum',

'Sales':'sum'})

rfmdf

rfmdf['R'] = (rfmdf.OrderDate.max()-rfmdf.OrderDate).dt.days

#rfmdf

rfmdf.rename(columns={'Sales':'M','orders':'F'},inplace=True)

#rfmdf

def show(df):

return df-df.mean()

result1= rfmdf[['R','F','M']].apply(lambda x: x-x.mean())

#result1

def rfm_func(x):

# -25.07.01969.12304

# 0 1 1

level = x.apply(lambda x: "1" if x >= 0 else '0')

# 0 1 1 -> 011

label = level.R + level.F + level.M

d = {

'011':'重要价值客户',

'111':'重要唤回客户',

'001':'重要深耕客户',

'101':'重要挽留客户',

'010':'潜力客户',

'110':'一般维持客户',

'000':'新客户',

'100':'流失客户'

}

result = d[label]

return result

result1= rfmdf[['R','F','M']].apply(lambda x:x-x.mean())

result2 = result1.apply(rfm_func,axis=1)

result2

rfmdf['lables'] = result2

rfmdf

############################# RFM #######################

标签:数据分析,14,python,sales,label,rate,year,电商,data

来源: https://blog.csdn.net/weixin_41797985/article/details/112247098

python商业数据分析报告范文_python案例分析之电商销售数据分析相关推荐

  1. 【python】【数据分析】2022年全国大学生数据分析大赛题解-医药电商销售数据分析

    文章目录 一.前言 二.题目 三.题解 1.对店铺进行分析,一共包含多少家店铺,各店铺的销售额占比如何?给出销售额占比最高的店铺,并分析该店铺的销售情况. 2.对所有药品进行分析,一共包含多少个药品, ...

  2. 电商销售数据分析与预测(日期数据统计、按天统计、按月统计)

    本文来自<Python数据分析从入门到精通>--明日科技编著 随着电商行业的激烈竞争,电商平台推出了各种数字营销方案,付费广告也是花样繁多.那么电商投入广告后,究竟能给企业增加多少收益,对 ...

  3. 2022全国大学生数据分析大赛A题完整解题教程及代码 医药电商销售数据分析

    题目 A:医药电商销售数据分析 完整解题 随着国家政策的逐步开放,越来越多的药品可以在网络上购买, 医药电商平台蒸蒸日上,受新冠疫情的影响,线下药店购买困难,更 让医药电商进入了更多消费者的视野,各大 ...

  4. python数据分析报告范文_Python数据实战分析之定量和定性数据分析

    数据分析中关于数据的部署 数据分析的最后一步--部署,旨在展示结果,也就是给出数据分析的结论.若应用场景为商业,部署过程将分析结果转换为对购买数据分析服务的客户有益的方案.若应用场景为科技领域,则将成 ...

  5. python商业数据分析报告范文_python自动化撰写数据分析报告

    在工作中经常要出具各种报告,我们可以根据报告周期来设置定时任务自动生成数据分析报告.首先要确定报告模板,给模板中的每一个变动值赋予一个参数:然后根据业务需求再python中定义每个变动值的计算方式:最 ...

  6. 日用品电商销售数据分析

    分析报告结论: 1.日用品办公文具的整体销售情况数据持续上升可观,但是对于用户个体的销售金额和商品购买量及次数都集中在区间的低段水平,所以对于此类交易群体,可在丰富日用品产品线例如针对儿童,年轻群体( ...

  7. 2022全国大学生数据分析大赛A题-医药电商销售数据分析

    新手参加比赛,不足之处敬请谅解 题目链接:链接:https://pan.baidu.com/s/1ll7Y1kTr1MiJTjErwnqiVA  提取码:zu9f 目录 任务1 对店铺进行分析 任务1 ...

  8. python数据分析报告范文_Python数据分析求解题

    根据现有数据,编写分析报告,分析电影市场情况并预测观众群对"四合影业"计划投拍的电影<青春的竞赛>的评分.请从a04子目录中选取需要的数据文件,依据俱乐部的观众评分(评 ...

  9. rostcm6情感分析案例分析_电商评论情感分析

    并可以实现云图的可视化.7.2 R的实现这里需要安装几个必须包,因为有几个包安装比较复杂,这里给了链接http://blog.csdn.net/cl1143015 ... 82731大家可以参看这个博 ...

最新文章

  1. Linux JSP连接MySQL数据库
  2. TechParty Mini.0
  3. 动态树形列表基本原理演示
  4. (0093)iOS开发自己账号跑真机报错:conflicting provisioning
  5. python 异常函数调用栈_Python捕获异常堆栈信息的几种方法
  6. vue 跳转页面带对象_vue从一个页面跳转到另一个页面并携带参数
  7. Linux 进阶笔记(二)
  8. codeforces 808d
  9. git修改已提交记录的注释
  10. MapReduce 学习4 ---- 自定义分区、自定义排序、自定义组分
  11. caffe中 solver.prototxt文件
  12. 虚拟机同步器用易语言怎么写_安装虚拟机的好处或用处是什么/如有效地防止病毒...
  13. python requests 上传文件
  14. php实现微信小程序登录(根据微信小程序接口更新最新教程)
  15. 正弦波叠加成及波的分解
  16. Keil uVision5开发一个基于LPC17XX系列芯片的工程文件
  17. 辰视冯良炳博士作为专家出席演讲的2021视觉系统设计会议圆满闭幕
  18. allegro ARTWORK设置笔记
  19. C语言实现埃拉托色尼筛选法(剔除数组中的非质数)
  20. C# JSON 常用方法 - Json字符串转对象

热门文章

  1. 浏览器主页被hao.123篡改,用360系统急救箱可以恢复
  2. 高清视频转换器,任意格式互转方法!
  3. 美国在线计算机硕士排名,2020US.News美国计算机专业硕士排名 美国卡耐基梅隆大学位居第一...
  4. Android 7.0及其以上系统安装安装包时候提示:解析安装包失败
  5. 人工智能(PythonWeb)—— Django
  6. Python3 读取中文文件txt编码问题
  7. Subversion简介
  8. 微信即刻视频下载器插件开发过程原理详解
  9. Cognex Mobile Barcode SDK for iOS
  10. 腾讯云大数据实战案例