其他分享
首页 > 其他分享> > 数据分析-以买东西数据为例

数据分析-以买东西数据为例

作者:互联网

数据分析-以买东西数据为例

首先导入库:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

然后到数数据:

df=pd.read_csv('./data/CDNOW_master.txt',header=None,sep='\s+',names=['use_id','order_dt','order_product','order_amount'])
df

其中header=None表示没有列名,sep=’\s+‘表示按多个空格分隔列,names=[‘use_id’,‘order_dt’,‘order_product’,‘order_amount’]表示将列名重新命名为’use_id’,‘order_dt’,‘order_product’,‘order_amount’。
在这里插入图片描述
查看文件信息:

df.info()

在这里插入图片描述
将‘order_dt’转换为日期格式:

df['order_dt']=pd.to_datetime(df['order_dt'],format='%Y%m%d')
df

在这里插入图片描述
分析列为数字的列:

df.describe()

在这里插入图片描述
加入新的列,列中数据为当年月份:

df['month']=df['order_dt'].astype('datetime64[M]')
df

在这里插入图片描述
所有用户每月消费的总数:

df.groupby(by='month')['order_amount'].sum()

在这里插入图片描述
画相关折线图:

df.groupby(by='month')['order_amount'].sum().plot()

在这里插入图片描述
所有用户每月的消费次数:

df.groupby(by='month')['order_product'].sum()

在这里插入图片描述
画出相关的折线图:

df.groupby(by='month')['order_product'].sum().plot()

在这里插入图片描述
每月有多少不同用户买了东西:

df.groupby(by="month")['use_id'].nunique()

在这里插入图片描述

.nunique()表示unique()后计算数量。
求每名用户消费的钱数:

df.groupby(by='use_id')['order_amount'].sum()

在这里插入图片描述
每名用户买了多少次东西:

df.groupby(by='use_id').count()

在这里插入图片描述
每名用户花的总钱数与总商品数的散点图:

money_amount=df.groupby(by='use_id')['order_amount'].sum()
num_amount=df.groupby(by='use_id')['order_product'].sum()
plt.scatter(money_amount,num_amount)

在这里插入图片描述
每名用户消费的总钱数(小于1000)

df.groupby(by='use_id').sum().query("order_amount<1000")['order_amount']

在这里插入图片描述

df.groupby(by='use_id').sum().query("order_amount<1000")['order_amount'].hist()

在这里插入图片描述
每名用户所买商品的总数量(小于100):

df.groupby(by='use_id').sum().query("order_product<100")['order_product']

在这里插入图片描述

df.groupby(by='use_id').sum().query("order_product<100")['order_product'].hist()

在这里插入图片描述
用户第一次消费的月份:

df.groupby(by='use_id')['month'].min()

每月的新用户:

df.groupby(by='use_id')['month'].min().value_counts()

在这里插入图片描述
用户最后一次消费的月份:

df.groupby(by='use_id')['month'].max()

在这里插入图片描述
每月中最后一次消费的用户数:

df.groupby(by='use_id')['month'].max().value_counts()

在这里插入图片描述
最后一次消费与第一次消费在相同月份的有:

df.groupby(by='use_id')['order_dt'].agg(['min','max'])
new_old_use=df.groupby(by='use_id')['order_dt'].agg(['min','max'])
(new_old_use['min']==new_old_use['max']).value_counts()

在这里插入图片描述
获取透视图:

df.pivot_table(index='use_id',aggfunc={'order_product':'sum','order_amount':'sum','order_dt':'max'})
new_df=df.pivot_table(index='use_id',aggfunc={'order_product':'sum','order_amount':'sum','order_dt':'max'})

假设现在是文件中消费日期中最后的一天,计算出所有消费日期与最后一天的消费日期的差值为:

max_dt=df['order_dt'].max()
-(df.groupby(by='use_id')['order_dt'].max()-max_dt)/np.timedelta64(1,'D')
new_df['R']=-(df.groupby(by='use_id')['order_dt'].max()-max_dt)/np.timedelta64(1,'D')
new_df

在这里插入图片描述
组成MFR表:

new_df.drop(labels='order_dt',axis=1,inplace=True)
new_df.columns=['M','F','R']
new_df

在这里插入图片描述
计算每名用户每月的订单数量:

second_df=df.pivot_table(index='use_id',values='order_dt',aggfunc='count',columns='month')

以用户名(‘use_id’)为行名,就是以use_id分组对order_dt求和,其中的columns对order_dt再进行细分,划分为每月。
对其中的NAN赋为’0‘。

second_df=second_df.fillna(0)
second_df

在这里插入图片描述
判断用户当月是否消费了:

user_month_df=second_df.applymap(lambda x:1 if x>=1 else 0)
user_month_df

在这里插入图片描述

标签:数据分析,use,为例,df,以买,groupby,id,dt,order
来源: https://blog.csdn.net/qq_28368825/article/details/123308345