案例:App Store评分数据

项目背景:

如今想在手机应用商店上成为成功的应用越来越困难。对app下载和评分数据的分析成为帮助app开发者获取和留存用户的重要工具。Play商店应用数据具有巨大的潜力,可以推动应用制作业务取得成功。可以为开发人员提供可操作的见解,以便开发和捕获移动市场。

针对性回答三个问题

1.免费和收费的app都集中在哪些类别?

2.收费app的价格分布是如何的?不同类别的价格分布是怎样的?

3.App文件的大小和价格以及用户评分之间有关系吗?

本课题分析流程

602149bb92d05a3d656525a6f6b7c23a.png

核心变量解释

f7edaa3a2e8fce90872df56635f34b5f.png

代码实现来了

dac489f5baeb83dab504ef0cb71a432a.png

1d4d54852869dee70498b00f6a470fd9.png

#发现这个Unnamed: 0 这个奇怪的变量,需要进行清理 Unnamed: 0表示的是索引,当表里没有就自动添加 inplace表示清理这个变量,然后true是保存在文件里面

data.drop(‘Unnamed: 0’,axis=1,inplace=True)

4d7e163efd39066a2212c3250dfbc9e1.png

**清理数据**

在describe中,只对数字型有效

560ca3625e4ef8f1db6960ef39f0fb65.png

6f2fc9a5df0a18477d9d8575ab510651.png

1c605ca21c2aba6e5282becfe537768d.png

说明一下,这是单位的转换

ffb4129bba945bb3d82f55108a69cda4.png

独立来描述某一个变量

3edba281ff9608336ba00dda0170b444.png

现在来分析价格

32a40b719c160b8bad3e6d2e1fb01bb2.png

e4c7cbfd1a05dc8fb5f1160d5a79ebec.png

来简单说明一下代码的意思

2c9bf50204b8d9aa4a88aa18690db6d7.png

dea53dad08f03f82fc694b31f5effe53.png

分析app价格单变量分布

#value_counts(price,prime_genre)

#value_coutn只能对应series,不能对整个dataframe做操作,让数据可以罗列出来

第二对它列出来的价格以及对应的个数进行数据清洗

data.price.value_counts()

8fb73a896d88abbc1765939a73f52af5.png

app类型的判断

8e692d3fa3a99018f2ae1641ac49c82a.png

f26912c1ebb8312c804aa11fab887a87.png

作为分析的判断,一般根据题目进行二八原则,可以适当筛选量少的数据

在这里,我们可以删除价格大于49.99的app

data=data[data[‘price’]<=49.99]

,意思就是把小于49.99的app留下来,这个过程不可逆,你可以尝试一下就是把data改为data1

f0c07c16519ecbe1a9084f2ef1e21953.png

数据的快速分组 bins labels pd.cut(最后)

bins:分组的节点

bins=[0,2,10,300]

labels :方便分组的识别

labels=[’<2’,’<10’,’<300’]

right一般默认为true,也就是每个分组的时候,默认为小于等于

app[‘price_new’]=pd.cut(app.price,bins,right=False,labels=labels)

用group by去查看结果,([‘price_new’])[‘price’]价格分组对应的价格关系

一般语法

data.groupby([‘price_new’])[‘price’].describe()

bffebf863efe6eafd027d7f26d5cffec.png

再来一次groupby的语法说明

dd762d73332fbc70d68c749cddecab58.png

重点:以后为了防止找不到之前的数据,进行不可逆的操作的时候,务必注意可以在data改为data1,防止以前的文件不被彻底删除

单变量的分析第二部分是围绕用户评分进行

2f5d505409fba42cd868662e84f5b9c8.png

4217e4e58f0aeff422b31ee2750639ba.png

9768ef1fd0fdc79c5fc553b23b022ac8.png

cb628fe8504261c2e148e164fa924025.png

这是用户打分与价格的关系

ca004a19395aab387d11104b164fbbb7.png

可视化数据

如果需要详细解释下这些部分的要素,可以调整的部分(图的大小颜色等),也可以理解为定制化,就是matplotlib中的pyplot

import matplotlib.pyplot as plt

调整不大的,用matplotlib中的seaborn

import seaborn as sns

用处:生成一张图,在notebook中直接显示

%matplotlib inline

折线图

调用sns.relplot函数,kind是线的类型

sns.relplot(x=“prime_genre”,y=“user_rating”,kind=‘line’,data=data)

f7951169ce0de44d70655b602122d7dc.png

直方图

调用sns中的displot函数

sns.distplot(data[‘price’])

ee3bfa0ade62a0569201497242b8fce8.png

很明显在直方图中,你看到都是很拥挤的一组数据,现在进行筛选,让数据更清晰显示

cc31f391c57bf01e58757d2cfc64eee5.png

结论:

app价格在0-10之间,稳妥的价格是<4.99,大于此价格购买的人群很少

箱线图

25bac5415625126c55a83d11da4bb5a1.png

很明显,我们y轴上的类别很乱,现在通过figure放大一下

ea5e2e709ab97c36c305cb219c05f09b.png

散点图scatterplot

data的数据来源是data

e29d8176b8c01d8fd944202c8fb3aabc.png

柱状图

plt.figure(figsize=(10,8))

sns.barplot(x=‘prime_genre’,y=‘user_rating’,data=data)

9188e2f1c9549caac50923b448de3ece.png

保留五个,做个人

只保留五个类别的数据

top5=[‘Games’,‘Entertainment’,‘Education’,‘Photo&Video’,‘Utilities’]

data5=data[data.prime_genre.isin(top5)]

421df1ce4790fe36cc9e6b5eab3837ae.png

ab1f39cb9c992a5d85cc9803f5f32362.png

现在进行付费paid和免费的对比

7e6d2467b5d440569dc3fe288094d337.png

ef126f2ea1c4c458a714e28378114b40.png

对数据进行分析,解决业务问题

业务问题1

免费或收费APP集中在哪些类别

第一步:将数据加总成每个类别有多少个app

第二步:从高到低进行排列

第三步:对数据进行可视化

评分高或者评分低的app集中在那些类别

使用countplot–count是对数据加总,plot将数据进行可视化

sns.countplot(y=‘prime_genre’,data=data)

fb1a6f0f79231de133f516b98456b7db.png

拆分收费或者免费

加上hue=paid

3b67ca5051ebdfce80732ed97c1ae445.png

很明显,我们可以在图中看到,显得有点不专业,字体要放大(plt.tick_params(labelsize=20),tick_params类似指针。还要排序

plot里面插入order=data[‘prime_genre’].value_counts().index,就是针对prime_genre,进行统计value_counts,index进行排序

eba54a9791586606c64c467a4ef70090.png

结论:可以知道app都高度集中在游戏类别

免费和收费的app在不同评分区间的分布

c47243039ce2e4738adb081de9f59978.png

0-0.1是指刚上架的app,其它高中低分布

3b51cb482803b38fcf2ea20d4c40eb0d.png

sns.countplot(x=‘paid’,hue=‘rating_level’,data=data)

8db09e4184560fbdd46c5a7ff3e3cbce.png

左边是免费的,右边是付费,彼此还是比较接近的

问题3:APP的大小和用户评分的之间有关系吗

q4=[‘user_rating’,‘price’,‘size_mb’]

计算相关的关系

app[q4].corr

33ca457f1f020bd56827b49700770317.png

越接近-1,表示越不相关

越接近1,表示越相关

热力图(heatmap),展现变量之间两两相关关系的强弱

09085fcab52df7651f22eab21aa133c1.png

结论:越深色表示彼此的相关性越不强,越浅表示越相关

项目总结

29e4a51415c0ad4e591ad15b313cfc4f.png

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐