热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

大数据pandas综合案例1:应用商店Appstore数据分析

目录标题案例1:Appstore数据分析1.1背景和分析需求1.2数据加载和处理1.3App价格不同维度分析单变量分析1.4数据可视化分析1.5业务需求分析1.5.1


目录标题


      • 案例1 :Appstore数据分析
        • 1.1 背景和分析需求
        • 1.2 数据加载和处理
        • 1.3 App价格不同维度分析
          • 单变量分析

        • 1.4 数据可视化分析
        • 1.5 业务需求分析
          • 1.5.1 免费或收费App集中在哪些类别?
          • 1.5.2 免费或收费App在不同评分区间的分布?
          • 1.5.3 app价格、大小和用户评分之间的关系







案例1 :Appstore数据分析


1.1 背景和分析需求

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


1.2 数据加载和处理

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

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 &#61; [&#39;<2&#39;,&#39;<10&#39;,&#39;<30&#39;]
app[&#39;price_new&#39;] &#61; pd.cut(app[&#39;price&#39;],bins,right&#61;False, labels &#61; labels)
#right&#61;False将原本默认的左开右闭的区间改成左闭右开
#labels设置自己设置的标签
app.head()

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

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

在这里插入图片描述

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

在这里插入图片描述
删除列A不满足条件的行&#xff1a; data &#61; data[date[列A]要满足条件]

#删除价格高于49.99的app数据
app &#61; app[app[&#39;price&#39;]<49.99]
app.head()

#对app评分数量的统计信息
app.rating_count_tot.describe()
#对评分数据再划分一下组
bins &#61; [0,1000,5000,100000,5000000]
app[&#39;rating_new&#39;] &#61; pd.cut(app[&#39;rating_count_tot&#39;],bins,right&#61;False)
app.groupby(&#39;rating_new&#39;).price.describe()

在这里插入图片描述


1.4 数据可视化分析

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

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

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

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

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

plt.figure(figsize&#61;(20,8))
app_result &#61; app[app[&#39;price&#39;]<&#61;9.9]
sns.distplot(app_result[&#39;price&#39;])

在这里插入图片描述
结论&#xff1a;大多是免费的&#xff0c;0-3占了绝大多数

3&#xff09;查看不同类别的收费App的价格分布 --箱线图

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

在这里插入图片描述

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

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

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

plt.figure(figsize&#61;(20,8))
sns.scatterplot(x&#61;&#39;price&#39;,y&#61;&#39;user_rating&#39;,data&#61;app)

在这里插入图片描述

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

#前5类app的分类和评分的关系&#xff0c;区分收费和没收费
sns.barplot(x&#61;&#39;prime_genre&#39;,y&#61;&#39;user_rating&#39;,date&#61;app5)

在这里插入图片描述

#如何区分收费与不收费呢&#xff1f;
sns.barplot(x&#61;&#39;prime_genre&#39;,y&#61;&#39;user_rating&#39;,date&#61;app5,hue&#61;&#39;paid&#39;)#hub加颜色

在这里插入图片描述


1.5 业务需求分析


1.5.1 免费或收费App集中在哪些类别&#xff1f;

思路&#xff1a;统计类别有多少app&#xff0c;排序&#xff0c;可视化时通过颜色区分收费和免费的

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

在这里插入图片描述


1.5.2 免费或收费App在不同评分区间的分布&#xff1f;

思路&#xff1a;评分做区间分组&#xff0c;分组后看每组的评分数据

bins&#61; [0,0.5,2.5,4.5,5.1]
app[&#39;rating_level&#39;] &#61; pd.cut(app.user_rating,bins&#61;bins,right&#61;False)
app.head()
app.groupby(&#39;rating_level&#39;)[&#39;user_rating&#39;].describe()

在这里插入图片描述

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

在这里插入图片描述


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

思路&#xff1a;计算相关系数&#xff0c;热力图

app[[&#39;price&#39;,&#39;size_mb&#39;,&#39;user_rating&#39;]].corr()

在这里插入图片描述

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

在这里插入图片描述
结论&#xff1a;大小和价格之间有点相关性&#xff0c;其他的没有







推荐阅读
  • 开发笔记:共享单车数据分析
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了共享单车数据分析相关的知识,希望对你有一定的参考价值。共享单车数据分析和共享单车用户行为分析PPT从数据分 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 本文总结了使用不同方式生成 Dataframe 的方法,包括通过CSV文件、Excel文件、python dictionary、List of tuples和List of dictionary。同时介绍了一些注意事项,如使用绝对路径引入文件和安装xlrd包来读取Excel文件。 ... [详细]
  • 动量|收益率_基于MT策略的实战分析
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了基于MT策略的实战分析相关的知识,希望对你有一定的参考价值。基于MT策略的实战分析 ... [详细]
  • 基于词向量计算文本相似度1.测试数据:链接:https:pan.baidu.coms1fXJjcujAmAwTfsuTg2CbWA提取码:f4vx2.实验代码:imp ... [详细]
  • 如何在mysqlshell命令中执行sql命令行本文介绍MySQL8.0shell子模块Util的两个导入特性importTableimport_table(JS和python版本 ... [详细]
  • csv转为矩阵 python_Python可视化 | Seaborn5分钟入门(六)——heatmap热力图
    Seaborn是基于matplotlib的Python可视化库。它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API ... [详细]
  • python机器学习之数据探索
    🐱今天我们来讲解数据建模之前需要处理的工作,也就是数据探索的过程,很多同学会说,不就是处理缺失值,异常值&# ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 前言:拿到一个案例,去分析:它该是做分类还是做回归,哪部分该做分类,哪部分该做回归,哪部分该做优化,它们的目标值分别是什么。再挑影响因素,哪些和分类有关的影响因素,哪些和回归有关的 ... [详细]
author-avatar
阆中猫猫覀_648
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有