文件读写
00 min
2024-5-13
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,)
notion image

参数解析

下面将列出最常见的几个参数,均为可省参数。
参数名
参数值范围
含义
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则读取空白行,并读取并用缺省值填充

CSV写入.