pandas.read_csv 所有参数
- pandas.read_csv
-
- 参数详解
-
- 1. filepath_or_buffer(目标数据)
- 2. sep(分隔符)
- 3. delimiter(同sep,分隔符)
- 4. header(决定列名)
- 5. names(自定义列名,视情况与header配合使用)
- 6. index_col(决定行名)
- 7. usecols(根据列名返回子集)
- 8. dtype(设置数据类型)
- 9. engine(解析引擎)
- 10. converters(替换列中值)
- 11. true_values(哪些值可视为True)
- 12. false_values(哪些值可视为False)
- 13. skipinitialspace(跳过分隔符后面的空格)
- 14. skiprows(从文件头开始跳过某些行)
- 15. skipfooter(从文件末开始跳过某些行)
- 16. nrows(读取文件的部分行)
- 17. na_values(哪些可视为Na)
- 18. keep_default(解析时处理默认的NaN值)
- 19. na_filter(检测NaN)
- 20. verbose(NaN数量)
- 21. skip_blank_lines(跳过空行)
- 22. parse_dates(解析某些列为日期,条件允许时合并原始列)
- 23. infer_datetime_format(推断并解析日期)
- 24. keep_date_col(解析日期时,保留原始列)
- 25. date_parser(自定义解析日期的函数)
- 26. date_format(自定义日期格式)
- 27. dayfirst(DD/MM日期格式)
- 28. cache_dates(转换日期的缓存区)
- 29. iterator(返回迭代器)
- 30. chunksize(同上)
- 31. compression(解压)
- 32. thousands(千分位分割符)
- 33. decimal(可作为小数点的字符)
- 34. lineterminator(文件分行的字符)
- 35. quotechar(可视为引用的字符)
- 36. quoting(调控引用)
- 37. doublequote(是否合并相邻的引用)
- 38. escapechar(转义字符)
- 39. comment(可以理解为注释字符)
- 40. encoding(编码格式)
- 41. encoding_errors(编码错误处理)
- 42. dialect(依旧时解析方面)
- 43. on_bad_lines(对错误行的处理)
- 44. delim_whitespace(使用空白字符作为分隔符)
- 45. low_memory(内部解析时采用低内存)
- 46. memory_map(对象映射)
- 47. float_precision(浮点数转换精度)
- 48. storage_options(高级储存)
- 49. dtype_backend(与Numpy耦合)
- 返回:DataFrame或TextFileReader
- 返璞归真的使用
pandas.read_csv
read_csv专注于将逗号分隔值 (csv) 文件读入 DataFrame。
还支持选择性迭代或将文件分割成块。其他帮助可在 IO 工具的在线文档中找到。在这里,我只关心read_csv有哪些参数,这些参数可以做什么。
pandas.read_csv(filepath_or_buffer,
*,
sep=_NoDefault.no_default,
delimiter=None,
header='infer',
names=_NoDefault.no_default,
index_col=None,
usecols=None,
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_datas=None,
infer_datetime_format=_NoDefault.no_default,
keep_date_col=False,
date_parser=_NoDefault.no_default,
date_format=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,
encoding_errors='strict',
dialect=None,
on_bad_lines='error',
delim_whitespace=False,
low_memory=True,
memory_map=False,
float_precision=None,
storage_options=None,
dtype_backend=_NoDefault.no_default
参数详解
1. filepath_or_buffer(目标数据)
所需:字符串类型,路径对象或类文件对象。
- 可以接受任何有效的字符串路径。该字符串可以是 URL。有效的 URL 方案包括 http、ftp、s3、gs 和 file。对于文件 URL,需要主机。本地文件可以是:file://localhost/path/to/table.csv。
- 如果你想传入一个路径对象,pandas 接受任何 os.PathLike.
- 我们所说的类文件对象是指具有 read() 方法的对象,例如文件句柄(例如通过内置 open 函数)或 StringIO。
2. sep(分隔符)
所需:字符串,默认为“,”。
- 分隔符。如果 sep 为 “无”,C 语言引擎不能自动检测分隔符,但 Python 解析引擎可以,这意味着 Python 内置的嗅探器工具 csv.Sniffer 将使用后者并自动检测分隔符。
- 超过 1 个字符且不同于"\s+"的分隔符将被解释为正则表达式,并强制使用 Python 解析引擎。
- 请注意,regex 定界符容易忽略带引号的数据。regex 示例:‘\r\t’.
3. delimiter(同sep,分隔符)
所需:字符串,默认为None。
4. header(决定列名)
所需:整数或整数列表,或None。默认为‘infer’。
- 将行号用作列名,并指定数据开始的位置。
- 默认行为是推断列名:如果不传递任何名称,则行为与header=0相同,并且从文件的第一行推断列名;如果显式传递列名,则行为与header=None相同。
- 显式传递header=0以替换现有的列名。header可以是一个整数列表,指定列上多级索引的行位置,例如[0,1,3]。未指定的行将被跳过(例如,在此示例中跳过了2)。
- 请注意,如果skip_blank_lines=True,此参数将忽略注释行和空行,因此header=0表示数据的第一行,而不是文件的第一行。
5. names(自定义列名,视情况与header配合使用)
所需:类数组,可选。
- 要使用的列名列表。如果文件包含标题行,则应显式传递header=0以覆盖列名。此列表中不允许重复项。
6. index_col(决定行名)
所需:整数,字符串,整数/字符串序列,或False,可选。默认为None。
- 作为DataFrame的行标签使用的列,可以是字符串名称或列索引。如果给出int / str序列,则使用MultiIndex。
- 注意:index_col=False可用于强制pandas不将第一列用作索引,例如当您有一个每行末尾都有分隔符的格式错误文件时。
7. usecols(根据列名返回子集)
所需:类似于列表或可调用对象,可选。
- 返回列的子集。如果是类似于列表的对象,则所有元素必须要么是位置性的(即整数索引,指向文档中的列),要么是与用户提供的列名(names)或根据文档标题行推断得出的列名相对应的字符串。
- 如果提供了列名(names),则不考虑文档的标题行。例如,一个有效的类似于列表的usecols参数可以是[0, 1, 2]或[‘foo’, ‘bar’, ‘baz’]。元素顺序被忽略,所以usecols=[0, 1]与[1, 0]是一样的。要保留元素顺序从数据中实例化DataFrame,请使用pd.read_csv(data, usecols=[‘foo’, ‘bar’])[[‘foo’, ‘bar’]]来选择列[‘foo’, ‘bar’]的顺序,或者pd.read_csv(data, usecols=[‘foo’, ‘bar’])[[‘bar’, ‘foo’]]来选择[‘bar’, ‘foo’]的顺序。
- 如果是可调用对象,该可调用函数将针对列名进行评估,返回在可调用函数评估为True时的列名。一个有效的可调用参数示例可以是lambda x: x.upper() in [‘AAA’, ‘BBB’, ‘DDD’]。使用此参数可以大大提高解析速度并减少内存使用。
8. dtype(设置数据类型)
所需:翻译:输入名称或包含列名到类型的字典 -> 类型,可选参数
- 数据或列的数据类型。例如,{‘a’: np.float64, ‘b’: np.int32, ‘c’: ‘Int64’} 使用str或object与适当的na_values设置一起使用以保留并不解释dtype。如果指定了转换器,则将应用于替代dtype转换。
9. engine(解析引擎)
所需:{‘c’, ‘python’, ‘pyarrow’},可选。
- 要使用的解析引擎。C和pyarrow引擎速度更快,而python引擎目前功能更完整。当前只有pyarrow引擎支持多线程。
10. converters(替换列中值)
所需:字典,可选。
- 用于转换特定列中值的函数字典。键可以是整数或列标签。
11. true_values(哪些值可视为True)
所需:列表,可选。
- 除了不区分大小写的“True”变体之外,要视为True的其他值。
12. false_values(哪些值可视为False)
所需:列表,可选。
- 除了不区分大小写的“False”变体之外,要视为False的其他值。
13. skipinitialspace(跳过分隔符后面的空格)
所需:布尔值,默认为False。
14. skiprows(从文件头开始跳过某些行)
所需:类列表,整数或可调用函数,可选。
-
要跳过的行号(从0开始计数)或要在文件开头跳过的行数(整数)。
-
如果是可调用对象,将对行索引进行评估,如果应该跳过该行,则返回True,否则返回False。一个有效的可调用参数示例可以是 lambda x: x in [0, 2]。
15. skipfooter(从文件末开始跳过某些行)
所需:整数,默认为0。
- 要在文件底部跳过的行数(在 engine=‘c’ 情况下不支持)。
16. nrows(读取文件的部分行)
所需:整数,可选。
17. na_values(哪些可视为Na)
所需:标量、字符串、类似列表或字典,可选。
- 要识别为NA/NaN的额外字符串。如果传递了字典,则指定每列的NA值。默认情况下,以下值被解释为NaN:‘’、‘#N/A’、‘#N/A N/A’、‘#NA’、‘-1.#IND’、‘-1.#QNAN’、‘-NaN’、‘-nan’、‘1.#IND’、‘1.#QNAN’、‘’、‘N/A’、‘NA’、‘NULL’、‘NaN’、‘None’、‘n/a’、‘nan’、‘null’。
18. keep_default(解析时处理默认的NaN值)
所需:布尔值,默认为True。
在解析数据时是否包括默认的NaN值。根据是否传入na_values参数,行为如下:
-
如果 keep_default_na 是 True,并且指定了 na_values,那么 na_values 将被追加到用于解析的默认 NaN 值中。
-
如果 keep_default_na 是 True,并且未指定 na_values,那么只使用默认的 NaN 值进行解析。
-
如果 keep_default_na 是 False,并且指定了 na_values,那么只使用 na_values 中指定的 NaN 值进行解析。
-
如果 keep_default_na 是 False,并且未指定 na_values,则不会将任何字符串解析为 NaN。
请注意,如果将 na_filter 设置为 False,则 keep_default_na 和 na_values 参数将被忽略。
19. na_filter(检测NaN)
所需:布尔值,默认为True。
- 检测缺失值标记(空字符串和na_values中的值)。在没有任何缺失值的数据中,将 na_filter 设置为 False 可以提高读取大文件的性能。
20. verbose(NaN数量)
所需:布尔值,默认为False。
21. skip_blank_lines(跳过空行)
所需:布尔值,默认为True。
- 如果为True,则跳过空行而不将其解释为NaN值。
22. parse_dates(解析某些列为日期,条件允许时合并原始列)
所需:布尔值或整数列表或名称列表或列表的列表或字典,默认为False。
行为如下:
-
布尔值。如果为True,则尝试解析索引。
-
整数或名称的列表。例如,如果是[1, 2, 3],则尝试将列1、2和3分别解析为单独的日期列。
-
列表的列表。例如,如果是[[1, 3]],则将列1和3合并,并解析为单个日期列。
-
字典,例如{‘foo’ : [1, 3]},则将列1和3解析为日期,并将结果命名为’foo’。
如果某一列或索引无法表示为日期时间数组,比如由于无法解析的值或不同的时区混合,该列或索引会以不变的对象数据类型返回。对于非标准的日期时间解析,请在pd.read_csv之后使用pd.to_datetime。
注意:对于符合iso8601格式的日期有一个快速处理路径。
23. infer_datetime_format(推断并解析日期)
所需:布尔值,默认为False。
- 如果为True并且启用了parse_dates,pandas将尝试推断列中日期时间字符串的格式,并在可以推断出来时切换到更快的解析方法。在某些情况下,这可以将解析速度提高5-10倍。
自版本2.0.0起已废弃:该参数的严格版本现在是默认设置,传递它不会产生任何效果。
24. keep_date_col(解析日期时,保留原始列)
所需:布尔值,默认为False。
- 如果为True,并且parse_dates指定了合并多个列,则保留原始列。
25. date_parser(自定义解析日期的函数)
所需:函数,可选。
- 用于将一系列字符串列转换为日期时间实例数组的函数。默认情况下,使用dateutil.parser.parser进行转换。 Pandas将尝试以三种不同的方式调用date_parser,如果发生异常,则依次尝试下一个方式:1)将一个或多个数组(由parse_dates定义)作为参数传递;2)将由parse_dates定义的列中的字符串值(按行连接)合并为单个数组,并传递该数组;3)对每一行分别使用由parse_dates定义的列的一个或多个字符串(作为参数)调用date_parser。
自版本2.0.0起已废弃:请改用date_format,或者将其读入为对象,然后根据需要应用to_datetime()函数。
26. date_format(自定义日期格式)
所需:字符串或列格式的字典, 默认为None。
- 如果与parse_dates一起使用,将按照此格式解析日期。对于更复杂的情况,请将其读入为对象,然后根据需要应用to_datetime()函数。
27. dayfirst(DD/MM日期格式)
所需:布尔值,默认为False。
28. cache_dates(转换日期的缓存区)
所需:布尔值,默认为True。
- 如果为True,使用一个唯一的转换日期缓存来应用日期时间转换。在解析重复的日期字符串时可以显著提高速度,尤其是带有时区偏移的日期字符串。
29. iterator(返回迭代器)
所需:布尔值,默认为False。
- 返回TextFileReader对象以进行迭代或使用get_chunk()获取块。
30. chunksize(同上)
所需:整数,可选。
- 返回TextFileReader对象以进行迭代。有关迭代器和块大小的更多信息,请参阅IO工具文档。
31. compression(解压)
所需:字符串或字典,默认为’infer‘。
- 这是用于对磁盘数据进行即时解压的。如果 ‘infer’ 和 ‘filepath_or_buffer’ 是路径形式,那么会从以下扩展名中检测压缩:‘.gz’、‘.bz2’、‘.zip’、‘.xz’、‘.zst’、‘.tar’、‘.tar.gz’、‘.tar.xz’ 或 ‘.tar.bz2’(否则没有压缩)。如果使用 ‘zip’ 或 ‘tar’, ZIP 文件必须只包含一个要读入的数据文件。设置为 None 表示不进行解压。也可以是一个字典,其中键 ‘method’ 设置为 {‘zip’, ‘gzip’, ‘bz2’, ‘zstd’, ‘tar’} 中的一个,其他键值对会分别传递给 zipfile.ZipFile, gzip.GzipFile, bz2.BZ2File, zstandard.ZstdDecompressor 或 tarfile.TarFile。例如,下面的内容可以传递给 Zstandard 解压,使用自定义的压缩字典:compression={‘method’: ‘zstd’, ‘dict_data’: my_compression_dict}。
32. thousands(千分位分割符)
所需:字符串,可选。
33. decimal(可作为小数点的字符)
所需:字符串,默认为’.‘。
34. lineterminator(文件分行的字符)
所需:字符串(长度为1),可选。
-用于将文件分行的字符。仅对 C 解析器有效。
35. quotechar(可视为引用的字符)
所需:字符串(长度为1),可选。
- 用于表示引用项的起始和结束的字符。引用项可以包含分隔符,而分隔符将被忽略。
36. quoting(调控引用)
所需:整数或csv.QUOTE_*instance,默认为0。
- 根据csv.QUOTE_*常量控制字段的引用行为。可使用以下选项之一:QUOTE_MINIMAL (0)、QUOTE_ALL (1)、QUOTE_NONNUMERIC (2) 或 QUOTE_NONE (3)。
37. doublequote(是否合并相邻的引用)
所需:布尔值,默认为True。
- 当指定了 quotechar 并且 quoting 不是 QUOTE_NONE 时,指示是否将字段内连续出现的两个 quotechar 元素解释为单个 quotechar 元素。
38. escapechar(转义字符)
所需:字符串(长度为1),可选。
39. comment(可以理解为注释字符)
所需:字符串,可选。
- 指示不应解析行的剩余部分。如果在行的开头找到该字符,则整行将被完全忽略。此参数必须是一个单个字符。与空行一样(只要 skip_blank_lines=True),被完全注释的行由 header 参数忽略,但不会被 skiprows 忽略。例如,如果 comment=‘#’,使用 header=0 解析 #empty\na,b,c\n1,2,3,将导致 ‘a,b,c’ 被视为标题。
40. encoding(编码格式)
所需:字符串,可选,默认为“utf-8”。
- 读/写 UTF 时使用的编码(例如 ‘utf-8’)。Python 标准编码列表。
41. encoding_errors(编码错误处理)
所需:字符串,可选,默认为“strict”。
42. dialect(依旧时解析方面)
所需:字符串或csv.Dialect,可选。
- 如果提供了此参数,它将覆盖以下参数的值(无论是默认值还是非默认值):delimiter、doublequote、escapechar、skipinitialspace、quotechar 和 quoting。如果需要覆盖这些值,将会发出一个 ParserWarning 警告。有关更多详细信息,请参阅 csv.Dialect 文档。
43. on_bad_lines(对错误行的处理)
所需:{‘error’, ‘warn’, ‘skip’} 或可调用对象,默认为 ‘error’。
指定在遇到错误行(字段过多的行)时要执行的操作。允许的值为:
- ‘error’,遇到错误行时引发异常。
- ‘warn’,遇到错误行时引发警告并跳过该行。
- ‘skip’,在遇到错误行时跳过而不引发异常或警告。
44. delim_whitespace(使用空白字符作为分隔符)
所需:布尔值,默认为False。
- 指定是否使用空白字符(例如空格或多个空格)作为分隔符。相当于设置 sep=‘\s+’。如果将此选项设置为 True,则不应传递任何内容给 delimiter 参数。
45. low_memory(内部解析时采用低内存)
所需:布尔值,默认为True。
- 在内部以块的形式处理文件,从而在解析过程中降低内存使用,但可能导致混合类型推断。要确保没有混合类型,请设置为 False 或使用 dtype 参数指定类型。请注意,无论如何整个文件都将读入单个 DataFrame,可以使用 chunksize 或 iterator 参数以块的形式返回数据。(只在 C 解析器中有效)。
46. memory_map(对象映射)
所需:布尔值,默认为False。
- 如果为 filepath_or_buffer 提供了文件路径,则将文件对象直接映射到内存中,并直接从内存中访问数据。使用此选项可以提高性能,因为不再存在 I/O 开销。
47. float_precision(浮点数转换精度)
所需:字符串,可选。
- 指定 C 引擎应使用哪种浮点数转换器。选项包括 None 或 ‘high’(普通转换器)、‘legacy’(原始低精度 pandas 转换器)和 ‘round_trip’(往返转换器)。
48. storage_options(高级储存)
所需:字典,可选。
- 适用于特定存储连接的其他选项,例如主机、端口、用户名、密码等。对于 HTTP(S) URL,键值对将作为标头选项传递给 urllib.request.Request。对于其他 URL(例如以 “s3://” 和 “gcs://” 开头的 URL),键值对将传递给 fsspec.open。请参阅 fsspec 和 urllib 获取更多详细信息,并查看此处的存储选项示例。
49. dtype_backend(与Numpy耦合)
所需:{“numpy_nullable”, “pyarrow”},默认为由 NumPy 支持的 DataFrame。
返回:DataFrame或TextFileReader
逗号分隔值(CSV)文件以带有标签轴的二维数据结构返回。
返璞归真的使用
>>> pd.read_csv('data.csv')