上一篇介绍了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格式数据导出为文本格式的数据。
领取专属 10元无门槛券
私享最新 技术干货