黑马程序B站学习笔记之数据分析
目录
黑马程序B站学习笔记之数据分析
导包
一、数据加载(Category是data数据集中的一列)
二、数据处理、清洗
三、数据分析和可视化
四、得出结论
导包
Import numpy as np
Import pandas as pd
Import matplotlib.pyplot as plt
Import seaborn as sns
一、数据加载(Category是data数据集中的一列)
- 读取数据 data = pd.read_csv(‘文件’,encoding=”编码”)
- 查看数据的前五条,data.head() 、 全部数据,data、 几行几列,data.shape()
- 筛选 data[筛选条件] 例:data[data[‘price’]>0]
- 查看该列有多少种类 例:data[“Category”].unique() 种类数量.nunique()
二、数据处理、清洗
因为你拿到的数据并不是标标准准的,记录错误,格式错误,缺少错误,所以需要先去规范所需数据,去处理。
数据筛选查看,发现Category是1.9,是异常列
1、对于异常错误数据,定位,并向后移数据,最后重新赋值覆盖给该行
data[data[‘Category’]==’1.9’].loc[10472,”Cate”:]
data[data[‘Category’]==’1.9’].loc[10472,”Cate”:].shift()
data.loc[10472,”Category”] = data[data[‘Category’]==’1.9’].loc[10472,”Cate”:].shift()
2、删除重复的行,最后重新覆盖数据
查看重复行 data.duplicated() True有重复行
查看重复行总数 data.duplicated().sum()
删除重复行 data.drop_duplicated()
覆盖数据 data = data.drop_duplicated()
3、转换纯数字字符串为数值类型
查看数据集每列类型 data.dtypes ,都是object 说明类型都是字符串
转换成数组类型 pd.to_numeric(data[‘Rating’])
还是要进行赋值覆盖 data[‘Rating’] = pd.to_numeric(data[‘Rating’])
data[ 'Reviews'] == pd. to_ numeric (data[ 'Reviews'] )
4、转换有非数字的字符串为数值类型
①Installs中存在,+两个字符
先把特殊字符替换掉 {正则表达式 \d[0-9] \D[^0-9]}
data[‘Installs’] = data[‘Installs’].str.replace(‘\D’,’’).astype(float)
②Price中存在$
data[‘Price’] = data[‘Price’].str.replace(‘$’,’’).astype(float)
5、转换数据不一致,单位不一样。有纯字符串,还有K、M单位
转换纯字符串的为缺失值 Data[‘Size’] = data[‘Size’].replace(‘Varies with device’,np.nan)
统一转换成单位小的
①提取出来数值,对字符串进行操作
Size_num = data[‘Size’].str.extract(r‘([\d\.]+)’,expand=False).astype(float)
②提取出来单位
Size_unit = data[‘Size’].str.extract(r’([kM]+)’,expand=False).fillna(1).replace([‘k’,’M’],[1,1024])
③数值*单位 统一数据
Data[‘Size’] = size_num * size_unit
三、数据分析和可视化
1、统计每个类别中 app 的数量,数据透视表 -- 数据汇总,分析类别与数量的关系
category_counts=Data.pivot_table(index=’Category’, value=’App’, aggfunc=’count’)
排序 category_counts.sort_values(by=’App’,ascending=False) 根据App数量倒叙排列
调整画布 plt.figure(figsize=(10,10))
Sns中计数函数Sns.countplot(y=’Category’, data=data)
2、计算每一类 app 的平均安装次数
Data.pivot_table(index=’Category’, values=’Installs’, aggfunc=’mean’).sort_values(by=’Installs’)
3、分析评分与安装之间的关系
调整画布:plt.figure(figsize=(10,10))
散点图:Plt.scatter(x=data[‘Rating’],y=data[‘installs’], color=’blue’)
折线图:Sns.lineplot(x=’Rating’,y=’Installs’,data=data,color=’red’)
对数处理:Plt.yscale(‘log’)
4、分析评论数与Installs之间的关系
Plt.figure(figsize=(10,10))
Sns.lineplot(x=’Reviews’, y=’Installs’,data=data)
Plt.yscale(‘log’)
Plt.xscale(‘log’)
5、线性回归
Sns.lmplot(x=’Reviews’, y=’Installs’,data=data)
Plt.yscale(‘log’)
Plt.xscale(‘log’)
6、分析收费情况Type和价钱Price 与 Installs 之间的关系
#Type 有两种类型 Paid、Free
#安装量 大于10W 的app数量 和 安装量小于10w 的各是多少?
data[‘Installs-10w’]=Data[‘Installs’].map(lambda x: ‘大于等于10w’ if x > 1e5 else ‘小于10w’)
Sns.countplot(x=’Type’,hue=’Installs-10w’,data=data) hue为额外的排列
7、分析付费数据
Sns.lineplot(x=’Price’,y=’Installs’,data=data)
重点看一下Price【0-10】的数据
G=Sns.lineplot(x=’Price’,y=’Installs’,data=data)
G.set(xlim=(0,10))
四、得出结论
3.3结论——
在1.5-4.7之间,分数越高,安装量就越高
如 app 的评分单纯很高,但是安装量很少。因为安装人数少,但评分很高。
3.4结论——
App评论数越多,下载量越多
3.7结论——
价格越高,安装量越低。
如果app需要设置为付费下载,定的价格不能太高,最好在1美元以下
总结论:
- 评分在2.7-4.7 之间
- 评论量多
- 如果收费,费用不要太高,最好不超过1美元