使用Python进行数据清洗和预处理(1)

您所在的位置:网站首页 python从本地文件读出数据 使用Python进行数据清洗和预处理(1)

使用Python进行数据清洗和预处理(1)

2023-05-08 18:41| 来源: 网络整理| 查看: 265

随着大数据时代的到来,各行各业的数据都呈现出了爆发性地增长。大数据在日常工作中的应用越来越多,大数据的价值日益凸显,日益受到企业的重视!

对大数据进行分析,就离不开专业化的分析工具,例如R、Python、SAS等。在这些众多的工具中,毫无疑问,Python是其中的佼佼者。具体而言,Python具有如下的几个优势:

Python的功能十分强大。我们可以在只使用Python的情况下,完成数据分析或数据挖掘的全部流程,具体而言包括数据的采集、数据的清洗与预处理、探索性数据分析、数据建模、数据可视化、模型调试与评估等!Python是开源软件,并且是免费的,性价比很高。Python简单易学,其一Python比较贴近英语等自然语言;其二Python拥有种类丰富、数量众多、功能强大的第三方包!Python的代码比较简洁、易读和易维护Python是胶水语言,不受平台和操作系统的限制Python具有强大的可扩展性和可嵌入性

当然了,Python也是有一定的缺点的!Python作为一门高级语言,其运行速度并不如C、C++这样的编程语言速度快!

使用Python,我们就要首先安装Python的IDE(集成开发环境)。这一选择,就有很多了,比如有Python默认的集成开发环境、Anaconda、Pycharm等。进行数据分析的话,Anaconda就是一个不错的集成开发环境。Anaconda这一集成开发环境,集成了近200个数据科学相关的第三方包,我们在使用的时候,只需要使用import调取相应的第三方包就可以了,非常便于我们进行数据分析工作!Anaconda的官方网站如下:

Anaconda | The World's Most Popular Data Science Platform

下载并安装好了Anaconda之后,我们就可以开始使用Python进行学习了!在Anaconda中,最为常用的代码编辑环境就是Jupyter Notebook了,其代码的编辑和运行都是在浏览器中进行的!其运行环境如下:

打开Jupyter Notebook时的界面在Jupyter Notebook中运行代码

Jupyter Notebook具有如下特点:

操作界面具有简洁性和扁平性的特征;使用Jupyter Notebook编写代码,像是在写笔记,非常简单,而且可以实现自动保存。

下面我们介绍一下如何使用Jupyter Notebook:

新建Jupyter Notebook文件运行Python代码重命名Jupyter Notebook文件保存Jupyter Notebook文件导入本地Jupyter Notebook文件Jupyter Notebook与Markdown之间的切换

多图预警!

新建Jupyter文件运行代码的快捷键是Ctrl+Enter或Shift+Enter。前者不能激活下一个代码框,后者则能激活下一个代码框!重命名Jupyter文件上传本地Jupyter文件保存Jupyter文件markdown与code之间的切换,快捷键是:先按Esc,再按M,切换到Markdown,再按Enter,则激活Markdown,可以输入内容;Esc+Y,则切换到代码状态!

除此之外,在使用Jupyter的过程中,我们还可以使用一些小的技巧,帮助我们更好的使用。

先按Esc,再按A:在当前代码框的前面,新增代码框先按Esc,再按B:在当前代码框的后面,新增代码框先按Esc,再按X:删除当前代码框Ctrl+/:添加单行注释选中内容,再按Ctrl+/:添加多行注释Tab:代码补全功能在函数名后面,按住Shift,按一次Tab:返回简洁版的官方文档在函数名后面,按住Shift,按两次或三次Tab:返回详细的官方文档在函数名后面,按住Shift,按四次Tab:重新弹出帮助文档的窗口

完成了这些基本的准备工作之后,我们就可以开始进行数据分析了!数据分析的第一步,当然是获取数据了。数据的获取方法有多种:可以从网络上爬取得来,可以是自己调研得来的,可以是第三方的数据,也可以是调研得来的!这些数据,往往存储在外部的数据源中,例如文本文件、Excel二进制文件、数据库文件中等!如果我们想利用Python进行数据分析,那么,我们需要首先将数据导入到Python中,因此,下面我们就介绍一下如何将外部的数据源导入到Python中!

读取txt文本文件

在Python中,读取txt文本文件使用的是pandas模块下的read_table函数。这一函数的具体参数如下:

filepath_or_buffer:指定txt文件所在的具体路径信息,除此之外,还可以指定存储数据的网站链接!为了避免路径里面的\被转义,我们需要在路径的前面加上一个转义符r!sep:指定源数据集中各变量之间的分隔符,默认为tab制表符!header:是否需要将原数据集中的第一行作为表头,默认是将第一行作为变量名称。如果第一行没有变量名称,我们将这一参数设置为None!names:当header设置为None的时候,我们需要通过一个列表指定变量名称!如果在原有数据集有表头(变量名称)的情况下,仍然设置上names,那么程序会出现警告(Warnings)!index_col:指定数据集中的某些列作为数据框的行索引(标签)。默认不进行设置,数据类型可以是一个整数,一个序列,或者是False。usecols:以列表方式指定要读取的数据列。默认是读取原数据集中的全部列。dtype:读取数据的时候,可以以字典方式为原数据集中的每一个变量设置不同的数据类型converters:通过字典格式,为数据集中的某些变量设置转换函数skiprows:数据读取时,指定需要跳过的原数据集起始行数skipfooter:数据读取时,指定需要跳过的原数据集末尾行数nrows:指定数据读取的行数na_values:指定数据集中哪些特征的值作为缺失值(默认将两个分隔符之间的空值视为缺失值)skip_blank_lines:读取数据集的时候,是否需要跳过原数据集中的空白行,默认是Truethousands:指定原数据集中的千分位符comment:指定注释符,在读取数据时,如果碰到行首指定的注释符,则跳过该行encoding:解决中文乱码问题,Python中默认是utf-8,此外,还有gbk格式

举个例子说明一下:

假设,我们要读取如下的txt文本文件:

我们还要做如下要求:

只读取员工信息,没有其他冗余信息10号前要离职的员工,信息不读取增加上表头员工编号要采用字符串格式

代码实现如下:

data1=pd.read_table(r"C:\Users\Administrator\Desktop\data1.txt",sep=",",header=None,names=["id","name","gender","title"],skiprows=2,skipfooter=2,comment="#",converters={"id":str})

最后的效果:

读取csv文件

csv文件是逗号分隔值文件,也是一种文本文件,因此也可以通过pd.read_table读取!不过,一般情况下,我们是使用pd.read_csv函数,其功能和pf.read_table基本一样,只不过readcsv的默认分隔符是逗号,而read_table的默认分割符是tab制表符!

在读取csv文件的时候,我们需要指定编码方式:

如果按照utf-8的方式保存的,那么,我们可以不指定,因为Python默认的编码方式就是utf-8如果编码方式是gbk,那么,我们需要指定编码方式为encoding="gbk"

如果我们要读取的文件或路径中包含中文字符,那么,我们应该上engine="python"。如果文件格式是CSV UTF-8,那么编码格式要设置为utf-8-sig;如果文件格式是CSV格式,那么编码方式则gbk格式。举个例子:

文件名中包含中文时,需要设置上engine=;amp;amp;amp;amp;quot;python;amp;amp;amp;amp;quot;读取Excel二进制文件

读取Excel二进制文件,我们需要使用pandas模块下的read_excel函数。这一函数的具体参数如下:

io:电子表格的指定路径sheetname:指定需要读取电子表格中的第几个sheet,可以是整数也可以是sheet_nameheader:是否需要读取表格的第一行作为表头,默认是需要的。如果没有表头,要设置为header=Noneskiprows:读取数据的时候,指定开头需要跳过的行数skip_footer:读取数据的时候,指定需要跳过的原始数据集末尾行数index_col:指定哪些列用作数据框的行索引(标签)names:如果原始数据集没有表头,则可以用其添加表头na_values:指定原始数据集中哪些符号代表了缺失值thousands:指定千位分隔符convert_float:True/False,默认是False。将原数据集中的整数变为浮点数converters:通过字典的形式,指定那些列需要转换成什么形式ncols:指定需要读取哪些列,可以是一个整数,也可以是一个列表。从0开始。

举个例子,现在我们有如下的Excel文件,我们要将其读入到Python中。

具体要求如下:

添加一个表头第一列要求数据类型是字符型未知要改成NaN

代码如下:

data2=pd.read_excel(r"C:\Users\Administrator\Desktop\data2.xlsx",0,header=None,names=["id","date","type","price","color"],na_values="未知",converters={0:str},nrows=6)

效果如下:

代码要注意两点:

要设置成header=None,而不是headers=None。前者才能实现导入数据的全部记录,后者无法将第一条记录导入进去converters={0:str},也可以设置为converters={"id":str}读取数据库文件

很多数据往往都是存储在数据库中的,比较常见的数据库就是SQL Server和MySQL了!如果,我们需要读取数据库中的文件到Python中,我们就需要使用pymysql和pymssql这两个模块了!

读取数据库文件,要分两步进行:

第一步,连接数据库第二步,读取sql文件

接下来,我以MySQL数据库为例,讲解一下(PS:SQL Server因为电脑上没有装,所以不介绍了,不过,大体上差不多!

第一步,连接MySql数据库:

这一步,要用到pymysql.connect函数。函数的参数如下:

host:指定需要访问的MySQL服务器,如果是本地数据库,则指定localhost;如果是远程服务器,则是具体的IP地址user:访问,MySQL数据库的用户名password:指定访问MySQL数据库的密码database:指定访问MySQL数据库的具体库名port:指定访问MySQL数据库的端口号charset:指定读取MySQL数据库的字符集(主要是为了防止乱码),如果数据库表中含有中文,一般可以尝试utf8或gbk。

在连接上了MySQL数据库以后,我们就要读取数据了。此时,我们需要用到的函数是pandas模块下的read_sql函数!这一函数的具体参数如下:

sql:一段字符串型的sql查询代码,用于说明数据的读取逻辑con:指定数据库与Python之间的连接桥梁index_col:指定哪些列作为行索引coerce_float:bool类型的数值,用于判断是否将非字符的变量强制转换为浮点型,默认为Trueparse_dates:指定哪些字段需要做日期类型的转换columns:指定哪些字段需要读取到Python中

现在,让我们举个例子来说明一下!

第一步:连接MySQL数据库

conn=pymysql.connect(host="localhost",user="root",password="******",database="sql_store",port=3306)

第二步:读取数据库中的一张表

customers=pd.read_sql("select * from customers",conn)

第三步:查看数据,观察是否读取成功

第四步:关闭链接

conn.close()

好了,现在就如何读取外部数据做个总结:

txt文本文件:pd.read_table或pd.read_csvcsv文本文件:pd.read_csv或pd.read_table。注意编码方式和路径中含有中文时的处理Excel二进制文件:pd.read_excel数据库文件:先连接数据库,然后读取,最后关闭连接。pymysql.connect和pd.read_sql

外部数据读取到Python中以后,我们就要开始进行数据处理!下一篇文章,我们就对此进行简单介绍!

参考资料:

《数据分析从入门到进阶》《利用Python进行数据分析》《对比Excel,轻松学习Python数据分析》《从零开始学Python数据分析与挖掘》



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3