13.5 Pandas数据读写

我们在基础部分已经讲过使用Python标准库读写文件。本节我们介绍基于Pandas库读写工具。Pandas库为数据分析而生,为数据读写提供了更加强大的工具。

14.5.1 Pandas数据读写概述

通常,我们会把表格数据读入DataFrame对象。表14.5.x总结了Pandas中常用的读写函数。

14.5.x Pandas常用读写函数

读函数写函数描述

read_csv

to_csv

从文件、URL或文件型对象读取分隔号的数据,默认分隔符是逗号(‘,’)

read_table

to_table

从文件、URL或文件型对象读取分隔号的数据,默认分割符是制表符(‘\t’)

read_clipboard

to_clipboard

以read_table方式从剪切板读取内容

read_excel

to_excel

读取XLS或XLSX文件内容

read_hdf

to_hdf

读取用pandas存储的HDF5文件

read_html

to_html

从HTML文件中读取所有表格内容

read_json

to_json

从JSON字符串中读取数据

read_msgpack

to_msgpack

读取MessagePack二进制格式的pandas数据

read_pickle

to_pickle

读取Ppickle格式存储的数据对象

read_sas

to_sas

读取SAS数据集

read_sql

to_sql

读取SQL查询结果

read_stata

to_stata

读取Stata格式数据集

read_feather

to_feather

读取Feather二进制数据

这些函数中包含一些通用参数,这些参数在大部分函数中都可以使用。

14.5.2 CSV数据处理

Pandas提供了四种函数与方法pd.read_csv()/pd.read_table()与pd.to_csv()/pd.to_table()来读写CSV文件。值得注意的是,read_csv()和read_table()都是是加载带分隔符的数据,每一个分隔符作为一个数据的标志,但二者读出来的数据格式还是不一样的,read_table是以制表符 \t 作为数据的标志,也就是以行为单位进行存储。

表 read_csv()/read_table()函数参数

参数描述

path

文件位置字符串、URL或文件对象

sep或delimiter

分隔字段的序列或正则表达式。

header

用作列ing的行号,默认为0(第一行),默认为None

index_col

作为结果中行索引的列号或列名

names

结果的列名列表,和header=None一起用

skiprows

从文件头开始要调过的行数或行号列表

comment

在行结尾处分隔注释的字符

keep_data_col

如果被连接导解析日期上,保留被连接的列,默认为False

converters

包含列明映射到函数的字典(例如{‘age’, np.square}会把把函数np.square()作用到age列

parse_dates

尝试将数据解析为datatime,默认为False

dayfirst

以国际格式(如8/4/2019->Augest 4,2019)解析非明确的日期

date_parser

解析日期的函数

nrows

从文件开头读入行数。

iterator

迭代器,返回一个TextParser对象,用于零散地读取文件。

chunksize

迭代的块大小

skip_footer

忽略文件尾部的行数

verbose

罗嗦模式,打印各种解释器输出的信息

encoding

Unicode文本编码(例如’utf-8’表示UTF-8编码的文本)

thousands

千分位分隔符

squeeze

如果解析数据只包含一列,返回一个Series

14.5.3 JSON数据处理

Pandas可以使用pd.read_json/pd.to_json函数来读写JSON文件。

下面我们使用pd.read_json读取https://raw.githubusercontent.com/prust/wikipedia-movie-data/master/movies.json中的json数据:

[]:jsn=pd.read_json('https://raw.githubusercontent.com/prust/wikipedia-movie-data/master/movies.json').head(20)

jsn

将保存到DataFrame数组里的数据写入导../temp目录下的JSON文件中。

[]:jsn.to_json('../temp/movies.json')

14.5.4 XML与HTML数据处理

14.5.5 Excel数据处理

Pandas可以使用pd.read_excel/pd.to_excel函数或ExcelFile类来读写MS Excel文件。这些工具都是基于xlrd和openpyxl包来分别读取XLS和XLSX文件的。因此需要使用pip或conda来手动安装依赖:

conda install xlrd openpyxl

pip install xlrd openpyxl

read_excel()与to_excel()

使用pd.read_excel()函数读取./anscombe.xlsx文件:

[]:xlsx=pd.read_excel('./anscombe.xlsx')

我们可以在读取excel文件的同时指定需要读取的表单:

[]:pd.read_excel('./anscombe.xlsx', 'Sheet1')

将保存到DataFrame数组里的数据写入导../temp目录下的EXCEL文件中。

[]:xlsx.to_excel('../temp/anscomble_out.xlsx')

ExcelFile

如果需要读取含有多个表的文件,则使用ExcelFile更快。

使用pd.read_excel()函数读取./anscombe.xlsx文件:

[]:xlsx=pd.ExcelFile('./anscombe.xlsx')

查看xlsx对象包含的表单名称:

[]:xlsx.sheet_names

[]:['Sheet1']

使用parse()方法查看xlsx对象中第一个表单数据:

[]:table1 = xlsx.parse(sheet_name=xlsx.sheet_names[0])

table1

如果要将pandas数据导出到Excel格式中,必须先创建一个ExcelWriter对象,然后使用pd.to_excel()方法写数据:

14.5.6 HDF5数据处理

HDF(Hierarchical Data File)是美国国家高级计算应用中心(National Center for Supercomputing Application,NCSA)为了满足各种领域研究需求而研制的一种能高效存储和分发科学数据的新型数据格式 。HDF可以表示出科学数据存储和分布的许多必要条件。

HDF5用于大数据存储。每个HDF5文件可以存储不止一个数据集,并且支持元数据。除此之外,HDF5还可以使用多种压缩模式进行即时数据压缩,从而使得数据存储更高效。但是随着压缩率的增高,查询效率也随之降低。使用HDF5格式可以高效读取大型数组的一小块。

Last updated