Datasets库
数据集加载与访问
load_dataset(path, name=None, split=None, **kwargs)
:加载公开或本地数据集,支持 Hugging Face Hub 地址、本地文件路径及多种数据格式load_from_disk(dataset_path)
:加载已保存到本地磁盘的Dataset
或DatasetDict
对象
数据集处理与转换
Dataset.map(function, batched=False,** kwargs)
:对数据集进行逐样本或批量处理,支持自定义转换逻辑(包括数据添加、数据产出等)Dataset.filter(function, **kwargs)
:根据条件筛选样本,保留符合条件的记录Dataset.train_test_split(test_size=0.2, shuffle=True)
:将数据集拆分为训练集和测试集Dataset.select(indices)
:根据索引列表选择特定样本Dataset.remove_columns(columns)
:删除数据集中的指定列Dataset.rename_column(old_name, new_name)
:重命名数据集的列
数据集格式转换与保存
Dataset.save_to_disk(dataset_path)
:将数据集以二进制格式保存到本地磁盘Dataset.to_pandas()
:将数据集转换为 Pandas DataFrame 格式DatasetDict.push_to_hub(repo_id)
:将数据集上传到 Hugging Face Hub 共享
数据集信息与查看
Dataset.info
:查看数据集的元信息(描述、许可证、作者等)Dataset.features
:查看数据集的特征结构(列名及数据类型)Dataset.shuffle(seed=None)
:随机打乱数据集顺序
批量处理与迭代
Dataset.iter(batch_size=1, shuffle=False)
:按指定批次大小迭代数据集Dataset.with_format(format,** kwargs)
:指定数据集的输出格式(如 torch、tensorflow、numpy)
Pandas库
一、数据加载与保存
pandas.read_csv(filepath_or_buffer, **kwargs)
:读取 CSV 格式文件,生成 DataFramepandas.read_excel(io, **kwargs)
:读取 Excel 格式文件(需安装 openpyxl/xlsxwriter 依赖)pandas.read_json(path_or_buf, **kwargs)
:读取 JSON 格式数据pandas.read_sql(sql, con, **kwargs)
:从数据库读取数据(需数据库连接对象 con)DataFrame.to_csv(path_or_buf, **kwargs)
:将 DataFrame 保存为 CSV 文件DataFrame.to_excel(excel_writer, **kwargs)
:将 DataFrame 保存为 Excel 文件DataFrame.to_json(path_or_buf, **kwargs)
:将 DataFrame 保存为 JSON 格式DataFrame.to_sql(name, con, **kwargs)
:将 DataFrame 写入数据库表
二、数据查看与基础信息获取
DataFrame.head(n=5)
:查看 DataFrame 前 n 行数据(默认 5 行)DataFrame.tail(n=5)
:查看 DataFrame 后 n 行数据(默认 5 行)DataFrame.info(verbose=None, show_counts=None)
:查看数据类型、非空值数量等基础信息DataFrame.describe(percentiles=None, include=None, exclude=None)
:查看数值型数据的统计信息(均值、标准差、分位数等)DataFrame.shape
:返回 DataFrame 的行数和列数(格式:(行数,列数))DataFrame.columns
:查看 DataFrame 的所有列名DataFrame.index
:查看 DataFrame 的行索引DataFrame.dtypes
:查看每列的数据类型DataFrame.isnull().sum()
:统计每列的缺失值数量
三、数据清洗
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
:删除包含缺失值的行或列DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None)
:填充缺失值(支持固定值、均值、中位数、前向 / 后向填充)DataFrame.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False)
:删除重复行DataFrame.replace(to_replace=None, value=None, inplace=False, regex=False)
:替换数据中的特定值(支持单值、字典、正则匹配)DataFrame.astype(dtype, copy=True, errors='raise')
:转换列的数据类型DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwargs)
:对行或列应用自定义函数进行数据处理DataFrame.map(func, na_action=None)
:对 Series(单列)应用映射函数DataFrame.str.strip(to_strip=None)
:去除字符串列的前后空白字符(需调用 str 属性)DataFrame.str.lower()
/DataFrame.str.upper()
:将字符串列转换为小写 / 大写(需调用 str 属性)DataFrame.interpolate(method='linear', axis=0, limit=None, inplace=False)
:通过插值法填充缺失值(适合时序数据)
四、数据选择与筛选
DataFrame[col_name]
:按列名选择单个列(返回 Series)DataFrame[[col1, col2, ...]]
:按列名列表选择多个列(返回 DataFrame)DataFrame.loc[row_indexer, col_indexer]
:按行标签和列标签选择数据(支持切片、条件筛选)DataFrame.iloc[row_indexer, col_indexer]
:按行索引和列索引(整数位置)选择数据DataFrame.query(expr, inplace=False, **kwargs)
:通过字符串表达式筛选行(如 "age > 30 and gender == 'male'")DataFrame[condition]
:通过布尔条件筛选行(condition 为与 DataFrame 行数一致的布尔数组)DataFrame.filter(items=None, like=None, regex=None, axis=None)
:按列名的关键词匹配 / 正则匹配选择列
五、数据排序与排名
DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, ignore_index=False)
:按指定列的值排序(支持多列排序)DataFrame.sort_index(axis=0, ascending=True, inplace=False, ignore_index=False)
:按行索引排序DataFrame.rank(axis=0, method='average', numeric_only=None, na_option='keep', ascending=True, pct=False)
:对数值型数据进行排名(支持平均排名、稠密排名等方式)
六、数据聚合与分组
DataFrame.groupby(by, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, observed=False, dropna=True)
:按指定列或条件分组,返回 GroupBy 对象GroupBy.agg(func, axis=0, *args, **kwargs)
:对分组后的数据应用聚合函数(如 sum、mean、count,支持多函数)GroupBy.sum(numeric_only=None)
:计算分组内数值型数据的总和GroupBy.mean(numeric_only=None)
:计算分组内数值型数据的均值GroupBy.count()
:统计分组内非空值的数量GroupBy.max(numeric_only=None)
/GroupBy.min(numeric_only=None)
:计算分组内数值型数据的最大值 / 最小值GroupBy.first()
/GroupBy.last()
:获取分组内的第一行 / 最后一行数据DataFrame.pivot_table(values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All', observed=False, sort=True)
:创建透视表,实现多维度数据聚合
七、数据合并与连接
pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
:按指定键合并两个 DataFrame(支持内连接、外连接、左连接、右连接)DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)
:按索引合并两个 DataFrame(默认左连接)pandas.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True)
:拼接多个 DataFrame 或 Series(支持纵向拼接、横向拼接)DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=False)
:在 DataFrame 末尾追加另一个 DataFrame 或 Series(已过时,推荐用 concat)
八、数据重塑与转换
DataFrame.pivot(index=None, columns=None, values=None)
:将长格式数据转换为宽格式(需确保索引和列的组合唯一)DataFrame.melt(id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None, ignore_index=True)
:将宽格式数据转换为长格式DataFrame.stack(level=-1, dropna=True)
:将列索引转换为行索引(数据堆叠,宽表转长表)DataFrame.unstack(level=-1, fill_value=None)
:将行索引转换为列索引(数据解堆叠,长表转宽表)DataFrame.transpose(copy=True)
/DataFrame.T
:交换 DataFrame 的行和列(转置)DataFrame.explode(column, ignore_index=False)
:将包含列表的列展开为多行(每行对应列表中的一个元素)
九、时间序列数据处理
pandas.to_datetime(arg, errors='raise', dayfirst=False, yearfirst=False, utc=None, format=None, exact=True, unit=None, infer_datetime_format=False, origin='unix', cache=True)
:将字符串或数值转换为 datetime 类型DataFrame.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)
:将 datetime 列设为行索引,构建时序索引DataFrame.resample(rule, axis=0, closed=None, label=None, convention='start', kind=None, loffset=None, base=0, on=None, level=None, origin='start_day', offset=None)
:按指定时间频率重采样(如按日、按月、按小时,支持聚合计算)DataFrame.shift(periods=1, freq=None, axis=0, fill_value=None)
:将时序数据按指定步长平移(用于计算差分、滞后值)DataFrame.rolling(window, min_periods=1, center=False, win_type=None, on=None, axis=0, closed=None, method='single')
:创建滚动窗口对象,支持滚动均值、滚动标准差等计算DataFrame.expanding(min_periods=1, center=False, axis=0, method='single')
:创建扩展窗口对象,计算从起始到当前的累积统计量
Dataloader库
一、核心数据加载类
torch.utils.data.DataLoader(dataset, batch_size=1, shuffle=False, sampler=None, batch_sampler=None, num_workers=0, collate_fn=None, pin_memory=False, drop_last=False, timeout=0, worker_init_fn=None, multiprocessing_context=None, generator=None, prefetch_factor=2, persistent_workers=False, pin_memory_device='')
:核心数据加载器,将数据集按批次加载,支持多进程加速、随机打乱、自定义批处理逻辑等,是训练 / 推理时数据输入模型的关键入口。torch.utils.data.Dataset
:数据集抽象基类,自定义数据集需继承此类并实现 __getitem__
(按索引获取单样本)和 __len__
(返回数据集总样本数)方法,为 DataLoader 提供数据来源。
二、数据集拆分与采样类
torch.utils.data.TensorDataset(*tensors)
:用于包装张量数据的数据集类,将多个张量按第一维度对齐,支持通过索引获取对应位置的张量组合(如输入特征张量与标签张量)。torch.utils.data.ConcatDataset(datasets)
:将多个数据集(需同类型)拼接为一个整体数据集,方便统一加载多来源数据。torch.utils.data.Subset(dataset, indices)
:从指定数据集中按索引列表提取子集,常用于手动划分训练集 / 验证集(如基于 train_test_split
结果创建子集)。torch.utils.data.random_split(dataset, lengths, generator=None)
:按指定长度比例随机拆分数据集为多个子集(如按 [0.8, 0.2] 拆分训练集与验证集),内部通过 Subset
实现。torch.utils.data.Sampler(data_source)
:采样器抽象基类,定义数据集的索引采样逻辑,为 DataLoader 提供 “按何种顺序读取样本” 的规则。torch.utils.data.RandomSampler(data_source, replacement=False, num_samples=None, generator=None)
:随机采样器,打乱样本索引顺序,实现 DataLoader 的 shuffle=True
功能(默认采样器)。torch.utils.data.SequentialSampler(data_source)
:顺序采样器,按数据集原始索引顺序采样,对应 DataLoader 的 shuffle=False
场景。torch.utils.data.SubsetRandomSampler(indices)
:子集随机采样器,仅从指定索引列表中随机采样,适合固定子集的随机加载(如验证集随机打乱)。torch.utils.data.BatchSampler(sampler, batch_size, drop_last)
:批采样器,将基础采样器(如 RandomSampler)生成的单个索引打包为批次索引,控制每批样本的组成。
三、数据批处理与辅助函数
torch.utils.data.default_collate(batch)
:DataLoader 默认的批处理函数,将批次内的单样本(如张量、列表、字典)拼接为批量张量(如单样本张量→批量张量,字典值对应拼接),支持自动类型转换与维度对齐。torch.utils.data.collate_fn
(自定义):自定义批处理函数,用于处理默认 default_collate
无法适配的样本格式(如变长序列、非张量数据),需接收 “样本列表” 并返回 “批量数据”。torch.utils.data.get_worker_info()
:在多进程加载(num_workers>0
)时,获取当前工作进程的信息(如进程 ID、总进程数、数据集分片),用于实现进程级的数据预处理(如分片加载数据,避免重复处理)。torch.utils.data.worker_init_fn(worker_id)
:多进程加载时的工作进程初始化函数,可在每个子进程启动时执行自定义逻辑(如设置随机种子、加载进程专属资源),避免多进程间随机状态一致导致的数据重复。
四、数据加载优化相关
pin_memory=True
(DataLoader 参数):启用内存固定,将加载的批量张量存入 GPU 可直接访问的锁定内存,减少数据从 CPU 到 GPU 的传输延迟,提升训练效率(需配合 GPU 训练使用)。persistent_workers=False
(DataLoader 参数):控制多进程加载的工作进程是否持久化,设为 True
时,训练 / 推理过程中工作进程不关闭,避免反复创建 / 销毁进程的开销,适合长期运行的任务。prefetch_factor=2
(DataLoader 参数):预加载因子,控制每个工作进程提前加载的批次数(如 prefetch_factor=2
表示每个进程提前准备 2 批数据),平衡数据加载与模型计算的速度,避免模型等待数据。