python读取表格的第一列到第三 python读取表格第一行_pandas 第一行


上一期对于pandas的数据结构以及基本的增查删改进行了简单的介绍,这一期接着利用pandas进行读写文件。

1.读取文件

利用pandas读取文件主要用到的函数是read_xx(),读取后数据结构为dataframe,接下来对read_xx()进行一一讲解。

1.1 excel文件

pd.read_excel()可以用来读取excel文件,主要涉及到的参数有:

(1)sheet_name: excel文件中的表名

(2)index_col: 使用哪一列作为行索引,默认从0开始

(4)usecols: 读取表格中哪几列,必须是位置索引

(5)header: 哪一行设置为列索引,默认是第一行,即header = 0

(6)date_parser:解析日期的函数

(7)parse_dates:尝试将数据解析为日期,默认为False。如果为True,则尝试解析所有列。此外,还可以指定需要解析的一组列号或者列名

(8)names: 列索引

(9)engine: 默认是C,如文件路径存在中文时,engine= "python"

(10)encoding: 默认是utf-8,还可以是gbk

(11)skiprows: 跳过前几行读取文件,默认从0开始

(12)nrows: 读取多少行数据

(13) converters: 列名跟函数之间的映射关系组成的字典


import


sheet_name用来指定读取文件中哪个表格,可以是表格的名字或者是表格所在的位置,默认从0开始;

index_col指定用哪一列作为行索引,可以是具体的列名,也可以是列的位置索引,默认从0开始;

nrows就不用多说了,只读取多少行,为了方便查看数据的结构,示例只读取5行。


df


usecols指定读取列,须是列的位置索引,默认从0开始;

header指定哪一行设置为列索引,默认为0,还可以是1或者None;


#以header = 0,以第一行为列索引


header = None,表明不以表格的行为列索引,即没有表头,默认从0开始,如原来表格有列索引,则原来索引变为第一行数据;


df


列名的设置,可以通过header = None搭配names参数来重设,或者header = None搭配df.columns()来设置;

skiprows,跳过前几行读取;


df


因为原来的表格有表头,因此用header = None时,原来的表头会变成第一行数据,因此使用skiprows =1,跳过了第一行的读取。


df


1.2 csv文件

csv文件是以逗号为分隔符的文件,读取参数与excel基本类似,与excel的读取不一样的地方在于如遇到中文路径必须得设置engine参数;

文件为gbk格式的csv,若不设置encoding参数,会报错,并且文件路径带有中文,需要设置engine参数,不然也会报错;


df


encoding默认是utf-8格式,根据需要还可能是gbk,示例就是gbk格式;

engine指定读取引擎,默认是c语言,如有路径有中文,需设置为python,python引擎更为全面;

1.3 txt文件

txt文件是以指制表符t为分隔符的文件,读取时用到read_table来读取,参数与excel、csv基本类似,不同的地方在于必须要指定sep。


df


2. 写入文件

2.1写入文件

excel,csv,txt写入文件的方式基本类似,以pandas的to_xx()方式写入;因为三者类似,这里只用excel格式来示例。

(1)index: 是否保留行索引

(2)columns: 通过列索引指定所需列

(3)sheet_name: 表名

(4)encoding:编码格式,utf-8或者gbk

(5)na_rep: 缺失值填充

(6)inf_rep:无穷值填充

(7)index_label: 行索引标签

(8)header: 默认为True,False没有列索引,如需更改列名,则header = ["列1","列2","列3"]


df


to_csv时需记得设置sep参数!

2.2 多个表写入同个文件

多个数据表需同时写入一个文件时,需用到pandas的ExcelWriter。 步骤如下:


writer


3.批量读取文件

很多时候我们会遇到数据表结构类似,甚至结构相同的文件。处理时如果一个一个的读取,那就太慢了,不符合使用python的我们的风格,我们可以使用循环将多个类似的数据表同时读取,如:


import