文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

八步学会使用Pandas进行数据清洗

2024-11-30 07:24

关注

在本教程中将向你介绍使用Pandas进行数据清洗的过程。

数据集

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

数据清洗步骤

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

输出:

id

sepal_length

sepal_width

petal_length

petal_width

species

1

1

5

4

0.2

Iris-setosa

2

9

0

4

0.2

Iris-setosa

3

7

2

3

0.2

Iris-setosa

4

6

1

5

0.2

Iris-setosa

5

0

6

4

0.2

Iris-setosa

参数header=0表示CSV文件的第一行包含列名()。

2. 探索数据集

为了深入了解数据集的基本信息,本文将使用pandas的内置函数打印一些基本信息:

print(iris_data.info())
print(iris_data.describe())

输出:

RangeIndex: 150 entries, 0 to 149
Data columns (total 6 columns):
 #   列名           非空计数         类型  
---  ------        --------------  -----  
 0   id            150 non-null    int64  
 1   sepal_length  150 non-null    float64
 2   sepal_width   150 non-null    float64
 3   petal_length  150 non-null    float64
 4   petal_width   150 non-null    float64
 5   species       150 non-null    object 
dtypes: float64(4), int64(1), object(1)
memory usage: 7.2+ KB
None

iris_data.describe()的输出结果

info()函数有助于了解数据帧的整体结构、每列中非空值的数量以及内存使用情况。而汇总统计信息则提供了数据集中数值特征的概览。

3. 检查类别分布

这是了解分类列中类别分布情况的重要步骤,对于分类任务来说非常重要。可以使用Pandas中的value_counts()函数来执行此步骤。

print(iris_data['species'].value_counts())

输出:

Iris-setosa        50
Iris-versicolor    50
Iris-virginica     50
Name: species, dtype: int64

输出的结果显示,数据集是平衡的,每个品种的代表数量相等。这为所有3个类别进行公平评估和比较奠定了基础。

4. 删除缺失值

由于从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)

图片

7. 浮点数列的归一化

归一化是将数值特征缩放为均值为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()输出结果

8. 保存清洗后的数据集

将清洗后的数据集保存到新的CSV文件中。

iris_data.to_csv('cleaned_iris.csv', index=False)

总结

恭喜!你已成功使用Pandas清洗了第一个数据集。在处理复杂数据集时,你可能会遇到其他挑战。然而,本文介绍的基本技术将帮助你入门,并为开始数据分析做好准备。

来源:Python学研大本营内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯