目录
pandas参数说明
文件部分读取参数
文件成块读取参数
成块读入,并写入其他文件。
官方文档
pandas在read_csv或 read_table有几个个参数
nrows : int, default None
Number of rows of file to read. Useful for reading pieces of large files
nrows需要读取的行数(从文件开头算起)假如这个参数设定为 50,则仅仅读取文件的前50行。
skiprows : list-like or integer or callable, default None
Line numbers to skip (0-indexed) or number of lines to skip (int) at the start of the file.
If callable, the callable function will be evaluated against the row indices, returning True if the row should be skipped and False otherwise. An example of a valid callable argument would be
lambda x: x in [0, 2]
.
skiprows 需要忽略的行。可以是整数,代表跳过的行数(从文件开头算起);可以是列表,代表需要跳过的行号(从0开始)。
In [6]: pd.read_csv(StringIO(data), skiprows=lambda x: x % 2 != 0)
Out[6]:
col1 col2 col3
0 a b 2
skip_footer : int, default 0
DEPRECATED: use the skipfooter parameter instead, as they are identical
skip_footer 需要忽略的行数(从文件末尾处算起)
iterator : boolean, default False
Return TextFileReader object for iteration or getting chunks with
get_chunk()
.
chunksize : int, default None
Return TextFileReader object for iteration. See the IO Tools docsfor more information on
iterator
andchunksize
.
写入文件时“index=None,header=False”目的是不添加索引。具体可见这里
import pandas as pd
#成块读入
reader = pd.read_table("E:\\Mypython3\\fact.txt",
header=None,encoding='utf-8',sep="\t",chunksize =50)
i = 0
#对快操作
for chunk in reader:
i = i+1
print(chunk)
chunk.to_csv("{}.txt".format(i),index=None,header=False,sep="\t",encoding='utf-8')
官网的例子
In [177]: reader = pd.read_table('tmp.sv', sep='|', chunksize=4)
In [178]: reader
Out[178]:
In [179]: for chunk in reader:
.....: print(chunk)
.....:
Unnamed: 0 0 1 2 3
0 0 0.469112 -0.282863 -1.509059 -1.135632
1 1 1.212112 -0.173215 0.119209 -1.044236
2 2 -0.861849 -2.104569 -0.494929 1.071804
3 3 0.721555 -0.706771 -1.039575 0.271860
Unnamed: 0 0 1 2 3
4 4 -0.424972 0.567020 0.276232 -1.087401
5 5 -0.673690 0.113648 -1.478427 0.524988
6 6 0.404705 0.577046 -1.715002 -1.039268
7 7 -0.370647 -1.157892 -1.344312 0.844885
Unnamed: 0 0 1 2 3
8 8 1.075770 -0.10905 1.643563 -1.469388
9 9 0.357021 -0.67460 -1.776904 -0.968914
注意的是如果“chunk.to_csv("{}.txt".format(i),index=None,header=False,encoding='utf-8')”,就会出现“'DataFrame' object has no attribute 'to_table'”,所以在存入的时候要用 to_csv ,默认为逗号分隔符,在分隔符上写上想要的分隔符。
这种方法在写入的文件中,换行符为“\r\n”(原文件在生成的时候是“\n”为换行符)
知识补充:
CRLF, LF 是用来表示文本换行的方式。CR(Carriage Return) 代表回车,对应字符 "
\r"
;LF(Line Feed) 代表换行,对应字符'\n'
。主流的操作系统Windows 系统使用的是 CRLF, Unix系统(包括Linux, MacOS近些年的版本) 使用的是LF。
Specifying iterator=True
will also return the TextFileReader
object:
iterator=True
要和get_chunk(n)配合使用In [180]: reader = pd.read_table('tmp.sv', sep='|', iterator=True)
In [181]: reader.get_chunk(5)
Out[181]:
Unnamed: 0 0 1 2 3
0 0 0.469112 -0.282863 -1.509059 -1.135632
1 1 1.212112 -0.173215 0.119209 -1.044236
2 2 -0.861849 -2.104569 -0.494929 1.071804
3 3 0.721555 -0.706771 -1.039575 0.271860
4 4 -0.424972 0.567020 0.276232 -1.087401