python 销售数据分析输出表格_Python处理Excel数据实例--销售数据分析
数据分析笼统来说,大概分为五个步骤:提出问题、理解数据、数据清洗、构建模型、数据可视化。在数据分析中,很基础又关键的一步就是数据清洗,对原始数据的处理会花掉整个分析过程的很大一部分时间,这是因为如果前期数据没有处理好,会影响后续的分析以及建模。那么当我们拿到一份数据,该如何对数据进行处理和分析呢?下面以药店销售数据为例,进行如下分析:
导入pandas、numpy包及excel原始数据:
import pandas as pd
import numpy as np
filename = r'C:\安装包\朝阳医院2018年销售数据.xlsx'
salesDf = pd.read_excel(filename, sheet_name='Sheet1', dtype = 'object')
salesDf.head()
salesDf.shape
1.提出问题
通过这些数据我要分析什么?这个可能一开始是来自于老板或者其他部门的需求,他们提出需求后,我们来进行分析,在这个案例里,我们收到的需求是分析“月均消费次数”、“月均消费金额”、“客单价”、“消费趋势”。
2.理解数据
明确了分析目的之后,对原始数据进行观察,这个数据是一个6578行、7列的数据集。列属性分别为:购药时间、社保卡号、商品编码、销售数量、应收金额、实收金额,type为object;除此之外,还要观察数据结构以及数据的一些逻辑关联,形成一个大概的分析思路后,再进行下一步数据清洗工作。
#查看数据集的shape及列属性的type
salesDf.shape
salesDf.dtypes
3.数据清洗
数据清洗是要反复多次,才可以拿到我们想要数据,大致有如下6个步骤:选择子集合
就是选择我们需要的字段,将多余的字段删掉列名重命名
有一些列名可能不是很直观,我们可以更改为更好理解的列名,如:将本案例中的‘购药时间’改为‘销售时间’。
salesColStr = {'购药时间':'销售时间'}
salesDf.rename(columns=salesColStr, inplace=True)
salesDf缺失数据处理
python中数据有3种缺失值:
①None;②Na 表示 not available;③NaN 浮点型 not a number 表示缺失数据
再回到我们的案例中,我们要分析“月均消费次数”、“月均消费金额”、“客单价”、“消费趋势”,所以销售时间、社保卡号、消费金额 都不可以缺失,如果缺失了就是无意义的数据。在删除缺失值的过程中,要经常用shape监控删除后的数据集的大小变化。
salesDf = salesDf.dropna(subset=['销售时间','社保卡号'],how='any')数据类型转换
观察列属性的type,将金额数量转换成float,将日期的星期去掉,日期和星期之间是用空格隔开的,所以用split进行拆分,然后用pandas的to_datetime函数将目标字段type转换为datetime,并将格式设为'%Y-%m-%d'。转换完成后执行dtypes查看是否转换成功,然后再查看一下新的数据集,是否空值,如果有空值记得drop掉。
salesDf['销售数量'] = salesDf['销售数量'].astype('float')
salesDf['应收金额'] = salesDf['应收金额'].astype('float')
salesDf['实收金额'] = salesDf['实收金额'].astype('float')
def splitSalesTime(timeColStr):
timelist=[]
for value in timeColStr:
dateStr=value.split(' ')[0]
timelist.append(dateStr)
timeSer = pd.Series(timelist)
return timeSer
timeColStr = salesDf.loc[:,'销售时间']
datetime = splitSalesTime(timeColStr)
salesDf.loc[:,'销售时间'] = datetime
salesDf.loc[:,'销售时间'] = pd.to_datetime(salesDf.loc[:,'销售时间'],format='%Y-%m-%d',errors='coerce')
salesDf.dtypes
salesDf
salesDf = salesDf.dropna(subset='销售时间',how='any')
salesDf.shape数据排序
由于我们要分析“月均消费次数”和“月均消费金额”这两个跟销售时间有关的指标,所以我们先对新的数据集按“销售时间”进行排序,排序后发现index就乱掉了,reset一下index就可以。
salesDf = salesDf.sort_values(by='销售时间',ascending=True)
salesDf = salesDf.reset_index(drop=True)
salesDf.head()reset之前的indexreset之后的index异常值处理
得到我们想要的数据集后,下一步可以进行简要的统计描述分析,执行descibe()函数,可以得到平均数、标准差、最大值、最小值以及四分位数。能从执行结果中最为直接的看到,最小值销售量、应收金额、实收金额都是负数,这个是不符合常理的,所以我们要将这个异常值用条件切片的方式剔除。
salesDf.describe()剔除异常值前的结果
#剔除异常值
salesDf = salesDf.loc[salesDf.loc[:,'销售数量']>0,:]
salesDf.describe()剔除异常值后的结果
4.构建业务指标业务指标1:月均消费次数(所有人的总消费天数/月份数)
指标解读:月均消费次数,是一个人一天无论消费几次都记一次,其实就是消费天数的衡量,然后进行累加,最后把所有人的消费次数加在一起与月份做除法。需要注意的是数据中存在一天消费多次的人群,需要进行去重。
第一步,用 drop_duplicates() 去重,得到新子集 kpil_Df 并重复之前的操作进行排序和reset index;
kpil_Df = salesDf.drop_duplicates(subset=['销售时间','社保卡号'])
kpil_Df = kpil_Df.sort_values(by='销售时间',ascending=True)
kpil_Df = kpil_Df.reset_index(drop=True)
第二步,求总消费次数 totalI;
totalI = kpi1_Df.shape[0]
第三步,求月份数monthI。注意日期相减后要加 '.days' 用来转化成 int;这里month是用地板除求商。
startTime=kpi1_Df.loc[0,'销售时间']
endTime=kpi1_Df.loc[totalI-1,'销售时间']
daysI=(endTime-startTime).days
monthI=daysI//30
最后,可得到月均消费次数为平均890次/月。
kpi1_I=totalI // monthsI
print('月均消费次数=',kpi1_I)
业务指标2:月均消费金额(总消费金额/月份)
指标解读:用总消费金额与月份做除法。(注意:之前去重得到结果不影响月份,月份可以沿用之前处理好的monthI,但消费金额要用 salesDf 这个数据集来计算)
执行如下代码,可得到月均消费结果为50,668.35元
totalMoneyF=salesDf.loc[:,'实收金额'].sum()
monthMoneyF=totalMoneyF / monthsI
print('月均消费金额=',monthMoneyF)
业务指标3:客单价(总消费金额 / 总消费次数)
指标解读:客单价(per customer transaction)是指商场(超市)每一个顾客平均购买商品的金额,客单价也即是平均交易金额。
执行如下代码,可得到 客单价≈56.91元
pct=totalMoneyF / totalI
print('客单价:',pct)
业务指标4:消费趋势
指标解读:每个月消费额的波动趋势,要按月份进行聚类分析
先复制一份 salesDf 数据,避免聚类时对已清洗好的数据造成影响
groupDf = salesDf
第一步,重命名行名(index)为销售时间所在列的值
groupDf.index = goupDf['销售时间']
第二步,按销售月份进行分组
gb = groupDf.groupby(groupDf.index.month)
第三步,计算每个月的消费总额,并绘制折线图
mounthDf=gb.sum()
mouthDf
import matplotlib.pyplot as plt
monthDf.plot(kind='line')
从折线图中,我们可以看到1、4、6月份消费额较高,2、7月消费额较低,具体原因还要结合实际业务情况进行进一步分析。
到这里 月均消费次数、月均消费金额、客单价格、消费趋势这4个业务指标的数据,我们已经全部得到啦。
python 销售数据分析输出表格_Python处理Excel数据实例--销售数据分析相关推荐
- python 销售数据分析输出表格_Python实现将数据库一键导出为Excel表格的实例
Python实现将数据库一键导出为Excel表格的实例 下面小编就为大家带来一篇Python实现将数据库一键导出为Excel表格的实例.小编觉得挺不错的,现在就分享给大家, 数据库数据导出为excel ...
- python的format输出报文_python构造IP报文实例
我就废话不多说了,大家还是直接看代码吧! import socket import sys import time import struct HOST, PORT = "10.60.66. ...
- python 销售数据分析输出表格_Python 处理分析 128 张 Excel 表格竟不到3秒?| 附数据集...
原标题:Python 处理分析 128 张 Excel 表格竟不到3秒?| 附数据集 作者 | 周志鹏 责编 | 刘静 有不少旁友想要了解怎么用Python提升处理数据的效率,或者说怎么用Python ...
- python实现dem输出三维模型_python实现DEM数据的阴影生成的方法
相关的依赖库在我的github网站上 首先贴出代码: import solar from gradient import * from shadows import * import numpy as ...
- PDFPlumber使用入门+python实现PDF中表格转化为Excel的方法
PDFPlumber使用入门:https://blog.csdn.net/weixin_48629601/article/details/107224376 python实现PDF中表格转化为Exce ...
- python2读取excel中文处理_Python处理Excel数据
前段时间做了个小项目,帮个海洋系的教授做了个数据处理的软件.基本的功能很简单,就是对Excel里面的一些数据进行过滤,统计,对多个表的内容进行合并等.之前没有处理Excel数据的经验,甚至于自己都很少 ...
- python读取表格数据_Python读取Excel数据并根据列名取值
一直想将自己接触到的东西梳理一遍,可就是迈不出第一步,希望从这篇总结开始不要再做行动的矮人了. 最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用 ...
- python读写excel表格_Python读写Excel表格(简单实用)
首先安装两个库:pip install xlrd.pip install xlwt! 1.python读excel--xlrd2.python写excel--xlwt 1.读excel数据,包括日期等 ...
- python批量读取excel表格数据_Python读取Excel数据并生成图表过程解析
一.需求背景 自己一直在做一个周基金定投模拟,每周需要添加一行数据,并生成图表.以前一直是用Excel实现的.但数据行多后,图表大小调整总是不太方便,一般只能通过缩放比例解决. 二.需求实现目标 通过 ...
最新文章
- C++ Time类重载运算符
- 【数据挖掘知识点二】概率基础
- Leetcode 141. 环形链表 解题思路及C++实现
- python公里转海里_海里、公里、英里之间的转换
- git迁移MySQL数据库_Centos7下Gitlab迁移数据库mysql过程
- [sh]rm -rf*的防护和普通用户执行命令
- 智能贴图样机素材在手,海报逼格马上就有!
- ios 中如何应对UIScrollView快速滑动(暴力用户,暴力测试)
- java文件传输接口
- 深入理解计算机系统 csapp 家庭作业(第三章完整版)
- 游戏服务器和普通服务器的区别
- Graccvs文件正文提取开发组件--文件内容搜索的利器
- 直播平台开发中解决iOS 14 兼容问题和静默推送
- poi-tl导出word复杂表格(单元格合并,生成复杂表格)
- camel_使用Apache Camel进行负载平衡
- 原厂PW4203降压型1-3节锂电池充电芯片
- 腾讯开源的标星 12k 的力作
- android pad查看cpu,苹果还是安卓?一图教你如何选择适合自己的平板
- 软件工程应用于实践:AJ-Report项目 源码分析(8)
- 对比分析法、多维度拆解、辛普森悖论