详解Python利用Pandas和 NumPy 库来进行数据清洗

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情


前言

许多数据科学家认为获取和清理数据的初始步骤占工作的 80%,花费大量时间来清理数据集并将它们归结为可以使用的形式。

因此如果你是刚刚踏入这个领域或计划踏入这个领域,重要的是能够处理杂乱的数据,无论数据是否包含缺失值、不一致的格式、格式错误的记录还是无意义的异常值。

将利用 Python 的 Pandas和 NumPy 库来清理数据。


在这里插入图片描述

准备工作

导入模块后就开始正式的数据预处理吧。

import pandas as pd
import numpy as np

DataFrame 列的删除

通常会发现并非数据集中的所有数据类别都有用。例如可能有一个包含学生信息(姓名、年级、标准、父母姓名和地址)的数据集,但希望专注于分析学生成绩。在这种情况下地址或父母的姓名并不重要。保留这些不需要的数据将占用不必要的空间。

BL-Flickr-Images-Book.csv 数据操作。

df = pd.read\_csv('数据科学必备Pandas、NumPy进行数据清洗/BL-Flickr-Images-Book.csv')
df.head()

可以看到这些列是对 Edition Statement, Corporate Author, Corporate Contributors, Former owner, Engraver, Issuance type and Shelfmarks 没有任何信息帮助的,因此可以进行批量删除处理。

to\_drop\_column = \[ 'Edition Statement',
                   'Corporate Author',
                   'Corporate Contributors',
                   'Former owner',
                   'Engraver',
                   'Contributors',
                   'Issuance type',
                   'Shelfmarks'\]

df.drop(to\_drop\_column , inplace=True, axis=1)
df.head()

DataFrame 索引更改

Pandas 索引扩展了 NumPy 数组的功能,以允许更通用的切片和标记。 在许多情况下,使用数据的唯一值标识字段作为其索引是有帮助的。

获取唯一标识符。

df\['Identifier'\].is\_unique
True

Identifier列替换索引列。

df = df.set\_index('Identifier')
df.head()

206 是索引的第一个标签,可以使用 df.iloc[0] 基于位置的索引访问。

DataFrame 数据字段整理

清理特定列并将它们转换为统一格式,以更好地理解数据集并强制保持一致性。

处理 Date of Publication 出版日期 列,发现该数据列格式并不统一。

df.loc[1905:, ‘Date of Publication’].head(10)

Identifier
1905           1888
1929    1839, 38-54
2836           1897
2854           1865
2956        1860-63
2957           1873
3017           1866
3131           1899
4598           1814
4884           1820
Name: Date of Publication, dtype: object

我们可以使用正则表达式的方式直接提取连续的4个数字即可。

extr = df\['Date of Publication'\].str.extract(r'^(\\d{4})', expand=False)
extr.head()

Identifier
206    1879
216    1868
218    1869
472    1851
480    1857
Name: Date of Publication, dtype: object

最后获取数字字段列。

df\['Date of Publication'\] = pd.to\_numeric(extr)

str 方法与 NumPy 结合清理列

df[‘Date of Publication’].str 。 此属性是一种在 Pandas 中访问快速字符串操作的方法,这些操作在很大程度上模仿了对原生 Python 字符串或编译的正则表达式的操作,例如 .split()、.replace() 和 .capitalize()。

要清理 Place of Publication 字段,我们可以将 Pandas 的 str 方法与 NumPy 的 np.where 函数结合起来,该函数基本上是 Excel 的 IF() 宏的矢量化形式。

np.where(condition, then, else)

在这里 condition 要么是一个类似数组的对象,要么是一个布尔掩码。 then 是如果条件评估为 True 时使用的值,否则是要使用的值。

本质上 .where() 获取用于条件的对象中的每个元素,检查该特定元素在条件上下文中的计算结果是否为 True,并返回一个包含 then 或 else 的 ndarray,具体取决于哪个适用。可以嵌套在复合 if-then 语句中,允许根据多个条件计算值.

处理 Place of Publication 出版地 数据。

df\['Place of Publication'\].head(10)

Identifier
206                                  London
216                London; Virtue & Yorston
218                                  London
472                                  London
480                                  London
481                                  London
519                                  London
667     pp. 40. G. Bryan & Co: Oxford, 1898
874                                 London\]
1143                                 London
Name: Place of Publication, dtype: object

使用包含的方式提取需要的数据信息。

pub = df\['Place of Publication'\]
london = pub.str.contains('London')
london\[:5\]

Identifier
206    True
216    True
218    True
472    True
480    True
Name: Place of Publication, dtype: bool

也可以使用 np.where 处理。

df\['Place of Publication'\] = np.where(london, 'London',
                                      pub.str.replace('-', ' ')))

Identifier
206                     London
216                     London
218                     London
472                     London
480                     London
                  ...         
4158088                 London
4158128                  Derby
4159563                 London
4159587    Newcastle upon Tyne
4160339                 London
Name: Place of Publication, Length: 8287, dtype: object

apply 函数清理整个数据集

在某些情况下,将自定义函数应用于 DataFrame 的每个单元格或元素。 Pandas.apply() 方法类似于内置的 map() 函数,只是将函数应用于 DataFrame 中的所有元素。

例如将数据的发布日期进行处理成 xxxx 年的格式,就可以使用apply。

def clean\_date(text):
    try:
        return str(int(text)) + "年"
    except:
        return text

df\["new\_date"\] = df\["Date of Publication"\].apply(clean\_date)
df\["new\_date"\] 

Identifier
206        1879年
216        1868年
218        1869年
472        1851年
480        1857年
           ...  
4158088    1838年
4158128    1831年
4159563      NaN
4159587    1834年
4160339    1834年
Name: new\_date, Length: 8287, dtype: object

DataFrame 跳过行

olympics\_df = pd.read\_csv('数据科学必备Pandas、NumPy进行数据清洗/olympics.csv')
olympics\_df.head()

可以在读取数据时候添加参数跳过某些不要的行,比如索引 0 行。

olympics\_df = pd.read\_csv('数据科学必备Pandas、NumPy进行数据清洗/olympics.csv',header=1)
olympics\_df.head()

DataFrame 重命名列

new\_names =  {'Unnamed: 0': 'Country',
              '? Summer': 'Summer Olympics',
               '01 !': 'Gold',
              '02 !': 'Silver',
              '03 !': 'Bronze',
              '? Winter': 'Winter Olympics',
              '01 !.1': 'Gold.1',
              '02 !.1': 'Silver.1',
              '03 !.1': 'Bronze.1',
              '? Games': '# Games',
              '01 !.2': 'Gold.2',
              '02 !.2': 'Silver.2',
              '03 !.2': 'Bronze.2'}

olympics\_df.rename(columns=new\_names, inplace=True)

olympics\_df.head()


关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉CSDN大礼包:《Python入门资料&实战源码&安装工具】免费领取安全链接,放心点击

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python基础学习视频

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述
因篇幅有限,仅展示部分资料

三、精品Python学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述

四、Python工具包+项目源码合集
①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

六、Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述
在这里插入图片描述
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

数据清洗:生成模拟数据,处理缺失值、异常值、重复值(含python代码)数据建模拿到数据后第一步。 在进行数值模拟或者建立数据模型前,需要将实验数据进行数据清洗预处理。本文主要介绍数据清洗的常见步骤技巧。生成模拟数据,缺失值处理,异常值处理,重复值处理 阅读详情

相关推荐

【一万字分析建议收藏】关于PythonNumPyPandas详解

本文介绍了Python中的NumPyPandas的使用方法。NumPy是一个科学计算,它提供了一个多维数组对象一些用于处理数组的函数。Pandas是一个数据分析,它提供了一些用于处理数据的函数数据结构。NumPyPandas都可以帮助我们更好地处理数据,提高数据分析的效率。更多关注。

ch950401的博客 3905

数据清洗Numpy

Numpy 的核心是 ndarray 对象,包含了多维数组以及多维数组的操作;

Little_mosquito_的博客 658

python数据分析的NumpyPandas

NumpyPython进行科学计算,尤其是数据分析时,所用到的一个基础Numpy的基础:Ndarray。Numpy数组的维数元素数量由数组的型(shape)来决定,数组的型由N个正整数组成的元组来指定,元组的每个元素对应每一维的大小。数组的维统称为轴(axes),轴的数量被称作秩(rank)。Pandas是一个专门用于数据分析的开源Pythonpandas的核心为两大数据结构,分别是Series(一维)DataFrance(多维)。

2202_75530902的博客 1263

数据清洗-Numpy基础

文章目录数据清洗NumpyNdarrayNdarray属性创建Ndarray对象Numpy数组的向量化Ndarray的各种变换操作维度变换元素类型变换数组转变为列表Numpy的广播功能访问Ndarray中的元素--索引切片基本索引切片索引:直接通过 [ ]进行存取切片:取某几个间隔相同的元素的集合整数数组索引切片高维数组的索引切片bool索引Numpy运算算术运算取整函数与统计函数取整函数统计函数排序索引归一化集合逻辑 数据清洗 介绍:进行数据清洗所使用的是python第三方中的Numpy N

凯撒袁六兽的blog 1135

【机器学习】数据清洗——基于Numpy的方法删除重复点

本文将介绍如何利用 NumPy 中的功能来删除重复点,包括基于行、列以及全部点的删除方法。

m0_74195174的博客 2222

数据清洗numpy

此文主要针对numpy的基本用法,后续会结合数据清洗

m0_62537560的博客 440

Python数据分析步骤详解与案例实践

Python数据分析步骤详解与案例实践 【下载地址】Python数据分析步骤详解与案例实践分享 本资源文件详细介绍了Python数据分析的步骤,并附有实际案例的详解源代码。通过学习本资源,您将掌握如何使用Python中的pandasnumpy进行数据分析,包括数据清洗、建模分析等关键步骤 ...

gitblog_06525的博客 369

Python 数据清洗详解

数据清洗是数据分析的重要步骤,而Python提供了许多强大的来简化加速这一过程。本文介绍了几个最有用的数据清洗,包括Pandas、Dask、NumPyPyjanitor。通过这些示例代码,你可以开始利用这些清洗预处理你的数据,确保它们准备好用于进一步的分析建模。希望这些示例对你在数据清洗的旅程中有所帮助!

涛哥聊Python 1794

Python中的 NumPyPandas介绍

NumPy(Numerical Python的缩写)是Python中一个非常核心且广泛使用的科学计算。它提供了高性能的多维数组对象(ndarray)以及对这些数组进行操作的各种函数工具,使得在Python中进行大规模数据处理数值计算变得更加简单高效。NumPy是许多高级数据分析(如Pandas、SciPy)的底层,为Python的数据科学计算提供了强大的基础支持。PandasPython的一个开源数据分析,提供了高性能、易于使用的数据结构数据分析工具。

Chujun123528的博客 3683

数据科学中的PythonNumPyPandas入门指南

NumPy是用于科学计算的基础包,提供了高性能的多维数组对象()用于处理这些数组的工具。# 创建一个一维数组# 打印数组# 数组形状# 数组类型# 访问元素# 数组运算以上代码创建了一个一维数组,展示了数组的形状、类型、访问元素以及简单的数组运算。NumPy的强大之处在于其支持高效的向量化操作,使得对整个数组进行操作更为方便。Pandas是建立在NumPy之上的数据处理,提供了灵活的数据结构(DataFrame)以及用于数据操作分析的工具。# 创建一个简单的DataFrame。

一键难忘的博客 4792

PandasNumPy的比较——《Python数据分析Pandas

PandasNumPyPython中用于数据分析科学计算的两个核心,它们各自在数据处理领域具有独特的优势应用场景。通过配合使用这两个,可以充分发挥它们各自的优势,实现高效、灵活的数据处理分析。随着数据科学领域的不断发展进步,PandasNumPy也将继续完善优化。我们可以期待这两个在性能、功能、易用性等方面取得更大的突破创新,为数据分析科学计算提供更加强大的支持。同时,随着更多开发者的加入社区的不断壮大,这两个也将拥有更加广阔的应用前景发展空间。👨‍💻博主。

Python老吕的博客 2266

使用Python进行数据分析:学习如何使用Pandas进行数据清洗处理,以及使用NumPy进行数值计算。

Pandas是一个强大的数据处理分析工具,它可以帮助我们轻松地处理各种类型的数据。Pandas的主要数据结构是DataFrame,它类似于一个表格,可以用来存储操作数据。NumPy是一个强大的数值计算,它可以帮助我们高效地进行各种数学运算。NumPy的主要数据结构是数组(ndarray),它类似于一个多维的列表。

一个平平无奇的博客,一个平平无奇的人,一个平平无奇的约定 1125

Python 学习 —— NumpyPandas 傻傻分不清楚

之前的文章里面谈到过,我从R转到Python上,一个很大的不习惯就是R的数据结构比较简单,但是Python的数据类型比较多,很容易就令人头脑混乱。但是今天学习了一下Udacity的课程,顿时就清楚多了。 Python最基础的数据类型包括数组、列表、字典比较常见的。而NumpyPandas的数据类型是在基础数据类型上建立,彼此相关,又彼此不同。 Numpy里面最...

ctrigger的专栏 2万+

树莓派安装numpypandas

这两天在学习树莓派系统的使用,以便于用python写个跌倒检测识别算法。数据采集用树莓派外接MPU6050陀螺仪模块,用无线模块或者蓝牙模块(树莓派好像是自带的)传输到PC,在PC上做数据处理以及模型训练。因此,即使不在树莓派上训练模型,也需要在树莓派安装python以及相关的。 #命令行安装python3方法: link #python3安装pip sudo apt-get install python3-pip #pip安装numpy sudo apt-get install python3-num

挑战者的博客 7146

numpypandas 详解

在数据科学与机器学习的浪潮中,Python 凭借其丰富的生态成为首选语言。其中,numpy pandas 作为数据处理的基石,是每个数据从业者必须掌握的工具。本文将深入解析这两个的核心功能、应用场景及使用技巧,助你轻松驾驭数据处理工作。

wzdzgdf的博客 1181

python中的NumPyPandas往往都是同时使用,NumPyPandas的在数据分析中的联合使用

NumPyPandasPython中两个非常重要的科学计算数据处理,它们可以互相配合使用,实现更高效的数据处理分析。NumPy是一个用于数值计算的,它提供了一个多维数组对象一系列的函数,可以方便地进行数值计算、矩阵操作、数学变换等操作。以下是NumPy的一些常用功能:创建多维数组:使用NumPy可以方便地创建二维、三维甚至更高维度的数组对象,并且可以对数组进行各种操作,如切片、索引、重塑等。数学计算:NumPy提供了大量的数学函数,可以对数组进行各种计算,如加、减、乘、除、平方、开方等。

qlkaicx的博客 2951

python数据清洗实战入门笔记(一)numpypandas

第一章:数据清洗常用工具1.numpy常用数据结构常用清洗工具:numpy常用数据结构:Numpy常用方法数组访问方法练习(jupyter)代码下面是结果2.Numpy常用数据清洗函数数据的排序数据的搜索练习(jupyter)代码下面是结果3.Pandas常用数据结构seriesdataframeseriesdataframe常用方法练习(jupyter)代码下面是结果 1.numpy常用数据结构 常用清洗工具: 目前在Python中, numpypandas是最主流的工具 Numpy中的向量化运算使

2430

Pythonnumpypandas,Matplotlib笔记

b站孙兴华课程笔记

26毕业生自学数分 2250
上一篇: 新手Python爬虫流程及教程详解
下一篇: Python新手易混淆点,快来看看,有没有你不知道的!
一秋的编程笔记
博客等级 码龄3年 1574粉丝 319原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值