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, 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, iterator=False, chunksize=None, compression='infer', thousands=None, decimal=b'.', lineterminator=None, quotechar='"', quoting=0, doublequote=True, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=None, error_bad_lines=True, warn_bad_lines=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None)
将逗号分隔值(csv)文件读入DataFrame。还支持可选地将文件迭代或分解为块。可以在IO Tools的在线文档中找到其他帮助。
参数: | filepath_or_buffer: 对象任何有效的字符串路径 都是可接字符串可以是URL。 有效的 对于文件URL,需要host。 本地文件可以是:file://localhost/path/to/table.csv。 如果要传入路径对象,pandas接受 或 通过类似文件的对象,我们使用 例如文件处理程序(例如,通过内置的open函数)或 sep: 则C引擎无法自动检测分隔符,但Python解析引擎可以, 这意味着后者将被使用并通过Python的内置嗅探器工具
此外,长度超过1个字符且与' 将被解释为正则表达式, 并且还将强制使用Python解析引擎。请注意, 正则表达式分隔符很容易忽略引用的数据。 正则表达式示例:' delimiter: header:int,int列表,默认' 用作列名的行号和数据的开头。 默认行为是推断列名称:如果没有传递名称, 则行为与header = 0相同, 并且从文件的第一行推断列名称,如果显式传递列名, 则行为与
标题可以是整数列表,其指定列上的多索引的行位置, 例如, (例如,跳过此示例中的2)。 请注意,此参数忽略注释行和空行if skip_blank_lines = True, 因此 names:array-like,可选 要使用的列名列表。 如果文件不包含标题行, 则应显式传递 此列表中的重复项将导致发出UserWarning。 index_col: 可选 用作 如果给出序列,则使用 如果在每行末尾有一个带有分隔符的格式错误的文件, 您可能会考虑使用 来强制pandas不使用第一列作为索引(行名称)。 usecols:list-like或callable,optional 返回列的子集。 如果类似列表,则所有元素必须是位置(即文档列中的整数索引) 或与用户名称或从文档标题行推断的列名对应的字符串。 例如,有效的类似列表的usecols参数将是 或 元素顺序被忽略,因此 要从保留了元素顺序的数据中实例化DataFrame, 请使用 作为
为 如果是可调用的,则将根据列名评估可调用函数, 返回可调用函数求值为 有效可调用参数的一个例子是
使用此参数可以大大加快解析时间并降低内存使用率。 squeeze: 则返回一个 prefix: 例如'X'代表X0,X1,...... mangle_dupe_cols: 重复的列将被指定为'X','X.1',...'X.N', 而不是'X'...'X'。如果列中存在重复的名称, 则传入False将导致数据被覆盖。 dtype:列的名称或字典 -> type,optional 数据或列的数据类型。 例如, 将 设置一起使用以保留和不解释 如果指定了转换器,则它们将应用于 engine: C引擎速度更快, 而python引擎目前功能更加完善。 converters: 键可以是整数或列标签。 true_values: false_values: skipinitialspace: skiprows:list-like,int或callable,optional 要在文件开头跳过 (0索引)或要跳过的行数(int)的行号。 如果是可调用的,则将根据行索引计算可调用函数, 如果应该跳过该行则返回True,否则返回 有效可调参数的一个例子是 skipfooter: (不支持 nrows: na_values:标量,str,list-like或dict, 可选 要识别为NA / NaN的其他字符串。 如果dict通过,则具体的每列NA值。默认情况下, 以下值被解释为
keep_default_na:bool,默认为 解析数据时是否包含默认 根据是否传入 如果 并且指定了 将附加到用于解析的默认 如果 则仅使用默认 如果 则仅使用指定的 如果 则不会将任何字符串解析为 请注意,如果将 则将忽略 na_filter: (空字符串和 在没有任何NA的数据中,传递 可以提高读取大文件的性能。 verbose: 指示放置在非数字列中的NA值的数量。 skip_blank_lines: 则跳过空行而不是解释为 parse_dates: 默认为 行为如下: 1)布尔值。如果为 2)int或名称列表。例如, 如果 为一个单独的日期列。 3)列表清单。例如, 如果 并解析为单个日期列。 4)dict,例如, 并调用结果 如果列或索引不能表示为日期时间数组,例如由于不可解析的值 或时区的混合, 则列或索引将作为对象数据类型以不变的方式返回。 对于非标准日期时间解析, 请在 要使用时区混合解析索引或列, 请将date_parser指定为部分应用的 其中 有关详细信息,请参阅使用混合时区解析CSV。 注意:iso8601格式的日期存在快速路径。 infer_datetime_format: 如果启用了 pandas将尝试推断列中日期时间字符串的格式, 如果可以推断, 请切换到更快的解析方法。在某些情况下, 这可以将解析速度提高5-10倍。 keep_date_col: 如果 则保留原始列。 date_parser: 时间实例数组的函数。 默认使用 Pandas将尝试以三种不同的方式调用 如果发生异常则前进到下一个: 1)将一个或多个数组(由 2)将parse_datesin定义的列中的字符串值连接(逐行)到单个数组并传递; 3)使用一个或多个字符串(对应于 为每一行调用 dayfirst: iterator: 对象以进行迭代或使用 chunksize: 有关iterator和chunksize的更多信息,请参阅IO Tools文档。 compression: 、默认' 如果 则从以下扩展中检测压缩: ‘ 如果使用' 则ZIP文件必须只包含一个要读入的数据文件。 设置为 支持' thousands: decimal: (例如,对于欧洲数据使用‘ lineterminator: 仅对C解析器有效。 quotechar: 和结尾的字符。 引用的项目可以包括分隔符,它将被忽略。 quoting: 常量的控制字段引用行为。 使用 或 doublequote: 且引用不是 请指明是否将一个字段中的两个连续的 元素解释为单个 escapechar: 用于转义其他字符的单字符字符串。 comment: 如果在行的开头找到, 则该行将被完全忽略。此参数必须是单个字符。 与空行一样(只要 参数标题将忽略完全注释的行,但不会被跳过。 例如,如果
将导致' encoding: Python标准编码列表。 dialect: 此参数将覆盖以下参数的值(默认值或不默认值):
如果需要覆盖值,则会发出ParserWarning。有关更多详细信息, 请参阅 tupleize_cols: (默认是在列上转换为MultiIndex)。 自版本0.21.0后不推荐使用:此参数将被删除, 并始终转换为MultiIndex error_bad_lines: (例如,带有太多逗号的csv行)将默认导致引发异常, 并且不会返回任何 那么这些“坏行”将从返回的 warn_bad_lines: 如果error_bad_lines为 并且 delim_whitespace: (例如 相当于设置 则不应为 版本0.18.1中的新增功能:支持Python解析器。 low_memory: 导致在解析时使用较少的内存, 但可能是混合类型推断。要确保没有混合类型, 请设置 或使用dtype参数指定类型。请注意, 整个文件都被读入单个 使用 (仅对C解析器有效)。 memory_map: 如果为 则将文件对象直接映射到内存并直接从那里访问数据。 使用此选项可以提高性能,因为不再有任何I / O开销。 float_precision: 指定C引擎应该将哪个转换器用于浮点值。 普通转换器的选项为 往返转换器的选项为 |
返回: |
作为具有标记轴的二维数据结构返回。 |
例如,
1)基本读取
import pandas as pd # 创建示例数据 data = { 'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'], 'age': [25, 30, 35, 40, 45], 'city': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'], 'date_of_birth': ['1995-05-01', '1990-07-14', '1985-08-23', '1980-12-11', '1975-04-05'] } # 创建 DataFrame df = pd.DataFrame(data) # 将 DataFrame 写入 CSV 文件 df.to_csv('data.csv', index=False) # 读取 CSV 文件 df = pd.read_csv('data.csv') # 显示 DataFrame print(df)
2)指定列名
import pandas as pd # 创建示例数据 data = { 'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'], 'age': [25, 30, 35, 40, 45], 'city': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'], 'date_of_birth': ['1995-05-01', '1990-07-14', '1985-08-23', '1980-12-11', '1975-04-05'] } # 创建 DataFrame df = pd.DataFrame(data) # 将 DataFrame 写入 CSV 文件 df.to_csv('data.csv', index=False) # 读取 CSV 文件的特定列 df = pd.read_csv('data.csv', usecols=['name', 'city']) # 显示 DataFrame print(df)
3)将某列设置为索引
import pandas as pd # 创建示例数据 data = { 'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'], 'age': [25, 30, 35, 40, 45], 'city': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'], 'date_of_birth': ['1995-05-01', '1990-07-14', '1985-08-23', '1980-12-11', '1975-04-05'] } # 创建 DataFrame df = pd.DataFrame(data) # 将 DataFrame 写入 CSV 文件 df.to_csv('data.csv', index=False) # 读取 CSV 文件并将 name 列设置为索引 df = pd.read_csv('data.csv', index_col='name') # 显示 DataFrame print(df)
4)解析日期列
import pandas as pd # 创建示例数据 data = { 'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'], 'age': [25, 30, 35, 40, 45], 'city': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'], 'date_of_birth': ['1995-05-01', '1990-07-14', '1985-08-23', '1980-12-11', '1975-04-05'] } # 创建 DataFrame df = pd.DataFrame(data) # 将 DataFrame 写入 CSV 文件 df.to_csv('data.csv', index=False) # 读取 CSV 文件并解析日期列 df = pd.read_csv('data.csv', parse_dates=['date_of_birth']) # 显示 DataFrame print(df) print(df.dtypes)
5)读取 CSV 文件并对字符串进行操作
import pandas as pd # 创建示例数据并写入 CSV 文件 data = [ 'Alice,25,New York', 'Bob,30,Los Angeles', 'Charlie,35,Chicago', 'David,40,Houston', 'Eva,45,Phoenix' ] # 将数据写入文件 with open('file.csv', 'w') as f: for line in data: f.write(line + '\n') # 读取 CSV 文件 s = pd.read_csv('file.csv', sep=r'|', header=None).squeeze("columns") # 分割字符串并展开为 DataFrame,计算逗号的数量 result = pd.concat([ s.str.split(',', expand=True), s.str.count(',').rename('_count_sep') ], axis=1) # 打印结果 print(result)