Pandas数据分析实战01——Abalone Data Set(鲍鱼数据集)

> 打算从基础开始学习数据分析,给自己一个整理内容和学习消化的时间,所以,这也将成为我的学习笔记。

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>

输出结果如下图:

Pandas数据分析实战01——Abalone Data Set(鲍鱼数据集)

3.2 鲍鱼三个属性之间的关系可视化:

<code>sns.scatterplot(data=data,x='Length',y='Weight',hue='Gender',s=300) 
plt.legend(loc='upper left')/<code>

输出结果如图:一般很难读懂按这种方式可视化的多种特征的关系信息,下一次,会有更好地方式,值得期待。

Pandas数据分析实战01——Abalone Data Set(鲍鱼数据集)


4. 数据分析

鲍鱼的体重与它们有多少个环有关吗?

==划重点== 开始分析之前,先把数据清洗一下:

<code>data.describe()/<code>

运行之后,是这酱紫的......

Pandas数据分析实战01——Abalone Data Set(鲍鱼数据集)

我们囧囧有神.....哦不.....是炯炯有神的两只“照妖镜”发现一只千年鲍鱼精,呔!妖精,哪里逃,快还我真实数据~

于是,便有了下面一场"恶战"(其实也就一行代码,看来这只鲍鱼精道行不够).........

<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>

输出结果如下图:从散点图中可以看出,鲍鱼的环和体重不存在明显的相关关系。

Pandas数据分析实战01——Abalone Data Set(鲍鱼数据集)

==解决方案2==

<code>data.corr()        # 对数据集进行相关性分析/<code>

输出结果如下:可见鲍鱼的weight和rings并没有很强的关联。

Pandas数据分析实战01——Abalone Data Set(鲍鱼数据集)

==解决方案3==

<code>data_mean=data.groupby('Rings').mean()     # 求所有鲍鱼的环的平均值
plt.plot(data_mean['Weight']) # 绘制折线图/<code>

输出结果如下:

Pandas数据分析实战01——Abalone Data Set(鲍鱼数据集)

奉上一张思维导图

Pandas数据分析实战01——Abalone Data Set(鲍鱼数据集)

> 这篇笔记一定还有很多不完善的地方,希望朋友们多多提出不足,大家一起交流,期待!

> 下一次的笔记:把所有数据分析可能用到的模块函数进行总结。


分享到:


相關文章: