read_csv()函数使用
函数声明
pandas.read_csv(filepath_or_buffer, sep=', ', delimiter=None, header='infer', names=None, index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, iterator=False, chunksize=None, compression='infer', thousands=None, decimal=b'.', lineterminator=None, quotechar='"', quoting=0, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=False, error_bad_lines=True, warn_bad_lines=True, skipfooter=0, skip_footer=0, doublequote=True, delim_whitespace=False, as_recarray=False, compact_ints=False, use_unsigned=False, low_memory=True, buffer_lines=None, memory_map=False, float_precision=None)
重要参数
filepath_or_buffer
str,pathlib。str, pathlib.Path, py._path.local.LocalPath or any object with a read() method (such as a file handle or StringIO)
sep, delimiter, delim_whitespace
- sep: 指定分隔符。如果不指定参数,则会尝试使用逗号分隔。分隔符长于一个字符并且不是‘\s+’,将使用python的语法分析器。并且忽略数据中的逗号。正则表达式例子:’\r\t’
- delimiter: 定界符,备选分隔符(如果指定该参数,则sep参数失效)
- delim_whitespace: 指定空格(例如’ ‘或者’ ‘)是否作为分隔符使用,等效于设定sep=’\s+’。如果这个参数设定为Ture那么delimiter 参数失效。 在新版本0.18.1支持
一般用使用sep
header 和 index_col
header=None时,即指明原始文件数据没有列索引,这样read_csv为自动加上列索引,除非你给定列索引的名字。
- 注: 读取后的内容如果设置了header的时候得到的数据本身不包含header所指的行,它被作为索引。
例子
obj_2=pd.read_csv('f:/ceshi.csv',header=0,names=range(2,5))
print obj_2
- 输出
2 3 4
0 0 5 10
1 1 6 11
2 2 7 12
3 3 8 13
4 4 9 14
header=0,表示文件第0行(即第一行,python,索引从0开始)为列索引,这样加names会替换原来的列索引。同理index_col,usecols的作用。
nrows
用来读取非常大的文件,可以分块读取,表示一次读取的行数
例子
# 读取前十行
result=pd.read_csv('D:\project\python_instruct\weibo_network.txt', nrows=10)
print('只读取几行:')
print(result)
例子
代码
df=pd.read_csv('D:/project/python_instruct/test_data1.csv')
print('用read_csv读取的csv文件:', df)
df=pd.read_table('D:/project/python_instruct/test_data1.csv', sep=',')
print('用read_table读取csv文件:', df)
df=pd.read_csv('D:/project/python_instruct/test_data2.csv', header=None)
print('用read_csv读取无标题行的csv文件:', df)
df=pd.read_csv('D:/project/python_instruct/test_data2.csv', names=['a', 'b', 'c', 'd', 'message'])
print('用read_csv读取自定义标题行的csv文件:', df)
names=['a', 'b', 'c', 'd', 'message']
df=pd.read_csv('D:/project/python_instruct/test_data2.csv', names=names, index_col='message')
print('read_csv读取时指定索引:', df)
parsed=pd.read_csv('D:/project/python_instruct/test_data3.csv', index_col=['key1', 'key2'])
print('read_csv将多个列做成一个层次化索引:')
print(parsed)
print(list(open('D:/project/python_instruct/test_data1.txt')))
result=pd.read_table('D:/project/python_instruct/test_data1.txt', sep='\s+')
print('read_table利用正则表达式处理文件读取:')
print(result)
- 输出
用read_csv读取的csv文件: a b c d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
用read_table读取csv文件: a b c d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
用read_csv读取无标题行的csv文件: 0 1 2 3 4
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
用read_csv读取自定义标题行的csv文件: a b c d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
read_csv读取时指定索引: a b c d
message
hello 1 2 3 4
world 5 6 7 8
foo 9 10 11 12
read_csv将多个列做成一个层次化索引:
value1 value2
key1 key2
one a 1 2
b 3 4
c 5 6
d 7 8
two a 9 10
b 11 12
c 13 14
d 15 16
[' A B C \n', 'aaa -0.26 -0.1 -0.4\n', 'bbb -0.92 -0.4 -0.7\n', 'ccc -0.34 -0.5 -0.8\n', 'ddd -0.78 -0.3 -0.2']
read_table利用正则表达式处理文件读取:
A B C
aaa -0.26 -0.1 -0.4
bbb -0.92 -0.4 -0.7
ccc -0.34 -0.5 -0.8
ddd -0.78 -0.3 -0.2