Python数据分析项目(Python数据分析项目化教程薛国伟答案)

http://www.itjxue.com  2023-04-13 04:29  来源:未知  点击次数: 

python数据分析项目:用户消费行为分析

为了创造更多利润、实现数据驱动运让弊配营,某CD网站拟对18个月以来的近7万条消费数据进行分析。具体的研究思路如下:

新增['month']列,便于后续按月分析。

重新查看,此时的时间列已转换为正常格式。

由上图可知,

接下来我们用之前清洗好的字段进行数据分析。

前三个月消费订单数在10000笔左右,后续月份的平均则在2500笔。

前三个月产品购买数在20000以上,后续月份的产品购买量在6000~8000左右 。

前三个月每月的消费人数在8000-10000之间,后续月份平均消费人数在2000人不到

上述消费趋卜历势的分析可以通过数据透视表分析(不建议数据透视表进行去重操作)

本章小结——

趋势分析:总体来看,消费总金额、消费次数、产品购买量、消费人数的趋势想似:均先上升、下跌、趋于平稳并下降。

可以看出网站的流失用户在增加,采用开源(拉新)节流(留存)的运营方式,来增加销售收入。

上一部分是按月分析,主要看趋势;本部分按用户个体分析,来看消费能力。

按用户消费金额进行降序排列,由图可知,共计约25000个用户:

启发,只要维护好这5000个用户(占比20%)就可以把业绩KPI完成70%,如果能把5000个用户运营的更好就可以占比更高。

通过以上基本数据描述分析可以清楚该网站整体的消费趋势和用户消费能力,现在进一步挖掘用户消费行为数据,通过RFM模型、生命周期等方法对用户进行分层,为后续运营管理提供依据。

首购可以进一步依渠道划分,衡量不同渠道的差异性,从而量化渠道能力,为后期渠道优化提供依据。

用户第一次购买分布,集中在前三个月(1997年1-3月);其中,在2月11日至2月25日有一次剧烈波动

由图可知,1997年1-4月新用户数量由90%跌落至80%以下;之后几个月的新用户量保持在80~82%区间。

RFM是一个经典的用户分类模型,模型利用通用交易环节中最核心的三个维度——最近消费(Recency)、消费频率(Frequency)、消费金额(Monetary)细分用户群体,从而分析不同群体的用户价值,最终达到精准营销。

RFM从3个维度、分2个等级(均值)得到8类用户分层。

通过RFM模型,把用户分为8个类别,分别给用户打标签、将客户分为重要价值、重要保持、重要坦指挽留、重要发展、一般价值、一般保持、一般保留、一般发展8类客户。

从RFM分层可知,本网站的大部分用户为一般挽留客户(可适当放弃这部分低价值客户、也可进一步提高活跃度)、重要保持客户(企业优质的客户群,采用会员制运营)。具体运营策略依据参照如下:

为了避免划分用户群体过多(RFM从3个维度、分2个等级得到8类用户分层的数据立方),可能导致针对性的营销成本负担上升;下面将通过聚类方法,基于RFM模型划分成4类用户,更快实现后期用户管理。

显然,归一化预处理后,当n=2时,轮廓系数取最大值0.79,仅从模型聚类效果来讲分2类合适;而标准正态化预处理后显示,分4类的轮廓系数最大,达0.6964(但2-7类的轮廓系数整理差别波动不大)

参考漏斗模型,针对每个用户,按18个月内的每个月对用户情况进行分类,即新用户、活跃用户、回流用户、流失用户。

通过下面的数据透视表即可得到每个用户每个月的购买情况,从而进行转化分析。

若本月无消费(即为0)

若本月有消费(即为1)

由上表可知,每月的用户消费状态变化

基于python的prosper借贷平台之数据分析

项目介绍:

p2p 借贷业兄租务具有门槛低,渠道成本低的特性,风险防控对于出借企业来说亩升非常重要。本项目需要

从大量借贷者的数据集中分析出容易违约和不容易违约的人群画像特征,以给业务做贷前决策使

用。同时使用机器学习算法,实现自动识别风险人群(精准率为 89.86%),加快人工审查效率。

项目具体内容:

1、使用 python pandas 工具进行数据清洗、缺失值、异常值处理以及特征指标筛选。

2、使用 python matplotlib 可视化工具进行探索式数据分析,展示用户关键特征如月收入、信用卡

透支情况对于违约率的影响情况。

3、使用机器学习随机森林进行建模分析,使用学习曲线、网格搜索、交叉验证,最终得到了一个评

分为 84.9%、精准率为 89.86%、召回率为 80.70%、auc 面积为 0.9337 数据预测模型。

? ? 本次数据训练使用的模型是随机森林分类算法,通过对预处理过的数据集进行训练,使用学习曲线、网格搜索、交叉验证。最终得到了一个评分为84.9%、精准率为89.86%、召回率为80.70%、 auc面积为0.9337 数据预测模型。?

数据预处理的基本流程与思路:

1、首先要明确有多少特征,哪些是连续的,哪些是类别的。

2、检查有没有缺失值,对确实的特征选择恰当方式进行弥补,使数据完整。

3、对连续的数值型特征进行标准化,使得均值为0,方差为1。

4、对类别型的特征进行one-hot编码。

5、将需要转换成类别型数据的连续型数据进行二值化。

6、为防止过拟合或者其他原因,选择是否要将数据进行正则化。

7、在对数据进行初探之后发现效果不佳,可以尝试使用多项式方法,寻找非线性的关系。

8、根据实际问题分析是否需要对特征进行相应的函数转换。

导入数据集,并查看数据基本情况。可以看到prosper原始数据量比较庞大,一个有113937个样本,80个特征列,1个标签列。

1.1、特征较多,先共删减一部分无用的特征。

1.2?查看数据缺失情况,可以看到有40个特征是存在数据缺失的,缺失率从0.000219-0.882909不等。下面处理缺失数据。

1.2.1?删除缺失值比较多的特征

下面两个特征缺失率太高,且与迅尘老我们要分析的相关性不大,直接删除掉。

1.2.2 获取数据类型是分类变量的所有特征,并使用unknown进行填充

1.2.3 特殊变量使用计算公式进行填充

1.2.4 去掉意义重复列

1.2.5 删除缺失率比较少的特征的缺失数据行

处理完缺失数据后,样本量为106290,特征量为55

1.3 数据过滤

1.3.1 从2009年7月开始,Prosper调整了对客户的评估方式,此次我们只对2009-07-01后的贷款进行分析。

过滤完数据后,样本量变为82931,特征量为54

2.1单变量分析

0为未违约人数,1位违约人数,可以看到2009.07以后,违约率为22.90%

2.1.1不同地区贷款数量分布

从图中可以看到加利福尼亚州贷款数量远比其他州的数量高。由于prosper总部就位于加利福尼亚州,这与实际情况一致。其他排名靠前的分别是得克萨斯、纽约、佛罗里达、伊利诺伊,贷款数据均超过了5000条。根据2015年美国各州的GDP排名,这5个州刚好排名前五,而且顺序也是一致的。说明Prosper平台的用户主要分布在美国经济发达的地区。

2.1.2?贷款人收入情况分布

年薪在25000美金以上在美国属于技术性白领或者有一定学历的职员,50000美金已经是近金领阶层,比如:大学教授,医生等。从图中可以看出Prosper平台用户的收入水平都相对较高,有利于用户还款,利于平台和投资者的风险控制。

2.1.3贷款人职业分布

从图中可以看出,除了不愿意透露具体职业的人,大部分用户是教授、程序员、企业高管等具有一定社会地位的人,这部分人受过高等教育,信用有一定保障。另外,这与之前看到的收入情况相符。

2.1.4贷款人债务收入比分布

大部分用户的债务收入比在0.2左右,超过0.5的占很少部分。说明Prosper平台用户的还款能力还是比较乐观的

2.1.5?贷款者信用卡使用情况

BankcardUtilization代表的是信用卡使用金额和信用卡额度的比值,可以体现用户的资金需求。Prosper用户多是0.5~1之间,说明用户每个月还有信用卡要还,降低了其还款能力。

2.2?相关的关键因素对贷款违约率的影响

2.2.1借贷人收入IncomeRange对违约率的影响

从图中可以看出:

1.一般来说收入越高违约率越低

2.贷款的人员主要集中在中等收入群体

2.2.2?债务收入比DebtToIncomeRatio对违约率的影响

从上图可以看出:

1.债务收入比小于0.6时,违约数明显小于未违约数,

2.当债务收入比大于0.6时,两者的差距不是很明显甚至违约数大于未违约数,说明了债务收入比越大的人越容易违约

2.2.3 借款人BankcardUtilization对违约率的影响

1.总的来说,随着信用卡的透支比例越来越高,违约率也越来越高

2.SuperUse的违约率到了37.5%,这部分人群需要严格了监控,No Use人群也有31%的违约率,当初将信用卡透支比例为0和NA的数据都归类为No Use,显然没有这么简单,应该是大部分人群的NA值是为了隐藏自己的高透支比例而填写的

2.2.4 消费信用分CreditScoreRange对违约率的影响

从上图可以看出:

1.随着信用分数CreditScore的上升,它的违约率在下降

2.大部分贷款者的信用分为650-800,违约率在0.06-0.02

2.2.5 过去7年借款人违约次数DelinquenciesLast7Years对违约率的影响

过去七年违约次数(DelinquenciesLast7Years)能够衡量一个人在过去七年中征信情况,违约一次或以上的人在借款时违约概率更大。

?从上图可以看出:

1.总体来说过去7年违约次数越多,违约率越高

2.过去7年未违约的人数相对来说比其他违约的人数高很多,具体看下面的分析

3.1 数据转化

3.1.1类变量进行哑变量化

样本量变为82931,特征量为127

3.1.2?标签变量进行二分类

已完成贷款的样本量变为26365,特征量为127

未违约率为:0.7709084012895885;违约率为0.22909159871041151

3.2 至此,数据预处理的工作就告一段落,保存预处理好的数据。

?导入经过预处理的prosper借贷数据集

4.1?手工挑选特征查看一下建模效果

准确率为0.7695

4.2?使用模型自己选取特征

准确率为0.7780

4.3?使用学习曲线选取最优n_estimators

在0-200/20内学习,得到最优n_estimators=161,score = 0.8508

在151-171/20内学习,得到最优n_estimators=163,score = 0.8511

4.4?使用网格搜索调其他参数

在0-60/5内学习,得到最优max_depth=41

在0-60/5内学习,得到最优max_features=16

这里由于比较耗时,没有进一步细化选择更高的参数

4.4 最终模型效果

最终准确率 0.8490528905289052

混淆矩阵 :

[[5552? 554]

[1175 4914]]

精准率 : [0.82533076 0.89868325]

召回率 : [0.90926957 0.80702907]

roc和auc面积为0.9337

4.5 查看各特征的重要性

4.6?数据预测

预测的违约率0.0427

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数据分析综合项目--空气质量指数分析

近年来,我国的环境问题比较严重,很多城市出现了雾霾天气,当然也有很多城市空气依旧清新,为了研究具体的空气环谈丛境城市分布,我们采用了假设检验以及线性回归的思想对AQI(空气质量指数)进行分析和预测,其中AQI的值越大,表示空气质量越差,AQI值越小,表明空气质量越好。

1.列出空气质量优秀/较差的五个城市

2.全国空气质量分布情况

3.临海城市和内陆城市的空气质量对比

4.影响空气指数的因素

5.空气质量均值验证

City 城市名

AQI 空气质量指数

Precipitation 降雨量

GDP 城市生产总值

Temperature 温度

Longitude 经度

Latitude 纬度

Altitude 海拔高度

PopulationDensity 人口密度

Coastal 是否沿海

GreenCoverageRate 绿化覆盖率

Incineration(10,000ton) 焚烧量(10000吨)

在进行数据分析之前,我们对数据集进行观察并对其中的缺失值、重复值、异常值进行处理

我们发现降雨量数据中包含了4个缺失值,为了保证数据的精确,我们查一下降雨量的数据分布

很明显的呈现右偏分布,因此采用平均数来替代缺失值并不妥,我们这里用中位数来代替

GDP属性中检测出8条异常值,我们这里含基樱采取用极端值替换的方式,将异常值替换成最大值

数据集处理完毕之后,我们开始进行数据分析

按照AQI降序排列,选出排名前五以及后五的城市,进行可视化,结果如下

结论:空气质量较好的城市为韶关市、南平市、梅州市、基隆市、三明市,空气质量堪忧的城市分别为焦作市、锦州市、保定市、朝阳市、北京市

这里我们将AQI指数分为六个等级,并根据等级统计全国空气质量的等级情况

我们再用散点图绘制下全国的空气质量分布

结论:我国城市的空气质量集中在一级、二级和三级,高污染城市比例较低;从地理位置来看,西部城市空气质量优于东部城市,南部城市优于北部城市。

根据上面的结论我们发现,仿佛临海城市的空气质量普遍高于内陆地区,那么这个结论是否是真的呢?还需要进一步验证。

首先,我们来统计下不同地理环境的城市数量

第二步,绘制临海和内锋缓陆城市的AQI分布图

我们发现内陆城市AQI集中分布在50-100区间内,而沿海城市AQI集中分布在0-50区间,在此样本中,沿海的AQI分布低于内陆城市,但是这毕竟是样本,无法推测出总体分布情况,还需进一步探测。

第三步,统计AQI均值并绘制分布密度图

第四步,差异检验,查看内陆沿海AQI均值分布是否显著

我们先假设内陆城市和沿海城市的平均值相同

结果得出支持的概率为0.006,远低于0.05,因此我们否定原假设,选择备择假设,即内陆城市和沿海城市的平均值不相同

结论:经过分析,我们发现有超过99%的概率可以证明临海城市空气质量优于内陆城市的空气质量。

为了探究影响空气质量的具体因素,我们需要计算出两个变量之间的相关系数,以此进行判断,这里采用热力图进行可视化操作。

结论:从显示结果看出,AQI主要受降雨量和纬度的影响,其中降雨量越多,空气质量越好(0.4);纬度越低,空气质量越好(-0.55)

当然,从整个图片来看,也能发现很多变量之间的关系,比如GDP与焚烧量的正相关系数达到了0.9,温度与纬度的负相关系数达到了-0.81等。

传闻空气质量均值在71左右,这个消息是否是准确的呢?我们进行一次验证。

首先计算样本的均值

结果显示为75.334

那么总体的均值是否为71呢?这里先假设总体的均值为71,进行t检验

结论:可以看出,偏离均值1.81倍的标准差,而且p值大于0.05,我们接受原假设(即空气质量均值在71左右)另外,我们还可以计算出在置信度为95%时,空气质量均值的置信区间为70-80。

(责任编辑:IT教学网)

更多

推荐java认证文章