写点什么

Pandas 数据清理

作者:3D建模设计
  • 2023-09-13
    湖北
  • 本文字数:1964 字

    阅读完需:约 6 分钟

Pandas数据清理

推荐:使用 NSDT 场景编辑器快速搭建 3D 应用场景介绍如果您喜欢数据科学,那么数据清理对您来说可能听起来像是一个熟悉的术语。如果没有,让我向你解释一下。我们的数据通常来自多个资源,并不干净。它可能包含缺失值、重复项、错误或不需要的格式等。对这些混乱的数据运行实验会导致不正确的结果。因此,有必要在将数据馈送到模型之前准备数据。通过识别和解决潜在的错误、不准确和不一致来准备数据称为数据清理。


在本教程中,我将引导您完成使用 Pandas 清理数据的过程。


数据我将使用著名的鸢尾花数据集。鸢尾花数据集包含三种鸢尾花的四个特征的测量值:萼片长度、萼片宽度、花瓣长度和花瓣宽度。我们将使用以下库:


pandas: 用于数据操作和分析的强大库 Scikit-learn: 提供用于数据预处理和机器学习的工具数据清理步骤


  1. 加载数据集使用 Pandas 的 read_csv() 函数加载鸢尾花数据集:


column_names = ['id', 'sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species']iris_data = pd.read_csv('data/Iris.csv', names= column_names, header=0)iris_data.head()输出:


编号 sepal_length sepal_width petal_length petal_width 物种 1 5.1 3.5 1.4 0.2 鸢尾花 2 4.9 3.0 1.4 0.2 鸢尾花 3 4.7 3.2 1.3 0.2 鸢尾花 4 4.6 3.1 1.5 0.2 鸢尾花 5 5.0 3.6 1.4 0.2 鸢尾花 header=0 参数指示 CSV 文件的第一行包含列名(标题)。


  1. 浏览数据集为了深入了解我们的数据集,我们将使用 pandas 中的内置函数打印一些基本信息


print(iris_data.info())print(iris_data.describe())输出:


RangeIndex: 150 entries, 0 to 149Data columns (total 6 columns):

Column Non-Null Count Dtype



0 id 150 non-null int64


1 sepal_length 150 non-null float642 sepal_width 150 non-null float643 petal_length 150 non-null float644 petal_width 150 non-null float645 species 150 non-null objectdtypes: float64(4), int64(1), object(1)memory usage: 7.2+ KBNone 熊猫数据清理


iris_data.describe() 的输出


info() 函数可用于了解数据帧的整体结构、每列中非空值的数量以及内存使用情况。而汇总统计数据则提供了数据集中数值要素的概述。


  1. 检查类分布这是了解类如何在分类列中分布的重要步骤,这是分类的重要任务。您可以使用 pandas 中的 value_counts() 函数执行此步骤。


print(iris_data['species'].value_counts())输出:


Iris-setosa 50Iris-versicolor 50Iris-virginica 50Name: species, dtype: int64 我们的结果表明,数据集是平衡的,每个物种的表示数量相等。这为所有 3 个班级的公平评估和比较奠定了基础。


  1. 删除缺失值由于从 info() 方法中可以明显看出我们有 5 列没有缺失值,因此我们将跳过此步骤。但是,如果遇到任何缺失值,请使用以下命令来处理它们:


iris_data.dropna(inplace=True)5. 删除重复项重复项可能会扭曲我们的分析,因此我们会将它们从数据集中删除。我们将首先使用下面提到的命令检查它们的存在:


duplicate_rows = iris_data.duplicated()print("Number of duplicate rows:", duplicate_rows.sum())输出:


Number of duplicate rows: 0 此数据集没有任何重复项。尽管如此,可以通过 drop_duplicates() 函数删除重复项。


iris_data.drop_duplicates(inplace=True)6. 独热编码对于分类分析,我们将对物种列执行独热编码。执行此步骤是由于机器学习算法倾向于更好地处理数值数据。独热编码过程将分类变量转换为二进制(0 或 1)格式。


encoded_species = pd.get_dummies(iris_data['species'], prefix='species', drop_first=False).astype('int')iris_data = pd.concat([iris_data, encoded_species], axis=1)iris_data.drop(columns=['species'], inplace=True)熊猫数据清理


图片来源:作者


  1. 浮点值列的规范化归一化是将数值特征缩放为平均值为 0 且标准差为 1 的过程。执行此过程是为了确保要素对分析的贡献相同。我们将规范化浮点值列以实现一致的缩放。


from sklearn.preprocessing import StandardScaler


scaler = StandardScaler()cols_to_normalize = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']scaled_data = scaler.fit(iris_data[cols_to_normalize])iris_data[cols_to_normalize] = scaler.transform(iris_data[cols_to_normalize])熊猫数据清理


规范化后 iris_data.describe() 的输出


  1. 保存已清理的数据集将清理后的数据集保存到新的 CSV 文件。


iris_data.to_csv('cleaned_iris.csv', index=False)总结祝贺!您已成功使用 pandas 清理了第一个数据集。在处理复杂数据集时,您可能会遇到其他挑战。但是,此处提到的基本技术将帮助您入门并准备数据以进行分析。


原文链接:Pandas数据清理 (mvrlink.com)

发布于: 刚刚阅读数: 5
用户头像

还未添加个人签名 2023-04-14 加入

还未添加个人简介

评论

发布
暂无评论
Pandas数据清理_数据分析_3D建模设计_InfoQ写作社区