Python数据分析案例(python数据分析案例 药店销售数据分析)

http://www.itjxue.com  2023-04-12 06:56  来源:未知  点击次数: 

《利用Python进行数据分析》——案例1从Bitly获取数据

这个案例主要目的是转换json类型的数据,利用python和pandas方法进行计数。

step1:获取数据

将json格式数据转化成python对象

step2纯python时区计数

1.获取时区+计数

2.对以上字典形式进行计数

3.更更简单的方法,直接用python标准库的collections.Counters类

从仅获取时区后开始

step3 使用pandas计数

step4 可视化 seaborn

5.补充一些语句

Python数据分析案例-药店销售数据分析

最近学习了Python数据分析的一些基础知识,就找了一个药品数据分析的小项目来练一下手。

数据分析的目的:

本篇文章中,假设以朝阳医院2018年销售数据为例,目的是了解朝阳医院在2018年里的销售情况,通过对朝阳区医院的药品销售数据的分析,了解朝阳医院的患者的月均消费次数,月均消费金额、客单价以及消费趋势、需求量前几位的药品等。

数据分析基本过程包括:获取数据、数据清洗、构建模型、数据可视化以及消费趋势分析。

数据准备

数据是存在Excel中的,可以使用pandas的Excel文件读取函数将数据读取到内存中,这里需要注意的是文件名和Excel中的sheet页的名字。读取完数据后可以对数据进行预览和查看一些基本信息。

获取数据:朝阳医院2018年销售数据.xlsx(非真实数据) 提取码: 6xm2

导入原始数据

数据准备

数据是存在Excel中的,可以使用pandas的Excel文件读取函数将数据读取到内存中,这里需要注意的是文件名和Excel中的sheet页的名字。读取完数据后可以对数据进行预览和查看一些基本信息。

获取数据:朝阳医院2018年销售数据.xlsx(非真实数据) 提取码: 6xm2

导入原始数据

数据清洗

数据清洗过程包括:选择子集、列名重命名、缺失数据处理、数据类型转换、数据排序及异常值处理

(1)选择子集

在我们获取到的数据中,可能数据量非常庞大,并不是每一列都有价值都需要分析,这时候就需要从整个数据中选取合适的子集进行分析,这样能从数据中获取最大价值。在本次案例中不需要选取子集,暂时可以忽略这一步。

(2)列重命名

在数据分析过程中,有些列名和数据容易混淆或产生歧义,不利于数据分析,这时候需要把列名换成容易理解的名称,可以采用rename函数实现:

(3)缺失值处理

获取的数据中很有可能存在缺失值,通过查看基本信息可以推测“购药时间”和“社保卡号”这两列存在缺失值,如果不处理这些缺失值会干扰后面的数据分析结果。

缺失数据常用的处理方式为删除含有缺失数据的记录或者利用算法去补全缺失数据。

在本次案例中为求方便,直接使用dropna函数删除缺失数据,具体如下:

(4)数据类型转换

在导入数据时为了防止导入不进来,会强制所有数据都是object类型,但实际数据分析过程中“销售数量”,“应收金额”,“实收金额”,这些列需要浮点型(float)数据,“销售时间”需要改成时间格式,因此需要对数据类型进行转换。

可以使用astype()函数转为浮点型数据:

在“销售时间”这一列数据中存在星期这样的数据,但在数据分析过程中不需要用到,因此要把销售时间列中日期和星期使用split函数进行分割,分割后的时间,返回的是Series数据类型:

此时时间是没有按顺序排列的,所以还是需要排序一下,排序之后索引会被打乱,所以也需要重置一下索引。

其中by:表示按哪一列进行排序,ascending=True表示升序排列,ascending=False表示降序排列

先查看数据的描述统计信息

通过描述统计信息可以看到,“销售数量”、“应收金额”、“实收金额”这三列数据的最小值出现了负数,这明显不符合常理,数据中存在异常值的干扰,因此要对数据进一步处理,以排除异常值的影响:

数据清洗完成后,需要利用数据构建模型(就是计算相应的业务指标),并用可视化的方式呈现结果。

月均消费次数 = 总消费次数 / 月份数(同一天内,同一个人所有消费算作一次消费)

月均消费金额 = 总消费金额 / 月份数

客单价 = 总消费金额 / 总消费次数

从结果可以看出,每天消费总额差异较大,除了个别天出现比较大笔的消费,大部分人消费情况维持在1000-2000元以内。

接下来,我销售时间先聚合再按月分组进行分析:

结果显示,7月消费金额最少,这是因为7月份的数据不完整,所以不具参考价值。

1月、4月、5月和6月的月消费金额差异不大.

2月和3月的消费金额迅速降低,这可能是2月和3月处于春节期间,大部分人都回家过年的原因。

d. 分析药品销售情况

对“商品名称”和“销售数量”这两列数据进行聚合为Series形式,方便后面统计,并按降序排序:

截取销售数量最多的前十种药品,并用条形图展示结果:

结论:对于销售量排在前几位的药品,医院应该时刻关注,保证药品不会短缺而影响患者。得到销售数量最多的前十种药品的信息,这些信息也会有助于加强医院对药房的管理。

每天的消费金额分布情况:一横轴为时间,纵轴为实收金额画散点图。

结论: 从散点图可以看出,每天消费金额在500以下的占绝大多数,个别天存在消费金额很大的情况。

/article

[Python数据分析案例]某企业广告投放效果分析

抖音2020年第一季度财报显示,其月活跃用户超过10亿,庞大的用户量背后是巨大的流量。现如今,抖音无疑是许多投放广告的商家最青睐的原生广告平台之一。

用户可以根据一系列属性建立,包括等,同时广告商可以创建抖音广告,然后为该广告或广告组创建“受众”,从而广告商可以针对特定受众,适当地定制内容。

(1) 用户点击量、转化量与广告花费是否成正相关?

(2) 从兴趣、性别、年龄三个方面来看,目标受众是否定位准确以及找出投入产出最大的是哪一部分群体?

*点击率 = 点击量/展示量

*转化率 = 询问产品次数/点击量

*二次转化率 = 购买产品次数/询问产品次数

*单次链接点击费用 = 广告花费的金额/广告得到的点击量。(单次链接点击费用 (CPC):每次有人点击广告时,支付的平均费用。)

*平均每个激活用户的成本(CPA)=广告投入总额/所投的广告带来的激活用户数

*广告投资回报率 = 转化带来的销售额/广告花费

1、查看数据概况

2、用户点击量、转化量、广告销售额与广告花费是否成正相关?

(1)广告点击量与广告花费相关性

(2)转化量与广告花费相关性

(3)广告销售额与广告花费相关性

结论:散点图一可以看出点击量和广告花费呈正相关;转化量、销售额和广告花费虽然整体呈正相关,但是相关性较弱,且广告花费从200开始,点分布太散,说明广告投放效果不好,广告投放预算需要怎么调整,还需要进一步分析广告投放的受众情况。

2、问题二:从兴趣、性别、年龄三个方面来看,目标受众是否定位准确以及找出投入产出最大的是哪一部分群体?

(1)每个广告活动的花费占比

(2)每个广告活动的销售额占比

(3)不同广告活动的平均每个激活用户的成本(CPA)柱形图

(4)不同广告活动的广告投资回报率柱形图

(5)不同广告活动的转化率柱形图

结论: 整体分析完了,现在分析局部,分别查看三支广告的指标情况,可以看出1178广告的花费和销售额都是最高的,且三支广告的点击率、二次转化率差不多,但是1178广告的转化率和投资回报率是最低的、平均每个用户激活成本却是最高的,需要具体分析1178这支广告为何花费成本最高,投资回报率却最低。

3、1178这支广告为何用户激活成本高,但转化率却不理想,是否是用户群体选择有问题(从年龄、性别、兴趣进行分析)

(1)各年龄段广告花费、广告销售额与点击率、转化率、投资回报率情况

结论: 可以看出30-34年龄段用户的广告花费排名第二,广告销售额却是最高的,并且点击率最低,转化率和投资回报率却是最高的;也可以看出之前主要投放的45-49年龄段用户,广告花费是最多的,带来的销售额并不多,点击率是最高的,但是转化率和投资回报率却是最低的,说明之前广告投放用户群年龄段定位有问题,广告需要重点投放的用户群体年龄段是30-34用户。

(2)各性别广告花费、广告销售额与点击率、转化率、投资回报率情况

结论: 从用户性别可以看出,女性用户之前的广告花费最多,点击率最高,但是带来的销售额、转化率、投资回报率却是最低的,不如男性用户。说明之前广告投放主要用户群的性别选择有偏差,应该重点投放男性用户。

(3)从兴趣进行分组分析用户画像情况

结论: 根据不同兴趣用户可以看到投资回报率最高的兴趣是36、31、101、102、112;广告花费最高的兴趣是16、27、29、10、28,可以看出广告花费最多的兴趣投资回报率都不高,兴趣标签用户定位不准确。

1、广告点击量与广告花费呈现明显的正相关,但是广告转化率与广告花费相关性弱,主要是因为广告投放受众定位不准确,虽然花了大量的广告费,带来的销售额却不是很好;

2、通过分析对销售影响最大的1178广告,发现之前大量的广告花费是投放给45-49年龄段,还有女性群体,目标定位不准确,导致广告投资回报率低;

3、需要调整抖音上广告投放的受众:30-34年龄段的男性群体,用户的兴趣范围是36、31、101、102、112。

标普100案例分析 —— 带着Python玩金融(5)

本文将带着你使用Python对标普100数据进行简单的分析,你会学到:

标准普尔100指数 用来衡量大公司的股票表现,它由多个行业的100家主要公司构成。2017年标普100在各行业的比例如下图所示。

本文将要分析的数据如下表所示,它由四列数据构成,分别是公司名(Name),行业(Sector),股价(Price)和每股盈余(EPS)。

我们将这四列数据分别存储在四个Python列表中。

先来用切片的方法观察下数据。比如查看前四家公司的名称。

或者输出最后一家公司的所有信息。

市盈率 (Price to Earnings ratio),也称股价收益比率,由股价除以每年度每股盈余(EPS)得到,它是用来衡量股价水平是否合理的指标之一。

为了方便计算市盈率,我们首先将数据从Python列表类型转换为NumPy数组。

NumPy数组的优势是它可以直接对数组进行运算,而这一点Python列表是做不到的。比如计算市盈率 pe ,我们可以直接将数组 prices 除以数组 earnings 。

接下来我们就具体行业来进行分析,比如对于IT行业,我们首先需要筛选出哪些公司属于这一行业。

用同样的方法,筛选出必需消费品行业的公司和市盈率。

筛选出IT和必需消费品行业的数据后,我们来计算这两个行业市盈率的均值和标准差。

首先用散点图来观察这两个行业中每一家公司的市盈率。这里使用Python中常用的绘图工具包 matplotlib 。

我们注意到,上图的右上角有一IT公司的市盈率特别高。若某股票的市盈率高于同类股票,往往意味着该股有较高的增长预期。所以让我们进一步来观察IT行业的市盈率分布,在这里直方图可以用来查看数据的分布情况。

现在可以更直观的看到在直方图的右侧有一离群值,它具有很高的市盈率。我们可以使用布尔索引找到这家市盈率很高的公司。

注:本文是 DataCamp 课程 Intro to Python for Finance 的学习笔记。

(责任编辑:IT教学网)

更多

推荐Painter教程文章