数据分析实战项目1:应用商店Appstore数据分析
Posted 海星?海欣!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据分析实战项目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())
结论:大小和价格之间有点相关性,其他的没有
以上是关于数据分析实战项目1:应用商店Appstore数据分析的主要内容,如果未能解决你的问题,请参考以下文章