打算从基础开始学习数据分析,给自己一个整理内容和学习消化的时间,所以,这也将成为我的学习笔记。
原始数据集包括六个属性:Gender,Length,Diameter,Height,Weight,Rings:
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.1 鲍鱼任意两个属性之间的关系可视化:
交叉表与热图结合(个人觉得是数据分析界的炸鸡和啤酒)
热图的色彩变化丰富多样、信息表达生动饱满,搭配交叉表的使用,是一种非常不错的可视化手段,被用于各种大数据分析场景,我在这里尝试一下:
import seaborn as sns # 导入seaborn绘图模块
tab = pd.crosstab(data['Height'],data['Gender']) # 做Height列和Gender列的交叉表
sns.heatmap(tab) # 对交叉表进行热图呈现
sns.scatterplot(data=data,x='Length',y='Weight',hue='Gender',s=300)
plt.legend(loc='upper left')
输出结果如图:一般很难读懂按这种方式可视化的多种特征的关系信息,下一次,会有更好地方式,值得期待。
? 鲍鱼的体重与它们有多少个环有关吗?
划重点 开始分析之前,先把数据清洗一下:
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()
输出结果如下图:从散点图中可以看出,鲍鱼的环和体重不存在明显的相关关系。
解决方案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']) # 绘制折线图
这篇笔记一定还有很多不完善的地方,希望朋友们多多提出不足,大家一起交流,期待!
下一次的笔记:
- 把所有数据分析可能用到的模块函数进行总结