pandas.read_csv #

熊猫。read_csv ( filepath_or_buffer , * , sep = _NoDefault.no_default ,分隔符= None , header = 'infer' ,名称= _NoDefault.no_default , index_col = None , usecols = None , dtype = None , engine = None , converters = None , true_values = false_values = skipinitialspace = False skiprows = skipfooter = 0 nrows = na_values = keep_default_na = True na_filter = True verbose = _NoDefault.no_default skip_blank_lines = True parse_dates = None infer_datetime_format = _NoDefault.no_default keep_date_col = _NoDefault.no_default date_parser = _NoDefault.no_default date_format = None dayfirst = False cache_dates = True迭代器= False chunksize = None压缩= 'infer'千位= None小数= '. ' , lineterminator = None , quotechar = '"' , quoting = 0 ,双引号= True , escapechar = None , comment = None ,编码= None , encoding_errors = 'strict' ,dialect = None , on_bad_lines = 'error' , delim_whitespace = _NoDefault.no_default , low_memory = True , memory_map = False , float_ precision = None , storage_options = None , dtype_backend = _NoDefault.no_default ) [来源] #

将逗号分隔值 (csv) 文件读入 DataFrame。

还支持选择性地迭代或将文件分成块。

其他帮助可以在IO Tools的在线文档中找到 。

参数
filepath_or_buffer str,路径对象或类文件对象

任何有效的字符串路径都是可接受的。该字符串可以是 URL。有效的 URL 方案包括 http、ftp、s3、gs 和 file。对于文件 URL,需要一个主机。本地文件可以是:file://localhost/path/to/table.csv

如果你想传入一个路径对象,pandas 接受任何os.PathLike.

通过类文件对象,我们引用具有read()方法的对象,例如文件句柄(例如通过内置open函数)或StringIO.

sep str,默认 ','

用作分隔符的字符或正则表达式模式。如果sep=None,C 引擎无法自动检测分隔符,但 Python 解析引擎可以,这意味着将使用后者,并通过 Python 内置的嗅探工具 ,仅从文件的第一个有效行自动检测分隔符csv.Sniffer。另外,长度超过1个字符且不同于的分隔符 '\s+'将被解释为正则表达式,也会强制使用Python解析引擎。请注意,正则表达式分隔符很容易忽略引用的数据。正则表达式示例:'\r\t'.

分隔符str,可选

别名为sep.

header int,int 序列,'infer' 或 None,默认 'infer'

包含列标签并标记数据开始的行号(零索引)。默认行为是推断列名:如果未names 传递任何列名,则行为header=0与从文件的第一行推断列名相同,如果显式传递列名,names则行为与 相同 header=None。显式传递header=0以能够替换现有名称。标题可以是指定MultiIndex列上a 的行位置的整数列表,例如。未指定的中间行将被跳过(例如,本例中的 2 行将被跳过)。请注意,如果 ,此参数会忽略注释行和空行 ,因此表示数据的第一行而不是文件的第一行。[0, 1, 3]skip_blank_lines=Trueheader=0

名称Hashable 序列,可选

要应用的列标签的顺序。如果文件包含标题行,那么您应该显式传递header=0以覆盖列名称。此列表中不允许有重复项。

index_col Hashable,Hashable 序列或 False,可选

用作行标签的列,由列标签或列索引表示。如果给出了标签或索引的序列,MultiIndex 则将形成行标签。

注意:index_col=False可用于强制 pandas使用第一列作为索引,例如,当您的文件格式错误且每行末尾带有分隔符时。

usecols Hashable 或 Callable 序列,可选

要选择的列的子集,由列标签或列索引表示。如果是类似列表,则所有元素必须是位置元素(即文档列中的整数索引)或者是与用户在文档names标题行中提供的或从文档标题行推断出的列名称相对应的字符串。如果names给出,则不考虑文档标题行。例如,有效的类似列表的 usecols参数是or 。元素顺序被忽略,因此与 相同。要实例化带有保留元素顺序的from ,请使用 for columns in order 或 for order。[0, 1, 2]['foo', 'bar', 'baz']usecols=[0, 1][1, 0]DataFramedatapd.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']

dtype dtype 或 {Hashable dtype} 的字典,可选

应用于整个数据集或单个列的数据类型。例如, 使用或与适当的设置一起保存而不是解释。如果指定,则将应用它们而不是转换。{'a': np.float64, 'b': np.int32, 'c': 'Int64'}strobjectna_valuesdtypeconvertersdtype

1.5.0 版本中的新增功能:defaultdict添加了对的支持。指定 adefaultdict作为输入,其中默认值确定dtype未明确列出的列。

引擎{'c', 'python', 'pyarrow'}, 可选

要使用的解析器引擎。 C 和 pyarrow 引擎速度更快,而 python 引擎目前功能更完整。目前仅 pyarrow 引擎支持多线程。

版本 1.4.0 中的新增功能: “pyarrow”引擎被添加为实验引擎,该引擎不支持某些功能,或者可能无法正常工作。

{Hashable Callable} 的转换器字典,可选

用于转换指定列中的值的函数。键可以是列标签或列索引。

true_values列表,可选

True除了不区分大小写的“True”变体之外还要考虑的值。

false_values列表,可选

False除了不区分大小写的“False”变体之外还要考虑的值。

skipinitialspace bool, 默认 False

跳过分隔符后的空格。

Skiprows int,int 或 Callable 列表,可选

int文件开头要跳过的行号(从 0 开始索引)或要跳过的行数 ( )。

如果可调用,则将根据行索引评估可调用函数,返回True是否应跳过该行,False否则返回。有效的可调用参数的一个例子是。lambda x: x in [0, 2]

Skipfooter int,默认0

文件底部要跳过的行数(不支持engine='c')。

nrows整数,可选

要读取的文件行数。对于读取大文件很有用。

na_values Hashable、Hashable 的 Iterable 或 {Hashable Iterable} 的 dict,可选

识别为NA/ 的附加字符串NaN。如果dict通过,则为特定的每列NA值。默认情况下,以下值被解释为 NaN:“ “、“#N/A”、“#N/AN/A”、“#NA”、“-1.#IND”、“-1.#QNAN”、“ -NaN”、“-nan”、“1.#IND”、“1.#QNAN”、“<NA>”、“N/A”、“NA”、“NULL”、“NaN”、“无” 、“不适用”、“南”、“空”。

keep_default_na bool, 默认 True

NaN解析数据时是否包含默认值。根据是否na_values传入,行为如下:

  • 如果指定keep_default_naTrue和, 则附加到用于解析的默认值。na_valuesna_valuesNaN

  • 如果、 和未指定,则仅使用默认keep_default_na值进行解析。Truena_valuesNaN

  • 如果指定了keep_default_naisFalsena_values,则仅使用NaN指定的值na_values进行解析。

  • 如果keep_default_na未指定Falsena_values,则不会将任何字符串解析为NaN

请注意,如果na_filter作为 传入False,则keep_default_nana_values参数将被忽略。

na_filter bool, 默认 True

检测缺失值标记(空字符串和 的值na_values)。在没有任何值的数据中NA,传递na_filter=False可以提高读取大文件的性能。

详细布尔值,默认 False

指示NA放置在非数字列中的值的数量。

自 2.2.0 版本起已弃用。

Skip_blank_lines bool, 默认 True

如果True,则跳过空白行而不是解释为NaN值。

parse_dates bool,Hashable列表,列表列表或{Hashable列表}的字典,默认False

行为如下:

  • bool。如果True-> 尝试解析索引。注意:True如果date_formatdate_parser参数已传递,则自动设置 。

  • listint名称。例如,如果-> 尝试将第 1、2、3 列分别解析为单独的日期列。[1, 2, 3]

  • listlist。例如,如果-> 合并第 1 列和第 3 列并解析为单个日期列。在解析之前,值会与空格连接。[[1, 3]]

  • dict,例如-> 将第 1、3 列解析为日期并调用结果“foo”。在解析之前,值会与空格连接。{'foo' : [1, 3]}

如果列或索引无法表示为 的数组datetime(例如由于不可解析的值或时区混合),则列或索引将作为object数据类型返回而不改变。对于非标准datetime解析,请使用to_datetime()after read_csv()

注意:对于 iso8601 格式的日期存在快速路径。

infer_datetime_format bool, 默认 False

如果启用True和,pandas 将尝试推断列中字符串parse_dates的格式,如果可以推断,则切换到更快的解析它们的方法。datetime在某些情况下,这可以将解析速度提高 5-10 倍。

自 version 2.0.0 起已弃用:此参数的严格版本现在是默认值,传递它没有任何效果。

keep_date_col bool, 默认 False

如果Trueparse_dates指定组合多个列,则保留原始列。

date_parser可调用,可选

用于将字符串列序列转换为 datetime实例数组的函数。默认用于dateutil.parser.parser进行转换。 pandas 将尝试date_parser以三种不同的方式进行调用,如果发生异常,则前进到下一种: 1) 传递一个或多个数组(由 定义parse_dates)作为参数; 2) 将由 定义的列中的字符串值连接(按行)parse_dates到单个数组中并传递; 3)date_parser使用一个或多个字符串(对应于 定义的列parse_dates)作为参数,为每一行调用一次。

自版本 2.0.0 起已弃用:使用date_format替代方案,或读入 as object,然后 to_datetime()根据需要应用。

date_format列的 str 或 dict -> 格式,可选

与 结合使用时用于解析日期的格式parse_dates。解析时间的 strftime,例如"%d/%m/%Y"。有关选择的更多信息,请参阅 strftime 文档"%f",但请注意,它将一直解析到纳秒。您还可以通过:

  • “ISO8601”,解析任何ISO8601

    时间字符串(不一定格式完全相同);

  • “混合”,单独推断每个元素的格式。这是有风险的,

    你可能应该将它与dayfirst一起使用。

2.0.0 版本中的新增内容。

dayfirst布尔值,默认 False

DD/MM 格式日期、国际和欧洲格式。

cache_dates bool, 默认 True

如果True,则使用唯一的已转换日期的缓存来应用datetime 转换。解析重复的日期字符串时,尤其是具有时区偏移量的字符串时,可能会产生显着的加速。

迭代器bool,默认 False

返回TextFileReader用于迭代的对象或使用 获取块 get_chunk()

chunksize int,可选

每个块从文件中读取的行数。传递一个值将导致函数返回一个TextFileReader对象进行迭代。 有关和 的更多信息,请参阅IO 工具文档iteratorchunksize

压缩str 或 dict,默认 'infer'

用于磁盘数据的即时解压缩。如果“infer”和“filepath_or_buffer”是类路径,则检测以下扩展名的压缩:“.gz”、“.bz2”、“.zip”、“.xz”、“.zst”、“.tar” 、“.tar.gz”、“.tar.xz”或“.tar.bz2”(否则不压缩)。如果使用“zip”或“tar”,ZIP 文件必须仅包含一个要读入的数据文件。设置为None则不解压缩。也可以是键设置为 { , , , , , }'method'之一的字典,其他键值对分别转发到 , , , ,或 。作为示例,可以使用自定义压缩字典传递以下内容以进行 Zstandard 解压缩: 。'zip''gzip''bz2''zstd''xz''tar'zipfile.ZipFilegzip.GzipFilebz2.BZ2Filezstandard.ZstdDecompressorlzma.LZMAFiletarfile.TarFilecompression={'method': 'zstd', 'dict_data': my_compression_dict}

1.5.0 版本中的新增功能:添加了对.tar文件的支持。

版本 1.4.0 中更改: Zstandard 支持。

数千str(长度 1),可选

充当数值中千位分隔符的字符。

十进制str(长度为 1),默认为 '.'

识别为小数点的字符(例如,使用“,”表示欧洲数据)。

行终止符str(长度 1),可选

用于表示换行符的字符。仅对 C 解析器有效。

quotechar str(长度1),可选

用于表示引用项的开始和结束的字符。引用的项目可以包含 the delimiter,它将被忽略。

引用{0 或 csv.QUOTE_MINIMAL、1 或 csv.QUOTE_ALL、2 或 csv.QUOTE_NONNUMERIC、3 或 csv.QUOTE_NONE},默认 csv.QUOTE_MINIMAL

控制每个常量的字段引用行为csv.QUOTE_*。默认值为 csv.QUOTE_MINIMAL(即 0),这意味着仅包含特殊字符的字段被引用(例如,在quotechardelimiter或中定义的字符) lineterminator

双引号bool,默认 True

quotechar指定 且quoting不是 时QUOTE_NONE,指示是否将quotechar字段内的两个连续元素解释为单个quotechar元素。

escapechar str(长度1),可选

用于转义其他字符的字符。

注释str(长度1),可选

指示不应解析该行剩余部分的字符。如果在行的开头找到,则该行将被完全忽略。该参数必须是单个字符。与空行(只要skip_blank_lines=True)一样,完全注释的行会被参数忽略header,但不会被 忽略 skiprows。例如, if comment='#',解析 #empty\na,b,c\n1,2,3withheader=0将导致被'a,b,c'视为标头。

编码str,可选,默认'utf-8'

读/写时用于 UTF 的编码(例如'utf-8')。Python 标准编码列表

coding_errors str,可选,默认“strict”

如何处理编码错误。可能值的列表

1.3.0 版本中的新增功能。

dialect str 或 csv.Dialect,可选

如果提供,此参数将覆盖以下参数的值(默认或非默认):delimiterdoublequoteescapecharskipinitialspacequotecharquoting。如果需要覆盖值,ParserWarning将发出 a。请参阅csv.Dialect 文档了解更多详细信息。

on_bad_lines {'error', 'warn', 'skip'} 或 Callable, 默认 'error'

指定遇到错误行(包含太多字段的行)时要执行的操作。允许的值为:

  • 'error',遇到坏线时引发异常。

  • 'warn',当遇到坏行时发出警告并跳过该行。

  • 'skip',跳过坏行,遇到坏行时不会引发或警告。

1.3.0 版本中的新增功能。

1.4.0版本新增:

  • 可调用的带有签名的函数 将处理单个坏行。是由 分割的字符串列表。如果函数返回,则坏行将被忽略。如果该函数返回一个新的字符串,其元素数量超出预期,则将在删除额外元素的同时发出 a 。仅在以下情况下支持(bad_line: list[str]) -> list[str] | Nonebad_linesepNonelistParserWarningengine='python'

2.2.0版本更改:

  • 可调用,具有签名的函数,如pyarrow文档中所述engine='pyarrow'

delim_whitespace布尔值,默认 False

指定是否使用空格(例如或)作为分隔符。相当于设置。如果此选项设置为,则不应为该参数传递任何内容 。' ''\t'sepsep='\s+'Truedelimiter

自版本 2.2.0 起已弃用:请使用sep="\s+"

low_memory布尔值,默认 True

在内部以块的形式处理文件,从而在解析时减少内存使用,但可能会混合类型推断。为了确保没有混合类型,请设置False或使用参数指定类型dtype。请注意,无论如何,整个文件都会读入单个文件DataFrame ,请使用chunksizeoriterator参数以块的形式返回数据。 (仅对 C 解析器有效)。

memory_map bool, 默认 False

如果提供了文件路径filepath_or_buffer,则将文件对象直接映射到内存并直接从那里访问数据。使用此选项可以提高性能,因为不再有任何 I/O 开销。

float_ precision {'high', 'legacy', 'round_trip'}, 可选

指定 C 引擎应使用哪个转换器来处理浮点值。选项是None'high'用于普通转换器、 'legacy'用于原始较低精度的 pandas 转换器和 'round_trip'用于往返转换器。

storage_options字典,可选

对于特定存储连接有意义的额外选项,例如主机、端口、用户名、密码等。对于 HTTP(S) URL,键值对将urllib.request.Request作为标头选项转发。对于其他 URL(例如以“s3://”和“gcs://”开头),键值对将转发到fsspec.open。请参阅fsspecurllib了解更多详细信息,有关存储选项的更多示例,请参阅此处

dtype_backend {'numpy_nullable', 'pyarrow'}, 默认 'numpy_nullable'

应用于结果的后端数据类型DataFrame (仍处于试验阶段)。行为如下:

  • "numpy_nullable":返回 nullable-dtype-backed DataFrame (默认)。

  • "pyarrow":返回 pyarrow 支持的可为空的ArrowDtype DataFrame。

2.0版本中的新增内容。

返回
DataFrame 或 TextFileReader

逗号分隔值 (csv) 文件作为带有标记轴的二维数据结构返回。

也可以看看

DataFrame.to_csv

将 DataFrame 写入逗号分隔值 (csv) 文件。

read_table

将通用分隔文件读入 DataFrame。

read_fwf

将固定宽度格式行的表读入 DataFrame。

例子

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