数据分析实战项目1:应用商店Appstore数据分析

案例1 :Appstore数据分析

1.1 背景和分析需求

苹果商店的数据
分析背景:对App下载和评分数据分析,帮助App开发者获取和留存用户
分析需求
免费和收费的App都集中在哪些类别
收费App的价格分布?不同类别的价格分布?
App文件的大小和价格,评分之间是否有关
分析流程:—框架套
1,看数据概况(行列数据,缺失值)
2,单变量分析(数值型-平均值、最小最大、标准差,类别型-多少类别、占比)
3,多变量分析(类别交叉分析,变量之间的相关性分析)
4,可视化分析(分布趋势-直方图,不同组差异-柱状图,相关性-散点图、热力图)

1.2 数据加载和处理

数据加载-数据查看-数据规范化处理(新增列,删除列,换单位)
applestore数据-密码jirj

app = pd.read_csv("./data/applestore.csv",index_col=0) #已经有序号列了,所有index_col=0不用再添加
app.head()
app.shape #(7197,10)
app.describe() #每列的最大值最小值,计数,均值
app.info()# 每列类型和空缺值

在这里插入图片描述
在这里插入图片描述
了解数据后,下面对数据的规范化处理

#对size_bytes列,单位换成mb,兆
app['size_bytes']/(1024*1024)
app.head()
app['size_bytes'].describe()
#增加一列,说明该app是否是免费的,根据价格列
app['paid'] = app['price'].apply(lambda x: 1 if x>0 else 0)
app.head()
1.3 App价格不同维度分析
单变量分析

value_count()函数:对列中不同种类进行计数

#查看spp价格整体分布
app.price.value_count() #计数一下

在这里插入图片描述
pd.cut(根据分组列,分组临界值,labels标签列)

#安装价格将APP数据进行分组
bins = [0,2,10,30] #左开右闭
labels = ['<2','<10','<30']
app['price_new'] = pd.cut(app['price'],bins,right=False, labels = labels)  
#right=False将原本默认的左开右闭的区间改成左闭右开
#labels设置自己设置的标签
app.head()

在这里插入图片描述
groupby(‘列A’).列B.describe()

#按区间查看app的价格分布
app.groupby('price_new').price.describe() #按照price_new分组后,再查看价格列的统计数值

在这里插入图片描述

#不同类别app价格是如何分布的
app.groupby('prime_genre').price.describe()

在这里插入图片描述
删除列A不满足条件的行: data = data[date[列A]要满足条件]

#删除价格高于49.99的app数据
app = app[app['price']<49.99]
app.head()
#对app评分数量的统计信息
app.rating_count_tot.describe()
#对评分数据再划分一下组
bins = [0,1000,5000,100000,5000000]
app['rating_new'] = pd.cut(app['rating_count_tot'],bins,right=False)

app.groupby('rating_new').price.describe()

在这里插入图片描述

1.4 数据可视化分析

1)查看app的类别和用户评分之间的关系-折线图

import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
sns.replot(x='prime_genre',y='user_rating',kind='line',data=app,height=5,aspect=3)
#height=5,aspect=3是高,宽高比

问题:x轴的值全部挤在了一起
在这里插入图片描述
将x轴的项旋转一下

sns.replot(x='prime_genre',y='user_rating',kind='line',data=app,height=5,aspect=3)
plt.xticks(rotation=45,horizontalalignment='right',fontweight='light',fontsize='x-large')
#rotation=45旋转45度

在这里插入图片描述
评分大多分布在2-4分之间
2)查看价格小于9.9元的app价格分布 --柱状图

plt.figure(figsize=(20,8))
app_result = app[app['price']<=9.9]
sns.distplot(app_result['price'])

在这里插入图片描述
结论:大多是免费的,0-3占了绝大多数

3)查看不同类别的收费App的价格分布 --箱线图

plt.figure(figsize=(20,8))
sns.boxplot(x='price',y='prime_genre',data=app[app['paid']==1]) #数据筛选出收费的
plt.yticks(fontweight='light',fontsize='x-large')#设置y轴的字体和大小

在这里插入图片描述

4)查看数量最多的前五个类别收费App的价格分布

#筛选出数量最多的前五个类别的app数据
top5 = app.groupby('prime_genre')['price'].count().sort_values(ascending=False).head()
#箱线图
plt.figure(figsize=(20,8))
sns.boxplot(x='price',y='prime_genre',data=app5[app5['paid']==1])

在这里插入图片描述
5)查看app数据中价格和用户评分的关系,绘制散点图

plt.figure(figsize=(20,8))
sns.scatterplot(x='price',y='user_rating',data=app)

在这里插入图片描述

结论:从散点图可以看出,价格和评价关联不强,高价的应用评价两极分化,但数据相对较少

#前5类app的分类和评分的关系,区分收费和没收费
sns.barplot(x='prime_genre',y='user_rating',date=app5)

在这里插入图片描述

#如何区分收费与不收费呢?
sns.barplot(x='prime_genre',y='user_rating',date=app5,hue='paid')#hub加颜色

在这里插入图片描述

1.5 业务需求分析
1.5.1 免费或收费App集中在哪些类别?

思路:统计类别有多少app,排序,可视化时通过颜色区分收费和免费的

plt.figure(figsize=(20,8))
sns.countplot(y='prime_genre',data=app,hue='paid',order=app['prime_genre'].value_count().index)
#hue颜色区分,order按数量排序
#app['prime_genre'].value_count().index指按类别分组排序计数的名称

在这里插入图片描述

1.5.2 免费或收费App在不同评分区间的分布?

思路:评分做区间分组,分组后看每组的评分数据

bins= [0,0.5,2.5,4.5,5.1]
app['rating_level'] = pd.cut(app.user_rating,bins=bins,right=False)
app.head()

app.groupby('rating_level')['user_rating'].describe()

在这里插入图片描述

plt.figure(figsize=(20,8))
sns.countplot(x='paid',data=app,hue='rating_level')#不同评分区间内的付费or免费app的数量图

在这里插入图片描述

1.5.3 app价格、大小和用户评分之间的关系

思路:计算相关系数,热力图

app[['price','size_mb','user_rating']].corr()

在这里插入图片描述

#热力图
sns.heatmap(app[['price','size_mb','user_rating']].corr())

在这里插入图片描述
结论:大小和价格之间有点相关性,其他的没有

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值