朝阳医院2018年销售数据分析
所用到的数据提取地址:——>戳这里下载,或私我
过程:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200706162634675.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NqanNhYWFh,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200706162653858.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NqanNhYWFh,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200706162721213.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NqanNhYWFh,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200706162738685.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NqanNhYWFh,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200706162754312.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NqanNhYWFh,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200706162810426.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NqanNhYWFh,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200706162822189.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NqanNhYWFh,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200706161634371.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NqanNhYWFh,size_16,color_FFFFFF,t_70)
整体代码:
#导入库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = pd.read_excel('朝阳医院2018年销售数据.xlsx') #导入数据
#了解数据
data.head() #查看前五行
data.describe() #查看总体数据的描述统计分析
data.info() #看一下数据信息
# 清洗数据
#把购药时间改成销售时间,直接在原数据框进行修改。
data.rename(columns= {'购药时间':'销售时间'},inplace=True)
#看一下修改后的数据
data.head()
#没有时间和社保卡号的消费数据对于本次分析是无效的,
#所以清理一下缺失值
data=data.dropna(subset=['销售时间','社保卡号'],how='any')
data.head()#查看前五行数据
#把销售时间的日期和星期分开。
data['销售时间'], data['销售星期'] = data['销售时间'].str.split(' ', 1).str
#切分好之后,把销售时间变为时间类型
data['销售时间'] = pd.to_datetime(data['销售时间'],format='%Y-%m-%d',errors='coerce')
#先看一下清洗到这个阶段的数据
data.head()
#重置一下索引
#将数据按照销售时间排序
data = data.sort_values('销售时间',ascending=True)
#重置索引
data = data.reset_index(drop=True)
#再看一下数据
data.head()
#选取销售数量和应收金额大于0的列
data = data[(data['销售数量'] > 0) & (data['应收金额'] > 0)]
#看一下目前的数据
data.head()
#数据分析
#首先对数据进行一个去重,使用drop_duplicates函数
data = data.drop_duplicates(subset=['销售时间','社保卡号'])
#去重后看一下一共有多少条数据
total = data.shape[0]
Total
#再计算月份
#用销售时间的最大值减去最小值即可得到天数,再除以(地板除)三十就可以得到月份了
month = (data['销售时间'].max() - data['销售时间'].min()).days // 30
KPI1 = total / month
print('月均消费次数为:',KPI1)
#计算总金额
sum_sale = data['实收金额'].sum()
kpi2=sum_sale/month
print('月均消费金额为:',kpi2)
#客单价 就是总实收金额除以总消费次数
kdj = sum_sale/total
print('客单价:',kdj)
# 消费趋势
#对去重后的数据按照天进行重新采样
#首先要把索引变成时间
data.index = pd.DatetimeIndex(data['销售时间'])
#将索引按天聚合
b = data.resample('D').count()
b.head()
#画图
plt.plot(b.index,b['实收金额'])
plt.xlabel = 'Time'
plt.ylabel = 'Money'
plt.title = '总金额消费趋势图'
plt.show()
#按月采样
datas = data.resample('M').sum()
#画图
plt.plot(datas.index, datas['实收金额'])
plt.show()
del data['Unnamed: 7'] #删除空值的一行
del data['Unnamed: 8']
del data['Unnamed: 9']
data.head()