以kaggle泰坦尼克数据集为例,列举数据集观测的几种手段
发布于 作者:苏南大叔 来源:程序如此灵动~
继续机器学习的泰塔尼克数据集文章,本文以kaggle竞赛的泰坦尼克数据集为标的物。当然,这个kaggle数据集和其它版本的泰坦尼克数据集也没有太大分别。只不过,kaggle的版本是已经固定切分好的,不用再对数据集进行训练集和测试集的切分。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码经验文章。本文测试环境:python@3.12.3。本文中,泰坦尼克数据集使用的是kaggle竞赛的版本。
下载数据集
kaggle的泰塔尼克数据集,下载地址:
下载kaggle的数据集可能需要科学上网,所以也可以考虑从gitee或者github上搜索获得对应的数据集合。
获得数据集文件,把传统的泰塔尼克数据集分为三个文件,分别是训练集train.csv(12字段)和测试集test.csv(11字段,差一个Survived字段),以及预测结果的范例(仅仅是范例)gender_submission.csv(2字段)。

至于每个字段的含义,可以参考官方页面,或者下面这篇文章。
加载数据
先加载到训练集和测试集,同时将数据合并还原一下,参考代码:
import pandas as pd
train_df = pd.read_csv("kaggle\\train.csv")
test_df = pd.read_csv("kaggle\\test.csv")
train_df2 = train_df.copy()
test_df2 = test_df.copy()
train_df2["source"] = "train" # 用于合并后再区分出来
test_df2["source"] = "test"
all_df = pd.concat([train_df2, test_df2]) # 部分的Survived字段数据缺失
all_df_duplicated = pd.concat([train_df2, test_df2, test_df2]) # 后续有用参考文章:
查看shape(行数列数)
查看dataframe的数据的shape,就可以得知条目数.shape[0]和字段数.shape[1]。
print("训练集的形状:" + str(train_df.shape))
print(f"训练集,条目数:{train_df.shape[0]}")
print(f"训练集,字段数:{train_df.shape[1]}")参考文章:

查看所有数据
print(test_df)默认情况下,任何对dataframe的数据查看任务,都不会显示完整数据,而是部分内容采用...代替。所以,这里需要进行一下设置,以显示所有的数据,便于查看。
pd.set_option("display.max_rows", None) # 数据行
pd.set_option("display.max_columns", None) # 数据列
参考文章:
查看头尾数据
可以使用.head()查看头几条数据或者使用.tail()查看后几条数据。当然,这里也受上一条设置的影响。
print(all_df.head())
print(all_df_duplicated.tail())
分组计数
侧重于统计:
print(all_df["source"].value_counts())
侧重于查看:
def view_group(_group):
for name, group in _group:
print(f"group name: {name}")
print(group)
print("\n")
view_group(all_df.groupby("Sex"))参考文章:
推断缺失值情况
从下面的截图可以推断:也就这个.info()用途似乎更大一些。
print(all_df.info())
print(all_df.describe())
print(all_df.count())
参考文章:
- https://newsn.net/say/dataframe-info.html
- https://newsn.net/say/dataframe-describe.html
- https://newsn.net/say/dataframe-count.html
查看重复数据
print(all_df_duplicated.nunique())
print(all_df_duplicated.duplicated())
泰坦尼克号的数据集,没有重复数据。所以,这里制造了一个重复数据all_df_duplicated,用于测试。
print(all_df_duplicated.duplicated.sum())对重复数据.drop后,就可以拿到不重复数据了。参考文章:
all_df_duplicated = all_df_duplicated.drop_duplicates()
print(all_df_duplicated.duplicated().sum())
结束语
本文以总结观测手段为主要目的,所以文章比较简单。由于.csv数据文件在python里面表现为dataframe。所以,文章的实质就是对dataframe数据观察手段的总结。并不是需要使用到本文的所有手段,某个方案只要好用能说明问题就行。