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

Pandas数据分析实战01

    • 1. 数据描述
    • 2. 数据读取
    • 3. 数据呈现
    • 4. 数据分析

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

1. 数据描述

原始数据集包括六个属性:Gender,Length,Diameter,Height,Weight,Rings:

  1. Gender :M (male), F (female), I (infant)
  2. Length:最长外壳尺寸(毫米)
  3. Diameter:垂直于长度的直径(毫米)
  4. Height:带壳肉的高度(毫米)
  5. Weight:整只鲍鱼的重量(克)
  6. Rings:确定鲍鱼的实际年龄,有点像估计一棵树的年龄。 随着鲍鱼的生长,在鲍鱼壳中形成环,通常以每年一环的速度形成。

2. 数据读取

2.1 导入库

import pandas as pd

2.2 读取文件

data = pd.read_csv("abalone.csv")

2.3 查看数据表信息

先来一波儿基础操作,热热身~

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']            # 输出高度列的平均值

什么(O_o)?? 没难度?那是因为我不想让你掉头发!

# 提取 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()

3. 数据呈现

3.1 鲍鱼任意两个属性之间的关系可视化:
交叉表与热图结合(个人觉得是数据分析界的炸鸡和啤酒)
热图的色彩变化丰富多样、信息表达生动饱满,搭配交叉表的使用,是一种非常不错的可视化手段,被用于各种大数据分析场景,我在这里尝试一下:

import seaborn as sns                                # 导入seaborn绘图模块
tab = pd.crosstab(data['Height'],data['Gender'])     # 做Height列和Gender列的交叉表
sns.heatmap(tab)                                     # 对交叉表进行热图呈现

输出结果如下图:
Pandas数据分析实战01--Abalone Data Set(鲍鱼数据集)_第1张图片
3.2 鲍鱼三个属性之间的关系可视化:

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

输出结果如图:一般很难读懂按这种方式可视化的多种特征的关系信息,下一次,会有更好地方式,值得期待。
Pandas数据分析实战01--Abalone Data Set(鲍鱼数据集)_第2张图片

4. 数据分析

鲍鱼的体重与它们有多少个环有关吗?
划重点 开始分析之前,先把数据清洗一下:

data.describe()

运行之后,是这酱紫的…

Length Diameter Height Weight Rings
count 1000.000000 1000.000000 1000.000000 1000.000000 1000.000000
mean 0.522760 0.405955 0.141100 0.825540 11.318000
std 0.120064 0.098832 0.057064 0.490380 47.227697
min 0.075000 0.055000 0.000000 0.002000 1.000000
25% 0.450000 0.345000 0.115000 0.438875 8.000000
50% 0.545000 0.420000 0.145000 0.801000 9.000000
75% 0.615000 0.480000 0.165000 1.146250 11.000000
max 0.815000 0.650000 1.130000 2.555000 1500.000000


我们囧囧有神…哦不…是炯炯有神的两只“照妖镜”发现一只千年鲍鱼精,呔!妖精,哪里逃,快还我真实数据~
于是,便有了下面一场"恶战"(其实也就一行代码,看来这只鲍鱼精道行不够)…
.

data.loc[data.Rings==1500,'Rings']=15

言归正传,数据集中难免存在数据错误,根据数据集中的其他相关数据,我将其修正为了15.
回到问题:鲍鱼的体重和环之间是否存在联系?
解决方案1

import matplotlib.pyplot as plt
plt.scatter(data['Rings'],data['Weight'])
plt.show()

输出结果如下图:从散点图中可以看出,鲍鱼的环和体重不存在明显的相关关系。
Pandas数据分析实战01--Abalone Data Set(鲍鱼数据集)_第3张图片
解决方案2

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

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

Length Diameter Height Weight Rings
Length 1.000000 0.987479 0.598616 0.920861 0.555995
Diameter 0.987479 1.000000 0.602035 0.923661 0.575281
Height 0.598616 0.602035 1.000000 0.585369 0.388355
Weight 0.920861 0.923661 0.585369 1.000000 0.532438
Rings 0.555995 0.575281 0.388355 0.532438 1.000000

解决方案3

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

输出结果如下:
Pandas数据分析实战01--Abalone Data Set(鲍鱼数据集)_第4张图片
奉上一张思维导图
Pandas数据分析实战01--Abalone Data Set(鲍鱼数据集)_第5张图片

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

  • 把所有数据分析可能用到的模块函数进行总结

你可能感兴趣的:(可视化,数据分析,大数据,数据挖掘,python)