pandas中提供了丰富且形式多样的可灵活读取文件的工具.在本节中, 将使用pandas对CSV、Excel、JSON和HDF5等格式文件的基本操作进行讲解。
CSV文件
CSV格式的文件在机器学习和数据分析中是最常用的文件格式之一,其是指被逗号(,)或制表符分隔的文本文件,文件扩展名为.csv。
CSV读取
在pandas中读取CSV文件时可以使用read_csv函数。read_csv函数可以灵活的处理复杂的数据读取操作,其中提供了50多个可选参数,在本节将对使用特别频繁的相关参数进行讲解。
官方函数
pd.read_csv( filepath_or_buffer:'FilePath | ReadCsvBuffer[bytes] | ReadCsvBuffer[str]',*, sep:'str | None | lib.NoDefault'=<no_default>, delimiter:'str | None | lib.NoDefault'=None, header:"int | Sequence[int] | None | Literal['infer']"='infer', names:'Sequence[Hashable] | None | lib.NoDefault'=<no_default>, index_col:'IndexLabel | Literal[False] | None'=None, usecols=None, squeeze:'bool | None'=None, prefix:'str | lib.NoDefault'=<no_default>, mangle_dupe_cols:'bool'=True, dtype:'DtypeArg | None'=None, engine:'CSVEngine | None'=None, converters=None, true_values=None, false_values=None, skipinitialspace:'bool'=False, skiprows=None, skipfooter:'int'=0, nrows:'int | None'=None, na_values=None, keep_default_na:'bool'=True, na_filter:'bool'=True, verbose:'bool'=False, skip_blank_lines:'bool'=True, parse_dates=None, infer_datetime_format:'bool'=False, keep_date_col:'bool'=False, date_parser=None, dayfirst:'bool'=False, cache_dates:'bool'=True, iterator:'bool'=False, chunksize:'int | None'=None, compression:'CompressionOptions'='infer', thousands:'str | None'=None, decimal:'str'='.', lineterminator:'str | None'=None, quotechar:'str'='"', quoting:'int'=0, doublequote:'bool'=True, escapechar:'str | None'=None, comment:'str | None'=None, encoding:'str | None'=None, encoding_errors:'str | None'='strict', dialect:'str | csv.Dialect | None'=None, error_bad_lines:'bool | None'=None, warn_bad_lines:'bool | None'=None, on_bad_lines=None, delim_whitespace:'bool'=False, low_memory=True, memory_map:'bool'=False, float_precision:"Literal['high', 'legacy'] | None"=None, storage_options:'StorageOptions'=None,)
参数解析
下面将列出最常见的几个参数,均为可省参数。
参数名 | ㅤ | 参数值范围 | 含义 |
sep | 指定数据间分隔离的字符 | str, default ',' | CSV文件内容默认是用逗号分割开,如果使用制表符(\t)等其他符号分隔,需要sep参数指定。
|
header | 指定列标签 | int | Sequence[int] | None | Literal['infer'] | 为整数n表示指定第n行为df对象的列标签索引,默认为第一行;
为None表示系统自动用从0开始,公差为1的等差数列作为列索引标签 |
names | 自定义列标签 | Sequence[Hashable] | None | lib.NoDefault | header为None时表示将names参数值指定为列索引标签 |
index_col | 指定行标签 | IndexLabel | Literal[False] | None,Default None | 将指定列作为行索引标签,
例如index_col = 1, 表示第2列的值作为行索引标签
例如index_col = name,表示表头为name的那一列作为行索引标签
例如index_col = [”name”, “age”],表示多个列作为行索引标签。 |
use_col | 读取指定列 | list-like or callable or None | 指定需要读取的列标签索引或列位置索引
usecols = [”city”] 表示只读取city列
usecols = [”city”, “salary”] 表示读取两列
usecols = [1, 2, 3, 4] 表示读取4列 |
skiprows | 跳过指定行不读取 | list-like, int or callable | 排除程序对特定行的读取
skiprows = 2 表示前两行不读取
skiprows = [2, 3] 表示第2,3行不读取
|
skipfooter | 跳过末尾n行不读取 | int, default 0 | 跳过末尾n行不读取(常用于末尾行为字符串构成的注释信息情况)
skipfooter=1 表示最后一行不读取 |
engine | 指定使用的解析器 | c | python | 指定读取使用的解析器,c语言或Python解析器
使用skipfooter参数需要使用Python解析器(engine=python),c解析器不支持 |
nrows | 读取指定行 | int | 仅读取前n行数据(不包括表头索引行)
nrows = 0 表示仅读取表头索引行 |
dtype | 指定数据类型 | Type name or dict of column | 指定读取内容的数据类型
dtype = “object” 表示读取的所有内容都为object类型
dtype = {”姓名“: “object”, “年龄”: “int8”, “职业”: “object”, “城市”: “object”, “工资”: “int64”} 表示指定读取列的数据类型 |
parse_datas | 指定列按日期类型读取 | bool or list of int or names or list of lists or dict, default False | 列表形式指定列按照时间类型进行读取, 数据会转化为datetime64[ns]
parse_datas = [’data’] 指定单列
parse_datas = [[’data’, ‘time’]] 指定多列 |
na_values | 指定数据做nan读取 | scalar, str, list-like, or dict, optional | 以列表形式将指定内容作为na缺失值形式读取
na_values = [’None’, ‘?’] 表示将None和?作为缺失值进行读取 |
skip_blank_lines | 指定是否读取空白行 | bool, default True | 是否跳过空白行读取文件,默认True,跳过不读取;为False则读取空白行,并读取并用缺省值填充 |