喜欢数据分析的世界码鲸鱼又给大家唠嗑唠嗑,在我之前的文章里曾经分享了针对淘宝用户的数据分析情况,不过,本人是新手,未能将数据分析完美地展示给大家,这是我心中的一大遗憾,不过为了能够加强自己的数据分析能力,不定期更新,针对淘宝用户的数据挖掘和分析文章,能够对数据有一个更加深刻地理解。
往期文章:
在拿到数据的时候,通常伴随着某种目的,如果是参加竞赛的话,那么你的任务可能是针对用户进行流失预测,根据已有的数据,来预测某一种群体的流失情况如何;或者是拿到近两年的用户交易流水集 ,叫你预测未来一个星期的交易趋势。
不论是哪种情况,都是伴随着问题或者要求,没有目的的分析,虽然也可以完成,但是有可能并未能分析某些特殊情况。
所以,提出问题,是进行挖掘和分析的第一步。
假如老板来了,给你了一个数据集,告诉你,今天想要了解活跃用户的相关情况,将低活跃用户的数据进行删除。
问题来了,该解决问题,这个问题的关建是活跃用户。
首先你要先判断数据集的内容。
工具包导入
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore') #忽略warnings
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False #解决matplotlib中文乱码问题
df =pd.read_csv('F:/数据分析/tianchi_mobile_recommend_train_user.csv')
print(df.head(10))
len(df)
df.columns
打开文件后,数据范围如下:
我的天,1200万多条数据,数据集对于学生来说,是比较庞大的(推荐使用pycharm运行)
如果担心自己习惯用jupyter的人是否可以玩转pycharm,可以推荐使用shift+alt+e键,来实现使用jupyter时的操作手感。
这里进行假定(也有别的分法):
针对数据集中用户出现的次数进行,划分活跃用户。
根据代码已经知道了用户的总数为10000人。
那么根据出现次数大于1次,10次,100次,1000次的用户进行探究。
print("大于1000的用户数量:",len(df.user_id.value_counts()[df.user_id.value_counts()>1000]))
print("大于1的用户数量:",len(df.user_id.value_counts()[df.user_id.value_counts()>1]))
print("大于100的用户数量:",len(df.user_id.value_counts()[df.user_id.value_counts()>100]))
print("大于10的用户数量:",len(df.user_id.value_counts()[df.user_id.value_counts()>10]))
可以发现的是当用户大于1000次的时候,出现了断层,这时候,我们将出现次数大于1000次的用户定义为活跃用户,接着就是对数据集里挑选出符合条件的用户。
df_group=df.groupby('user_id').count()
print(df_group)
print(df)
print(df_group[df_group.item_id>1000])
df_new_select=df_group[df.user_id.value_counts()>1000]
df_new_select.rename(columns={'item_id':'count'},inplace=True)
df_new_select.reset_index(inplace=True)
# pd.concat([df,df_new_select],axis=1)
df_merge=pd.merge(df_new_select[['user_id','count']],df,on='user_id')
首先先用groupby函数和count函数统计出现次数,随后挑选出大于1000次的数据,对新的数据进行重命名,再对索引重新定义,最后使用merge函数进行合并,就能挑选出自己想要的数据了。
数据减少了约300万条数据。从之前的分析来看,这个数据集包含了3000多名的行为数据,第一个问题得到了解决。
结尾:
我本人水平有限,思考的时候可能有所欠缺。
如果喜欢的话,点赞+关注,我们不见不散。