pandas读取csv文件——你真的了解pandas.read_csv的参数吗?

pandas.read_csv 所有参数

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。

  • sep的别名。

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。

  • 日期格式为DD/MM,国际和欧洲格式。

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”。

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。

  • 要使用的 dtype_backend,例如 DataFrame 是否应具有 NumPy 数组,当设置为 “numpy_nullable” 时,所有支持可空实现的 dtype 都将使用可空 dtypes;如果设置为 “pyarrow”,则所有 dtype 都将使用 pyarrow。

  • dtype_backends 仍处于实验阶段。

返回:DataFrame或TextFileReader

逗号分隔值(CSV)文件以带有标签轴的二维数据结构返回。

返璞归真的使用

>>> pd.read_csv('data.csv')  

猜你喜欢

转载自blog.csdn.net/whitedrogen/article/details/132488948