Seaborn+Plotly联手分析Apple Store
今天分享一篇kaggle的新文章:基于Seaborn+Plotly的AppleStore可视化探索,这是一篇完全基于统计+可视化的数据分析案例。
原notebook只用了seaborn库,很多图形小编用plotly进行了实现,原文章地址:https://www.kaggle.com/adityapatil673/visual-analysis-of-apps-on-applestore/notebook
导入库
1 | import pandas as pd |
数据基本信息
读取并且查看基本信息:
1 | # 1、整体大小 |
一般情况下,也会查看数据的描述统计信息(针对数值型的字段):
付费APP的可视化
免费的APP数量
1 | sum(data.price == 0) |
价格超过50的APP数量
价格大于50即表示为:超贵(原文:super expensive apps)
1 | sum(data.price >= 50) |
价格超过50的比例
1 | sum((data.price > 50) / len(data.price) * 100) |
1 |
|
离群数据
价格超过50的APP信息
1 | outlier = data[data.price > 50][['track_name','price','prime_genre','user_rating']] |
免费APP
选择免费APP的数据信息
正常区间的APP
取数
1 | paidapps = data[(data["price"] > 0) & (data.price < 50)] |
价格分布
1 | plt.style.use("fivethirtyeight") |
结论1
- 随着价格的上涨,付费应用的数量呈现指数级的下降
- 很少应用的价格超过30刀;因此,尽量保持价格在30以下
category对价格分布的影响
1 | data.columns # 数据字段 |
1 | Index(['id', 'track_name', 'size_bytes', 'currency', 'price', |
种类及数目
1 | data["prime_genre"].value_counts() |
1 | Games 3862 |
显示前5个种类
1 | # y轴范围 |
结论2
- Games游戏类的apps价格相对高且分布更广,直到25美元
- Entertainment娱乐类的apps价格相对较低
Paid apps Vs Free apps
付费APP和免费APP之间的比较
app种类
1 | # app的种类 |
1 | Games 3862 |
1 | len(categories) |
选择前4个
选择前4个,其他的APP全部标记为Other
1 | s = categories.index[:4] |
1 | def categ(x): |
统计免费和付费APP下的种类数
1 | # 免费 |
1 | Games 2257 |
将两个数据合并起来:
统计量对比
高亮显示最大值(个人增加)
结论3
从上面的高亮结果中,我们发现:
- Games相关的APP是最多的,不管是paid还是free
- 从付费占比来看,Education教育类型占比最大
- 从免费占比来看,Entertainment娱乐类型的占比最大
付费和免费的占比
生成数据
分组对比付费和免费的占比
1 | list_free = dist.free_per.tolist() |
1 | [29.13907284768212, |
1 | # 列表转成元组 |
1 | # 付费类型相同操作 |
柱状图
1 | plt.figure(figsize=(12,8)) |
饼图
1 | # 绘制饼图 |
1 | plt.figure(figsize=(15,8)) |
结论4
- 在教育类的APP中,付费paid的占比是很高的
- 相反的,在娱乐类的APP中,免费free的占比是很高的
付费APP真的足够好吗?
价格分类
1 | # 对价格处理 0-free >0则用paid |
小提琴图
1 | plt.figure(figsize=(15,8)) |
结论5(个人增加)
- 在Education类的APP中,paid的占比是明显高于free;其次是Photo & Video
- Entertainment娱乐的APP,free占比高于paid;且整体的占比分布更为宽
注意下面的代码中改变了split参数:
1 | plt.figure(figsize=(15,8)) |
size和price 关系
探索:是不是价格越高,size越大了?
1 | sns.color_palette("husl",8) |
使用Plotly实现(个人增加)
增加使用plotly实现方法
1 | px.scatter(paidapps_regression, |
APP分类:是否可根据paid和free来划分
5种类型占比
1 | # 1、设置颜色和大小 |
使用plotly如何实现:
1 | # Plotly如何实现 |
5种类型+是否付费
1 | f=pd.DataFrame(index=np.arange(0,10,2), |
1 | plt.figure(figsize=(20,20)) |
基于plotly的实现:
1 | # plotly如何实现 |