python大数据作业-客户价值分析-实训头歌

这篇具有很好参考价值的文章主要介绍了python大数据作业-客户价值分析-实训头歌。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实验目的与要求

1、掌握使用numpy和pandas库处理数据的基本方法。
2、掌握使用RFM分析模型对客户信息进行特征提取的基本方法。
3、掌握对特征数据进行标准化处理的基本方法。
4、掌握使用Sklearn库对K-Means聚类算法的实现及其评价方法。
5、掌握使用matplotlib结合pandas库对数据分析可视化处理的基本方法。

二、实验内容

1、利用python中pandas等库完成对数据的预处理,并计算R、F、M等3个特征指标,最后将处理好的文件进行保存。
2、利用python中pandas等库完成对数据的标准化处理。
3、利用Sklearn库和RFM分析方法建立聚类模型,完成对客户价值的聚类分析,并对巨累结果进行评价。
4、结合pandas、matplotlib库对聚类完成的结果进行可视化处理。

三、实验步骤

1、数据预处理。

(1)导入所需要使用的包

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from datetime import datetime

(2)读取文件

datafile="/data/bigfiles/data2.csv"
data = pd.read_csv(datafile)

(3)查看数据的基本统计信息

# 整体信息

print(data.info())

python大数据作业-客户价值分析-实训头歌

 (4)提取属性列

data.describe()

 python大数据作业-客户价值分析-实训头歌

(5)处理异常数据

#提取需要的列
# 这里需要买家id,支付金额,支付时间,最后付款时间
data=data.filter(items=['买家会员名','打款商家金额','订单付款时间','数据采集时间'])
# 统计数据缺失的值
datas=data.isnull().sum()
data=data.dropna(axis=0,how='all')
print(datas)
# 查看完全重复行
result=data.duplicated()
df=data[result]
df
# 删除完全重复的行
data=data.drop_duplicates()
result=data.duplicated()
df=data[result]
df
#删除未付款的行
data.drop(data.loc[data['打款商家金额']=='0.00元'].index, inplace=True)
#统计付款次数
counts=data['买家会员名'].value_counts()
data['付款次数']=data['买家会员名'].map(counts)
data['打款商家金额']=data.打款商家金额.map(lambda x: round(float(x.replace('元','')),2))
#删除为nan的行
data=data.dropna(axis=0,how='any')
data['订单付款时间']=data.订单付款时间.map(lambda x:  datetime.strptime( x,'%Y/%M/%d'))
# print(data)
data =data.groupby("买家会员名").agg({"打款商家金额":"sum","订单付款时间":"max","付款次数":"max"})
data

python大数据作业-客户价值分析-实训头歌

 (6)计算R并进行标准化,更改列名

# 计算R
# 数据采集时间减去订单付款时间
exdata_date=datetime(2018,12,31)
start_date=datetime(2017,1,1)
data['R(最后一次消费时间)']=exdata_date-data['订单付款时间']
data

python大数据作业-客户价值分析-实训头歌

 (7)计算F并进行标准化,更改列名

from math import ceil
# 计算最后一次消费事件和起始时间
period_day=data['订单付款时间']-start_date
#创建空列表统计月数
period_month=[]
for i in period_day:
    period_month.append(ceil(i.days/30))
# 第一次输出月数统计
print(period_month)
# 遍历清除0值
for i in range(0,len(period_month)):
    if period_month[i]==0:
        period_month[i]=1
# 第二次统计月数
print(period_month)
# 计算f
data['F(月平消费次数)']=data['付款次数']/period_month

data

python大数据作业-客户价值分析-实训头歌

 (8)更改M为列名,对数据进行标准化

data['m(月平均消费金额)']=data['打款商家金额']/period_month
data

python大数据作业-客户价值分析-实训头歌

 (9)存储预处理后的文件

#跳过不用运行
# 去掉空格
data=data.rename(columns=lambda x:x.strip())
out_file_path='客户信息预处理.xlsx'
data.to_excel(out_file_path,index=False)

2、数据分析

(1)读取预处理后的文件

# 此处读取任然是跳过
datafile='客户信息预处理.xlsx'
data=pd.read_excel(datafile,encoding="utf-8")
data.head()

(2)利用肘部法确定k的值(图像展示)

# 标准化
cdata=data[['R(最后一次消费时间)','F(月平消费次数)','m(月平均消费金额)']]
# 修改索引
cdata.index = data.index
cdata
z_cdata=(cdata-cdata.mean())/cdata.std()
#重命名列名
z_cdata.columns=['R(标准化)','F(标准化)','m(标准化)']
z_cdata
# 用SSE来记录每次聚集类后样本到中心的欧式距离
SSE=[]
# 分别聚类为1~9个类别
for k in range(1,9):
    estimator =KMeans(n_clusters=k)
    estimator.fit(z_cdata)
# 样本到最近聚类中心的距离平方之和
    SSE.append(estimator.inertia_)
#设置x轴数据
X=range(1,9)
#设置字体
plt.rcParams['font.sans-serif']=['SimHei']
#开始绘图
plt.plot(X,SSE,'o-')
plt.xlabel('k')
plt.ylabel('SSE')
plt.title("肘部图")
plt.show()

python大数据作业-客户价值分析-实训头歌

 (3)建立KMeans模型

# 聚类分析
kmodel=KMeans(n_clusters=4,n_jobs=4,max_iter=100,random_state = 0)
kmodel.fit(z_cdata)

python大数据作业-客户价值分析-实训头歌

 (4)输出各个簇的质心

#查看每条数据所属的聚类类别 
kmodel.labels_
#查看聚类中心坐标
kmodel.cluster_centers_

python大数据作业-客户价值分析-实训头歌

 (5)存储客户类型文件

# 统计所属各个类别的数据个数
r1=pd.Series(kmodel.labels_).value_counts()
r2=pd.DataFrame(kmodel.cluster_centers_)
# 连接labels_与z_cdata
result=pd.concat([r2,r1],axis=1)
#重命名列名
result.columns=['R','F','M']+['类别']
result

python大数据作业-客户价值分析-实训头歌

# 连接labels_与z_cdata
KM_data=pd.concat([z_cdata,pd.Series(kmodel.labels_,index=z_cdata.index)],axis=1)
data1=pd.concat([data,pd.Series(kmodel.labels_,index=data.index)],axis=1)
#重命名列名
data1.columns=list(data.columns)+['类别']
KM_data.columns=['R','F','M']+['类别']
KM_data.head()
#买家会员名列与类名标签对应
KM_data['买家会员名']=KM_data.index

 下面这段可以跳过

#跳过如果服务器挂掉
#out_file_path='客户类型文件.xlsx'
#KM_data.to_excel(out_file_path,index=False)

3、数据可视化(对每个类型客户标准化后的R、F、M数据分别进行图像展示)

# 分组统计求均值
kmeans_analysis =KM_data.groupby(KM_data['类别']).mean()
#重命名列名
kmeans_analysis.columns=['R','F','M']
kmeans_analysis

python大数据作业-客户价值分析-实训头歌

#绘制柱状图
kmeans_analysis.plot(kind ='bar',rot=0,yticks=range(-1,9))
#完善图表
plt.title("聚类结果统计柱状图")
plt.xticks(range(0,4),['第0类','第1类','第2类','第3类'])
plt.grid(axis='y',color='grey',linestyle='--',alpha=0.5)
plt.ylabel("R,F,M 3个指标均值")
plt.savefig("聚类结果统计柱状图",dpi=128)

python大数据作业-客户价值分析-实训头歌

 4、分析评价

下面自己写咯!!文章来源地址https://www.toymoban.com/news/detail-416616.html

到了这里,关于python大数据作业-客户价值分析-实训头歌的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaScript上部分--头歌(educoder)实训作业题目及答案

      目录 JS简介 第1关: JavaScript基础入门 第2关: JavaScript 与 HTML 第3关: JavaScript 变量 JS 数据类型 第1关: JavaScript 数据类型介绍 第2关: JavaScript 数据类型转换 JS运算符 第1关: 算术运算符 第2关: 比较和逻辑运算符 第3关: 条件和赋值运算符 第4关: 运算符的优先级和结合性 JS对象 第

    2024年02月08日
    浏览(34)
  • JavaScript下部分--头歌(educoder)实训作业题目及答案

    目录  JSON 第1关: JSON对象 第2关: JSON数组 第3关: JSON字符串 Math、日期和异常处理 第1关: Math类 第2关: Date类 第3关: JavaScript错误 HTML DOM——文档元素的操作(一) 第1关: 通过id获取文档元素 第2关: 通过类名获取文档元素 第3关: 通过标签名获取文档元素 第4关: html5中获取元素的

    2023年04月26日
    浏览(42)
  • 数字逻辑---头歌实训作业---加法器设计(Logisim)

    第1关:半加器设计 如有任何不解或者想要答案代码,可在评论区喊话我哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!! 本关卡最终答案:   任务描述 本关任务:利用在Logisim中的“组合逻辑分析”工具自动生成半加器电路。 相关知识 半加器电路是指对两个输

    2023年04月13日
    浏览(52)
  • 头歌Python实训——pandas数据处理

    任务描述 本关任务: 超市销售数据如图所示 建立excel文件“类别销售”,根据不同类别建立多个工作表,将相同类别的销售信息存放在相应的工作表中。 相关知识 为了完成本关任务,你需要掌握:1.读取excel文件,2.筛选dataframe数据,3.将数据写入工作簿和工作表 从excel文件读

    2024年02月04日
    浏览(38)
  • 头歌Python实训——matplotlib数据可视化

    任务描述 各省GDP的excel文件如图所示 编写一个程序,计算每年各省GDP信息的和,生成条状图显示 要求窗口大小10,10,图表标题为GDP条状图 相关知识 为了完成本关任务,你需要掌握: 1.数据汇总 2.matplotlib库的使用 3.如何建立条状图 4.设置图表参数 Dataframe数据汇总 dataframe对

    2024年02月03日
    浏览(61)
  • 数字逻辑---头歌实训作业---多路选择器设计与应用(Logisim)

    如有任何不解或者想要最终实验代码,可评论区喊话哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!! 本关卡最终答案: 任务描述 本关任务:在Logisim中绘制2选1多路选择器,先在本地完成测试,体验数据选择的功能,然后在线完成测评。 相关知识 多路选择器又

    2024年02月08日
    浏览(115)
  • JavaScript上部分--头歌(educoder)实训作业题目及答案 JS简介

      目录 JS简介 第1关: JavaScript基础入门 第2关: JavaScript 与 HTML 第3关: JavaScript 变量 JS 数据类型 第1关: JavaScript 数据类型介绍 第2关: JavaScript 数据类型转换 JS运算符 第1关: 算术运算符 第2关: 比较和逻辑运算符 第3关: 条件和赋值运算符 第4关: 运算符的优先级和结合性 JS对象 第

    2023年04月22日
    浏览(166)
  • 头歌Python实训答案——Python的几种数据结构

    第1关:列表及操作 #coding = utf-8 #********* Begin *********# #第一步 请在列表fruits中找出不属于水果一类元素,赋值给变量 a fruit = [\\\"苹果\\\",\\\"梨子\\\",\\\"菠萝\\\",\\\"黄瓜\\\",\\\"香蕉\\\"] a =\\\"黄瓜\\\" #第二步 将变量 a 的值添加到列表vegetable 的末尾 vegetable = [\\\"土豆\\\",\\\"萝卜\\\",\\\"茄子\\\",\\\"白菜\\\"] vegetable.append(a) #第三

    2024年02月05日
    浏览(70)
  • 头歌(educoder)实训作业题目及答案分享 ——1-4 Java入门 - 分支结构

    📜个人简介 :  作者简介:大家好,我是Passenger.n✌️  支持一下:点赞👍+收藏🌟+留言📪 📣 系列专栏:java基础🍁 ✉️格言:花有重开日,人无再少年!🌞 万事开头难,既然迈开了这一步,那就坚持走下去! 这是我的第一篇博客,希望萌新看了有收获,大佬看了给指

    2024年02月06日
    浏览(105)
  • 头歌(educoder)实训作业题目及答案分享 ——1-7 Java入门-分支与循环练习

    📜个人简介 :  作者简介:大家好,我是Passenger.n✌️  支持一下:点赞👍+收藏🌟+留言📪 📣 系列专栏:java基础🍁 ✉️格言:花有重开日,人无再少年!🌞 万事开头难,既然迈开了这一步,那就坚持走下去! 这是我的第一篇博客,希望萌新看了有收获,大佬看了给指

    2024年02月04日
    浏览(83)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包