分享

使用pandas进行文件读写

 生信修炼手册 2020-06-20
pandas是数据分析的利器,既然是处理数据,首先要做的当然是从文件中将数据读取进来。pandas支持读取非常多类型的文件,示意如下

对于文本文件,支持csv, json等格式,当然也支持tsv文本文件;对于二进制文件,支持excel,python序列化文件,hdf5等格式;此外,还支持SQL数据库文件的读写。

在日常开发中,最经典的使用场景就是处理csv,tsv文本文件和excel文件了。对于不同格式的文件,pandas读取之后,将内容存储为DataFrame, 然后就可以调用内置的各种函数进行分析处理
1. CSV文件读写
和R语言类似,对于文本文件的读写,都提供了一个标准的read_table函数,用于读取各种分隔符分隔的文本文件。针对csv这种逗号分隔的特定格式,也提供了read_csv函数来进行处理,读取csv文件的用法如下
>>> import pandas as pd
>>> a = pd.read_csv('test.csv')

和python内置的csv模块相比,pandas的代码非常的简洁,只需要一行就可以搞定了。虽然代码简洁,但是我们要注意的是,根据需要灵活使用其中的参数,常见的参数如下

# sep参数指定分隔符,默认为逗号
>>> pd.read_csv('test.csv', sep = "\t")

#
 delimiter是sep的别名,用于指定分隔符,默认为逗号
>>> pd.read_csv('test.csv', delimiter = "\t")

#
 comment参数指定注释标识符,开头为注释标识符的行不会读取
# 默认的注释标识符为#
>>> pd.read_csv('test.csv', comment = "#")

#
 默认行为,指定第一行作为表头,即数据框的列名
>>> pd.read_csv('test.csv', header = 0)
# header = None, 没有表头,全部为数据内容
>>> pd.read_csv('test.csv', header = None)

#
 index_col参数,指定索引对应的列为数据框的行标签
>>> pd.read_csv('test.csv', index_col=0)

#
 usecols参数根据索引选择部分列
>>> pd.read_csv('test.csv', usecols = (0, 1))

#
 skiprows表示跳过开头前几行
>>> pd.read_csv('test.csv', header = None, skiprows = 1)

#
 nrows 表示只读取前几行的内容
>>> pd.read_csv('test.csv', nrows = 2)

#
 na_values 指定空值的形式,空值会用NaN来代替
>>> pd.read_csv('test.csv', na_values = 3)

将DataFrame对象输出为csv文件的函数以及常用参数如下

# to_csv, 将数据框输出到csv文件中
>>> a.to_csv("test1.csv")
# header = None, 表示不输出数据框的列标签
>>> a.to_csv('test1.csv', header = None)
# index = False, 表示不输出数据框的行标签
>>> a.to_csv('test1.csv', index = False)

2. Excel文件读写

pandas对xlrd, xlwt模块进行了封装,提供了简洁的接口来处理excel文件,支持xls和xlsx等格式的文件,读取excel文件的基本用法如下
>>> pd.read_excel('test.xlsx')

pandas的文件读取函数中,大部分的参数都是共享的,比如header, index_col等参数,在read_excel函数中,上文中提到的read_csv的几个参数也同样适用。除此之外,因为excel有多个sheet, 所以read_excel函数有一个独有的参数sheet_name, 用法如下

# 用索引来指定sheet, 从0开始
>>> pd.read_excel('test.xlsx', sheet_name=0)
# 用sheet的名称来指定
>>> pd.read_excel('test.xlsx', sheet_name='Sheet3')

对应地,输出excel的函数也和to_csv共享大部分参数,基本用法如下

# 输出excel
df.to_excel("output.xlsx")
# 指定输出excel中sheet的名字
df1.to_excel("output.xlsx", sheet_name='Sheet1')

pandas极大地简化了文件读写的代码,只需要掌握常用的几个参数即可。

·end·

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多