从事数据分析工作,经常需要进行数据清洗,pandas库是数据分析最常用的库之一。本文根据官方文档对pandas的read_csv()函数进行说明。read_csv()函数是用来读取csv文件的内容进而转化为易于操作的数据结构dataframe的常用函数。具有十分强大的功能,可以传入多种参数,下面就根据官方文档以及自己的实践,详细介绍各个参数,对于不易理解的参数会附上示例代码。
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=None, error_bad_lines=True, warn_bad_lines=True, skipfooter=0, doublequote=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None)
filepath_or_buffer:任何有效的字符串路径。
有效的字符串路径包括文件路径对象和类文件对象。文件路径对象包括csv文件的绝对路径、相对路径和URL,如本地的文件路径就可以写成file://localhost/path/to/table.csv;类文件对象则是先对csv文件进行IO封装,再使用read_csv()函数进行调用,比如说Python内置的open()函数。以下给出示例代码。
from pandas import read_csv # 文件路径对象 result1 = read_csv('table.csv') # 相对路径 result2 = read_csv('E://demo/table.csv') # 绝对路径 result3 = read_csv('file://localhost/E://demo/table.csv') # URL # 类文件对象 f = open('table.csv') result4 = read_csv(f)
sep:str,default ','.
一般csv默认逗号为分隔符,如果想使用其他字符对csv文件进行分隔可以指定为其他的字符,此外,还可以指定正则表达式为分隔符。
delimiter:str,默认为None。sep的别名。
header:int,list of int, default 'infer'.
指定DataFrame的某行为列标签,默认为第一行,等同于header=0。如果header=1,则第二行选为列标签。特别的,如果header=None,则列名为0,1,2,3......如果设置header=[0,1,2],则将0,1,2中的值组合为列名。注意:header=0表示数据的第一行而不是文件的第一行,因为有时我们会跳过空白行,此时header=0不会指定跳过的空白行作为列标签。
names:array-like, optional.
可以将header设为None然后传入一个类数组结构自定义列标签。
index_col:int, str, sequence of int / str, or False, default
None.
与header类似,指定列作为Dataframe的行标签,可以选择多列组合为行标签。
usecols:list-like or callable.
可以选择想要返回的列,可以按列数取,也可以按列名取。
squeeze:bool, default False.
如果参数数据只包含一列,则返回的是一个Series。
prefix:bool, default True.
当header=None时给列标签添加前缀。如:prefix='X',则列标签为['X1', 'X2', 'X3'......]。
mangle_dupe_cols:bool, default True.
区分重复的列,示例如下:
# csv文件中的第一行为['x', 'x', 'x'] file.columns == ['x', 'x', 'x'] # 如果mangle_dupe_cols是True if mangle_dupe_cols is True: # dataframe的第一行是['x', 'x.1', 'x.2'] dataframe.columns = ['x', 'x.1', 'x.2'] # 如果mangle_dupe_cols是False else: # dataframe的第一行是['x'],x对应csv文件中的第三列,因为后面的列会将前面的列覆盖掉 dataframe.columns = ['x']
dtype:Type name or dict of column -> type.
设置数据类型,可以整个data设置为string,也可以按列设置。当converters函数被指定,则会优先使用converters中指定的数据类型。示例如下:
from pandas import read_csv # 为整个data集指定数据类型 read_csv('table.csv', dtype=str) # 为指定列设置数据类型 read_csv('table.csv', dtype={'r1': str, 'r2': int})
converters:dict.
为指定列设置数据类型,Keys可以是字符串(列名),也可以是整型(列的位置)。