使用CodeGeeX辅助编写Python数据抽样代码需掌握五种方法:一、pandas DataFrame.sample;二、numpy.random.choice索引抽样;三、random.shuffle后切片;四、sklearn分层抽样;五、pandas.concat联合抽样。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜如果您希望使用CodeGeeX辅助编写Python数据抽样代码,但不确定如何调用内置函数或组织逻辑结构,则可能是由于对pandas、numpy等库的采样接口不熟悉。以下是实现随机选取功能的多种具体方法:
一、使用pandas DataFrame的sample方法
该方法适用于已加载为DataFrame的结构化数据,支持按行随机抽样,并可指定是否放回、抽样比例或固定数量。
1、导入pandas库:
import pandas as pd
2、创建示例DataFrame或读取现有数据:
df = pd.DataFrame({'A': [1,2,3,4,5], 'B': ['x','y','z','w','v']})立即学习“Python免费学习笔记(深入)
”;
3、随机抽取3行且不放回:
sample_df = df.sample(n=3, random_state=42)
4、按比例抽取20%的行:
sample_df = df.sample(frac=0.2, random_state=42)
二、使用numpy.random.choice进行索引级抽样
该方法适用于任意一维数组或需自定义抽样逻辑的场景,直接操作索引位置,灵活性高,可配合原始数据列表或数组使用。
1、导入numpy库:
import numpy as np
2、准备原始数据列表:
data = [10, 20, 30, 40, 50, 60]
3、生成随机索引并提取对应元素:
indices = np.random.choice(len(data), size=3, replace=False)
4、根据索引获取样本:
samples = [data[i] for i in indices]
三、使用random模块对列表进行原地打乱后切片
该方法适用于轻量级抽样需求,无需额外依赖大型库,适合小规模数据或教学演示场景。
1、导入random模块:
import random Python 3.14.3微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。
下载
2、定义待抽样列表:
items = ['apple', 'banana', 'cherry', 'date', 'elderberry']
3、打乱列表顺序:
random.shuffle(items)
4、取前k个元素作为样本:
sample_list = items[:2]
四、使用sklearn.model_selection.train_test_split分层抽样
该方法适用于分类数据,可在保持各类别比例的前提下完成随机划分,常用于机器学习前期的数据准备阶段。
1、导入train_test_split函数:
from sklearn.model_selection import train_test_split
2、准备特征和标签数组:
X = [[1], [2], [3], [4], [5], [6]]; y = [0, 0, 0, 1, 1, 1]
3、按33%比例抽取并保持类别分布:
X_sample, _, y_sample, _ = train_test_split(X, y, test_size=0.33, stratify=y, random_state=42)
4、合并为带标签的样本集(如需):
sampled_data = list(zip(X_sample, y_sample))
五、使用pandas.concat与sample组合实现多表联合随机抽样
该方法适用于多个同结构DataFrame需统一抽样的场景,先纵向拼接再整体抽样,确保样本来源均衡。
1、准备两个DataFrame:
df1 = pd.DataFrame({'id': [1,2,3], 'val': [100,200,300]}); df2 = pd.DataFrame({'id': [4,5,6], 'val': [400,500,600]})
2、垂直拼接数据:
combined = pd.concat([df1, df2], ignore_index=True)
3、从中随机抽取4行:
final_sample = combined.sample(n=4, random_state=123)
4、重置索引以获得连续编号:
final_sample = final_sample.reset_index(drop=True)
