Python学习笔记(四)

上一篇介绍了Python中透视表和交叉表的方法,本篇介绍Python中如何导入和导出csv、txt文档,基于pandas库操作。

Pandas提供了一些用户将表格型数据读取为DataFrame对象的函数,其中使用最多的是“read_csv”,该函数支持读入csv、txt文档,默认分隔符为逗号。

继续以titanic数据集为例,用UE打开如下所示:有12个字段,891条记录。

把原文档复制一份副本放在桌面,然后在Python中读取。

首先导入numpy、pandas库,

然后使用pandas的read_csv函数:

“titanic=pd.read_csv("C:/Users/aaa/Desktop/titanic.csv")”

可以通过head或tail来查看导入的数据:

“titanic.head()”或“titanic.tail()”

head默认是读取数据集前五行,tail是读取数据集最后五行,如果在括号中填入数字如3、10,则会读取数据集对应的行数。

“titanic.head(3)”这条语句就是读取数据集前三行。

通过查看首尾数据,确认titanic数据集已成功读取到python中,之后就可以通过前几篇介绍的求唯一值、分组、透视表、交叉表等方法,处理数据。

有时候会遇到数据集首行不是字段名的情况,这个时候我们可以通过参数names来指定列名。

还是以titanic数据集为例,现在的数据是没有标题行:

假设我们通过其他渠道知道了该数据集的列名分别是“PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked如果还是按前面介绍的方法,直接导入,Python会把首行默认为标题行:

显然这个结果不是我们想要的,我们要指定列名:

“titanic=pd.read_csv("C:/Users/aaa/Desktop/titanic.csv",names=["PassengerId","Survived","Pclass","Name","Sex","Age","SibSp","Parch","Ticket","Fare","Cabin","Embarked"])”

如红框部分所示,这样导入的数据才是完整的。

语句中前半部分"C:/Users/aaa/Desktop/titanic.csv"就是文档在电脑中存放的位置,鼠标选中文件,按shift+右键,选择“复制为路径(A)”,再粘贴到Python编辑器中,不过此时显示是路径是"C:\Users\aaa\Desktop\titanic.csv",

需将斜杠的方向改成相反方向,否则会报错。

接下来介绍导入txt文件。

虽然都是文本文件,但由于txt文件默认的分隔符是制表符,在导入的语句中要增加参数sep。

以test数据集为例:

该数据集包含三列,且不含标题行,但可以看出三列对应的列名应该是地市、月份、手机号码,前面也介绍了,通过names参数给数据集添加指定的列名,我们再介绍一个参数header,指定“header=None”,则pandas会自动给数据集添加列名,在Python中操作如下:

“test=pd.read_csv("C:/Users/aaa/Desktop/test.txt",header=None,sep="\t")”

导入报错,提示是编码错误,这份txt是在Excel环境下保存的,Excel默认的编码格式是ANSI,在Python或其他数据库中默认的编码格式是utf-8,我们在保存文件时要选择编码为utf-8,

重新保存后,再次运行刚才的代码:

这次就成功读取到了test文档,再看看数据集的前三行:

因为没有指定列名,pandas默认的列名是0、1、2。如果遇到文件编码是utf-8格式,但导入时同样提示编码错误,我们可以调用参数encoding,指定“encoding=utf-8”。

最后把本篇提到的几个参数names、sep、encoding放在一条语句中:

“test=pd.read_csv("C:/Users/aaa/Desktop/test.txt",names=["地市","月份","手机号码"]header=None,sep="\t")”

这条语句表示导入桌面文件test,指定列名分别是地市、月份、手机号码,文件分隔符为制表符,文件编码是utf-8。

read_csv函数常用参数:

本篇主要介绍pandas中如何导入文本格式的数据,着重提到四个参数,names、header、sep、encoding,下一篇讲介绍pandas中如何将DataFrame格式数据导出为文本格式的数据。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180817G1WNBH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券