0. 前言
在处理数据时, 我们的第一步工作往往是将数据导入到处理软件中,本文以python读取excel文件为例,作一个简短的记录!
1. 读写文本文件(.csv, .txt)
python中numpy库, pandas库以及csv库都可以读入.csv文件,np.loadtxt函数可以加载.txt文件,但是值得注意的是它是将文本文件导入为数组格式。下面来简单总结下这几种方法。
1.0 csv库
1.0.0 读文件
csv在读取文件时,值得注意的是一行一行读取,并且将每一行保存为一个列表,列表中的每个元素都是字符串类型。
1 | import csv |
其中,rows
是一个迭代器,row
是表格中的每一行元素,且是一个list.因此在访问数据时,需要用到列表元素访问方法。
还有一种就是将文件读取出字典格式
1 | import csv |
如此,在访问元素时可以使用字典访问元素方法,如row['key']
。
1.0.1 写文件
csv在将数据写入.csv是同样是一行一行写入的。
1 | with open(filename, 'w') as f: |
headers
是数据的列名, 为列表形式,data
是待写入的数据,其格式为[(a11, a12, a13), (a21, a22, a23), (a31, a32, a33)]
。
同样可以将字典格式写入.csv
1 | with open(filename,'w') as f: |
其中,headers
是列表形式的列名。data
是待写入的数据,其格式为[{'a':1, 'b':2, 'c':3}, {'a':1.1, 'b':1.2, 'c':1.3}, {'a':2.1, 'b':2.2, 'c':2.3}]
。
现在基本上将csv库读写.csv文件做了简单的说明。下面再说说如用利用numpy库读写.csv文件。
1.1 pandas.read_csv()
先来看看该函数中参数的具体解析
pandas.read_csv(filepath, sep=’, ‘, usecols=None, engine=None, header=’infer’,skipfooter=0)
- filepath可以是一个本地文件,也可以是一个url。
- sep是指定文件的分隔符。
- usecols是一个列的子集。指定需要读取文件中的哪些列。
- engine指定使用的解释器。{‘c’, ‘python’}二选一。
- header指定文件中的第几行作为列名,默认是数据最开始的那一行。如果文件中没有列名,则默认为0,否则设置为None。如果明确设定header=0就会替换掉原来存在列名。
- skipfooter:文件底部要跳过的行数(不支持引擎=’c’)。
注意的是使用pandas.read_csv()读取.csv文件时,数据中的某行必须作为列的标签。
1.2 DataFrame.to_csv()
to_csv是pandas.DataFrame的类方法。其函数为
df.to_csv(filename, sep=’,’, na_rep=’NA’, float_format=’%.2f’, columns=[‘name’], header=0, index=0)
0. filename是保存的文件名。
- sep指定分割符。
- na_rep替换空值,默认为空。
- float_format指定保留小数的位数。
- columns指定需要保存的列。
- header是否需要保存列名。
- index是否保存行索引。
1.3 numpy.loadtxt()
直接来看函数参数
numpy.loadtxt(filename, dtype=, comments=’#’, delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0)
- filename文件名。
- dtype指定元素的数据类型,’int’, ‘float’等。
- comments指定注释行不读取,即若某一行以#开头,则该行不读取。
- delimiter指定文件的分割符。
- converters是对数据进行预处理的参数, 我们可以先定义一个函数func1, 这里的converters是一个字典, 如{0: func1}表示第零列使用函数func1来进行预处理
- skiprows指定跳过前多少行之后再读取文件。
- usecols指定读取文件的哪些列。
- 若unpack=True,则把每一列当成一个向量进行输出,而不合并在一起。
以上简单记录了在python中如何读写.csv, .txt文件,下面再看一看如何读写.xls文件。
2. 读写excel文件(.xls)
在python中读写.xls文件主要会用到xlrd和xlwt这两个库,下面就来详细看一下具体如何操作。
2.0 读.xls文件(xlrd)
用一段代码来说明python具体怎么读入.xls文件的。
1 | import xlrd |
来简单解释下上面代码的含义,首先导入xlrd
库,第二行打开.xls文件,第三行指定表格中的sheet,可以用sheet_by_index
根据sheet的序号来指定,也可以用sheet_by_name
根据sheet的名字来指定。第三四行输出表格的行数和列数。第五六行是用row_values(i)
来按行读取数据,也可以用col_values(i)
来按列读取,当然也可以用cell_value(i, j)
来获取单元格的值。
2.1 写入.xls文件(xlwt)
同样先来看一段代码
1 | import xlwt |
挑重点讲,第一行先新建一个workbook,然后在其中添加一个名为’sheet1’的sheet
, 最后利用.write(row, col, value)
方法来写入数据,最后将workbook进行保存。
3. 总结
以上就是本文的全部内容, 主要记录了利用python来读写.csv,.txt,.xls文件的一些方法,当然本文仅仅知识针对本地文件的读取,不涉及从SQL, MongoDB数据库中读取,也没有涉及到json的读写和解析。相信上面的这些方法已经足够应付我们遇到的问题了~