作为常用的函数,
pandas.read_csv()
用于读取各种数据文件(.dat.txt.csv等),在这里做一个详细的解释。
pandas.read_csv()
灵活运用index_col与header准确的读取csv文件的行索引与列名
举两个例子:
读取这种
没有列名
与
行索引
的文件,代码为:
pandas.read_csv('data.csv', header = None)
,因为
index_col
默认为
None
,所以不必设置。
代码也可以为
pandas.read_csv('data.csv', header = None, index_col = None)
。
读取这种
有行索引
与
列名
的文件,代码为:
pandas.read_csv('data.csv', index_col = 0)
,因为
header
默认值为
’infer‘
,在不传入
names
参数时默认为读取第一行为列名。
代码也可以为
pandas.read_csv('data.csv', header = 0, index_col = 0)
。
介于这两者之间的情况也可以以此类推,只要改变index_col与header参数值即可。
下面先看官方网站的函数解释,本文已对所有的参数进行了解释。
需要的请看官网
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html
pandas.read_csv(filepath_or_buffer, sep=<object object>, 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, skipfooter=0, 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, cache_dates=True, iterator=False, chunksize=None, compression='infer', thousands=None, decimal='.',
lineterminator=None, quotechar='"', quoting=0, doublequote=True, escapechar=None, comment=None, encoding=None, dialect=None,
error_bad_lines=True, warn_bad_lines=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None,
storage_options=None)
以下格式为:参数,数据类型,默认值
filepath_or_bufferstr, path object or file-like object
,在这里输入需要读入文件的名称字符串形式即可,例如:
'Data.csv'
。
sep, str, default ‘,’
,设置读取数据的间隔符号。
delimiter, str, default None
,sep的备选项。
header, int, list of int, default ‘infer’
参数,默认为
header = 0
,表示其会自动读取数据第一行为列名,如果不想读取第一行可设置
header = None
,如果列名被显式传递则不再自动读取列名。程序自动推断有无
header
传入是否读取第一行,因此默认值为
'infer'
。
names, array-like, optional
参数,用于传入列名,数据形式可以为列表。
index_col, int, str, sequence of int / str, or False, default None
参数,用于设置行序号,同
header
一样,当
index_col = 0
时,则读取第一列为行序号,不需要则设置
index_col = None
。
usecols, list-like or callable, optional
参数返回一个数据子集,该列表中的值必须可以对应到文件中的位置行序号或者列名。例如:
usecols
有效参数可能是 [0,1,2]或者是 [‘foo’, ‘bar’, ‘baz’]。使用这个参数可以加快加载速度并降低内存消耗。
squeeze, bool, default False
参数,是否当只有一列数据时返回
Series
,而非
DataFrame
。
prefix, str, optional
,在没有列标题时,给列序号添加前缀。例如:添加‘X’ 成为 X0, X1, …
mangle_dupe_cols, bool, default True
,重复的列名会被定义为 ‘X’, ‘X.1’, …’X.N’, 而不是 ‘X’…’X’. 如果为False会导致重复的列名的数据被覆盖。
dtype, Type name or dict of column -> type, optional
,列的数据类型设置,E.g. {‘a’: np.float64, ‘b’: np.int32, ‘c’: ‘Int64’} 。
engine, {‘c’, ‘python’}, optional
,使用的解析引擎,C更快,Python功能更全。
converters, dict, optional
,将字典的值转换到确定的列,字典的键可以为整数或者列名。
true_values, list, optional
,被认为是True的值。
false_values, list, optional
,被认为是False的值。
skipinitialspace, bool, default False
,跳过定界符后的空格。.
skiprows, list-like, int or callable, optional
,要跳过的行号(0索引)或文件开头要跳过的行数(int)。
skipfooter, int, default 0
,文件底部需要跳过的行数。 (Unsupported with engine=’c’).
nrows, int, optional
,文件中需要读取的行数。 Useful for reading pieces of large files.
na_values, scalar, str, list-like, or dict, optional
,字符会被认为NaN,如果传入字典则按列替换为NaN,字典的键为列名。By default the following values are interpreted as NaN: ‘’, ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’, ‘-NaN’, ‘-nan’, ‘1.#IND’, ‘1.#QNAN’, ‘’, ‘N/A’, ‘NA’, ‘NULL’, ‘NaN’, ‘n/a’, ‘nan’, ‘null’.
keep_default_na, bool, default True
,四种模式。
- 当该参数为True,且传入na_values参数,则使用默认参数与na_values参数解析。
- 当该参数为True,未传入na_values,则还是使用默认的NaN参数解析。
- 当该参数为False时,且传入na_values参数,则使用na_values参数解析。
- 当该参数为False,且未传入na_values参数,则没有值会被认作NaN。
na_filter, bool, default True
,检测确失的值的标记,空字符串或者是na_values中定义的值。当数据中不包含空值,设置False可以提高读入大文件性能。
verbose, bool, default False
,显示非数值列NA值的数目。
skip_blank_lines, bool, default True
,跳过空行,而不是将空行都读作NaN值。
parse_dates, bool or list of int or names or list of lists or dict, default False
。
当为布尔值True时,解析索引,当为名称或者整型列表时,将其看作分离的日期列进行解析。
当为嵌套列表时,e.g. [[1, 3]] 将列1和3合并看作一个日期列。
当为字典时,e.g. {‘foo’ : [1, 3]} ,解析列1,3作为日期,结果为’foo’。
如果列或者索引不能被看作日期序列,称为不可解析的值,则将其按照原数据类型返回。
For non-standard datetime parsing, use pd.to_datetime after pd.read_csv. To parse an index or column with a mixture of timezones, specify date_parser to be a partially-applied pandas.to_datetime() with utc=True. See Parsing a CSV with mixed timezones for more.
Note: A fast-path exists for iso8601-formatted dates.
infer_datetime_format, bool, default False
,如果该参数为True且parse_dates被使用,pandas会自动推断日期数据的类型在其列中,将其转换为更快的解析日期的方式。某些情况下可以增加5到10倍解析速度。
keep_date_col, bool, default False
,当该参数为True且parse_dates指定合并多列,则保留原始列。
date_parser, function, optional
,设置将字符串类型的列转换为日期序列的函数。默认是使用dateutil.parser.parser做转换,
Pandas will try to call date_parser in three different ways, advancing to the next if an exception occurs: 1) Pass one or more arrays (as defined by parse_dates) as arguments; 2) concatenate (row-wise) the string values from the columns defined by parse_dates into a single array and pass that; and 3) call date_parser once for each row using one or more strings (corresponding to the columns defined by parse_dates) as arguments.
dayfirst, bool, default False
, DD/MM 格式的日期,国际和欧洲的日期格式。
cache_dates, bool, default True
,如果为True则指定唯一的Cache缓存用于转换日期,当处理重复的日期字符串,特别是带有时区偏移的可以显著提高速度。New in version 0.25.0.
iterator, bool, default False
,返回 TextFileReader 对象用作迭代或者获取chunks通过get_chunk().
Changed in version 1.2: TextFileReader is a context manager.
chunksize, int, optional
,返回用于迭代的 TextFileReader 对象. See the IO Tools docs for more information on iterator and chunksize.
Changed in version 1.2: TextFileReader is a context manager.
.
compression, {‘infer’, ‘gzip’, ‘bz2’, ‘zip’, ‘xz’, None}, default ‘infer’
,用于文件的实时解压缩,如果为 ‘infer’ 和 filepath_or_buffer,则从以下拓展名中检测压缩‘.gz’, ‘.bz2’, ‘.zip’, or ‘.xz’ (其他不解压),如果使用’zip’类型的文件,则其中只能包含一个数据文件。该参数设置为None表示不解压。
thousands, str, optional
,千位分隔符,Thousands separator.
decimal, str, default ‘.’
,需要被识别为小数点的字符(e.g. use ‘,’ for European data).
lineterminator, str (length 1), optional
, 将文件分割为多行的字符,只有C解析器有效。
quotechar, str (length 1), optional
, 用于表示引用项的开始和结束的字符。引用的项可以包含分隔符,但它将被忽略。通常为引号。
quoting, int or csv.QUOTE_* instance, default 0
,Control field quoting behavior per csv.QUOTE_* constants. Use one of QUOTE_MINIMAL (0), QUOTE_ALL (1), QUOTE_NONNUMERIC (2) or QUOTE_NONE (3).
doublequote, bool, default True
,当定义引用符且quoting 参数不是 QUOTE_NONE时,指定是否将两个连续的引用符解释为一个引用符。
escapechar, str (length 1), optional
,用于转义其他字符的字符。
comment, str, optional
,表示其后面的行不被解析,如果在行的开头,则该行被忽略,参数必须为单独的字符。完全注释的行会被头参数忽略,但是不会被skiprow忽略。
For example, if comment=’#’, parsing #empty\na,b,c\n1,2,3 with header=0 will result in ‘a,b,c’ being treated as the header.其中\n为换行符。
encoding, str, optional
,用于读取或者写入例如 utf-8 文件的UTF编码。
When encoding is None, errors=“replace” is passed to open(). Otherwise, errors=“strict” is passed to open(). This behavior was previously only the case for engine=“python”.
dialect, str or csv.Dialect, optional
,如果被提供,该参数将覆盖以下参数的值,delimiter, doublequote, escapechar, skipinitialspace, quotechar, and quoting.
If it is necessary to override values, a ParserWarning will be issued. See csv.Dialect documentation for more details.
error_bad_lines, bool, default True
,字段太多的行(例如csv文件行中包含太多的逗号)默认会引起中断,并且不会返回DataFrame,如果为False,这些坏行会被DataFrame中移除。
warn_bad_lines, bool, default True
,If error_bad_lines is False, and warn_bad_lines is True, 每个坏行的警告都会被输出。
delim_whitespace, bool, default False
,指定是否有空格(e.g. ’ ’ or ’ ‘)被用作sep。相当于设置sep=’\s+’。如果将此选项设置为True,则不应该为分隔符参数传入任何参数。
low_memory, bool, default True,在内部以块的形式处理文件,从而在解析时减少内存使用,但可能是混合类型推断。要确保没有混合类型,要么设置为False,要么使用dtype参数指定类型。请注意,无论如何整个文件都被读入一个DataFrame,使用chunksize或iterator参数以块的形式返回数据。(仅对C解析器有效)。
memory_map, bool, default False
,当文件路径被提供后,将文件直接映射到内存中直接读取,该选项可以提高性能,因为不再有I/O开销。
float_precision, str, optional
,指定C引擎用什么转换器处理浮点值,选项有 None or ‘high’ 对于普通转换器, ‘legacy’ 原始的pandas低精度转换器, 和 ‘round_trip’ round-trip 转换器.
Changed in version 1.2.
storage_options, dict, optional
,对于特殊存储连接有意义的额外选项,例如,如果使用由fsspec解析的URL,例如启动“s3://”, “gcs://”,则使用主机、端口、用户名、密码等。如果为此参数提供 non-fsspec URL,将引发错误。See the fsspec and backend storage implementation docs for the set of allowed keys and values.
New in version 1.2.
Returns 返回DataFrame对象。
DataFrame or TextParser
A comma-separated values (csv) file is returned as two-dimensional data structure with labeled axes.