> 打算从基础开始学习数据分析,给自己一个整理内容和学习消化的时间,所以,这也将成为我的学习笔记。
1. 数据描述
原始数据集包括六个属性:Gender,Length,Diameter,Height,Weight,Rings:
- Gender :M (male), F (female), I (infant)
- Length:最长外壳尺寸(毫米)
- Diameter:垂直于长度的直径(毫米)
- Height:带壳肉的高度(毫米)
- Weight:整只鲍鱼的重量(克)
- Rings:确定鲍鱼的实际年龄,有点像估计一棵树的年龄。 随着鲍鱼的生长,在鲍鱼壳中形成环,通常以每年一环的速度形成。
2. 数据读取
2.1 导入库
<code>import pandas as pd/<code>
2.2 读取文件
<code>data = pd.read_csv("abalone.csv")/<code>
2.3 查看数据表信息
先来一波儿基础操作,热热身~
<code>data.columns # 查看数据列名
data.shape # 查看数据框中有多少个观测值
data.head(4) # 打印数据的前四行
data.head(4)['Rings'] # 打印前四行中Rings的值
data.tail(3) # 提取数据集的最后三行
data.tail(3)['Weight'] # 输出最后三行鲍鱼的重量
data.loc[577]['Diameter'] # 输出第577行的直径值
data.mean()['Height'] # 输出高度列的平均值/<code>
什么(O_o)?? 没难度?那是因为我不想掉头发!
<code># 提取 gender 为M并且 weight 值低于0.75的数据框的行子集
subset=data[(data['Gender']=='M') & (data['Weight']<0.75)]
# 输出此子集中 diameter 的平均值
subset.mean()['Diameter']
# 输出年龄等于18的鲍鱼的最小长度
data.loc[data["Rings"]==18,"Length"].min()/<code>
3. 数据呈现
3.1 鲍鱼任意两个属性之间的关系可视化:
==交叉表与热图结合==(个人觉得是数据分析界的炸鸡和啤酒)
热图的色彩变化丰富多样、信息表达生动饱满,搭配交叉表的使用,是一种非常不错的可视化手段,被用于各种大数据分析场景,我在这里尝试一下:
<code>import seaborn as sns # 导入seaborn绘图模块
tab = pd.crosstab(data['Height'],data['Gender']) # 做Height列和Gender列的交叉表
sns.heatmap(tab) # 对交叉表进行热图呈现/<code>
输出结果如下图:
3.2 鲍鱼三个属性之间的关系可视化:
<code>sns.scatterplot(data=data,x='Length',y='Weight',hue='Gender',s=300)
plt.legend(loc='upper left')/<code>
输出结果如图:一般很难读懂按这种方式可视化的多种特征的关系信息,下一次,会有更好地方式,值得期待。
4. 数据分析
鲍鱼的体重与它们有多少个环有关吗?
==划重点== 开始分析之前,先把数据清洗一下:
<code>data.describe()/<code>
运行之后,是这酱紫的......
我们囧囧有神.....哦不.....是炯炯有神的两只“照妖镜”发现一只千年鲍鱼精,呔!妖精,哪里逃,快还我真实数据~
于是,便有了下面一场"恶战"(其实也就一行代码,看来这只鲍鱼精道行不够).........
<code>data.loc[data.Rings==1500,'Rings']=15/<code>
言归正传,数据集中难免存在数据错误,根据数据集中的其他相关数据,我将其修正为了15。
回到问题:鲍鱼的体重和环之间是否存在联系?
==解决方案1==
<code>import matplotlib.pyplot as plt
plt.scatter(data['Rings'],data['Weight'])
plt.show()/<code>
输出结果如下图:从散点图中可以看出,鲍鱼的环和体重不存在明显的相关关系。
==解决方案2==
<code>data.corr() # 对数据集进行相关性分析/<code>
输出结果如下:可见鲍鱼的weight和rings并没有很强的关联。
==解决方案3==
<code>data_mean=data.groupby('Rings').mean() # 求所有鲍鱼的环的平均值
plt.plot(data_mean['Weight']) # 绘制折线图/<code>
输出结果如下:
奉上一张思维导图
> 这篇笔记一定还有很多不完善的地方,希望朋友们多多提出不足,大家一起交流,期待!
> 下一次的笔记:把所有数据分析可能用到的模块函数进行总结。
閱讀更多 雅痞紳士JM 的文章