一.数据背景
数据集是某网站下载的CD商品的数据集合,本次使用Python+Jupyter Notebook对数据集进行数据分析。数据集
二.理解数据:
数据集是TXT格式,大约有7万条数据。包含用户ID,购买日期,购买量及金额。数据清洗:
1)使用Pandas进行数据集读取,并给数据集加索引
import pandas as pd
import numpy as np
#给数据集合加横轴索引
columns=['user_id','order_dt','order_products','order_amount']
#读取文件集,并利依据空格进行数据拆分
df=pd.read_table('D:\BaiduNetdiskDownload\CDNOW_master.txt',names=columns,sep='\s+')
df.head()
2)查看数据集类型及大小:
#查看数据类型
df.info()
#查看数据集大小
df.describe()
因为数据集合中,order_dt 购买日期显示为整数型字段,后面可能用到月份的数据透视,所以这里进行数据转换成日期datetime格式,并增加一列与之对应的月份格式,方便后续数据调用。
#整数型数据进行日期格式转换,年月日日期格式
df['order_dt']=pd.to_datetime(df.order_dt,format='%Y%m%d')
#增加数据集中月份字段
df['month']=df.order_dt.values.astype('datetime64[M]')
df
三. 数据分析及可视化
1.用户消费趋势分析(月度)
对用户消费行为进行分析,并使用Matplotlib数据包进行简单的数据可视化展示
1)每月消费总额
#按照月度进行分组
month_groupby=df.groupby('month')
#每月度的交易金额求和
order_month_amount=month_groupby.order_amount.sum()
#加载数据可视化包,并进行相关设置
import matplotlib.pyplot as plt
#可视化显示在页面
%matplotlib inline
#更改图表设计风格
plt.style.use('ggplot')
#解决中文乱码问题,设置字体格式
plt.rcParams['font.sans-serif']='SimHei'
#进行图表可视化
order_month_amount.plot()
#加表头,居中显示
plt.title(label='月度消费总额',loc='center')
2)每月消费人数&每月产品购买量
#ID计数
order_month_amount1=month_groupby.user_id.count()
order_month_amount1.plot()
plt.title(label='月度消费总人数',loc='center')
#产品销量求和
month_groupby.order_products.sum().plot()
plt.title(label='每月产品购买量',loc='center')
3)每月消费人数
#user_id数据去重,并按照月份统计个数(加索引)
month_user_id=df.groupby(['month','user_id']).count().reset_index()
month_user_id.groupby('month').user_id.count().plot()
plt.title('月度消费总人数',loc='center')
2.用户个体消费分析用户消费金额,消费次数描述统计
#按照用户ID进行数据拆分
grouped_user=df.groupby('user_id')
#用户ID对应数据求和
grouped_user.sum().describe()
#利用散点图,判断极值影响范围
grouped_user.sum().plot.scatter(x='order_amount',y='order_products'
#构建直方图,显示产品销量区间占比
grouped_user.sum().query('order_products<90').order_products.plot.hist(bins=20)
#计算累加值,判断
user_cumsum=grouped_user.sum().sort_values('order_amount').apply(lambda x: x.cumsum()/x.sum())
user_cumsum
#增加索引,方便构建折线图
user_cumsum.reset_index().order_amount.plot()