我有一个数据框形式的相当大的数据集,我想知道如何将数据框分成两个随机样本(80%和20%),用于训练和测试.

谢谢

推荐答案

我会用numpy的randn:

In [11]: df = pd.DataFrame(np.random.randn(100, 2))

In [12]: msk = np.random.rand(len(df)) < 0.8

In [13]: train = df[msk]

In [14]: test = df[~msk]

只要看看这招奏效了就知道了:

In [15]: len(test)
Out[15]: 21

In [16]: len(train)
Out[16]: 79

Python相关问答推荐

While 循环不工作(函数和 Time.Sleep)

我通过postman 获得状态代码 200,但通过 request.get 我获得状态代码 500

二分搜索:没有得到非常大的值的上限和下限

从 json 文件加载项目描述

Haystack 为预测指定列

在 RDKit 中使用金属ionic 处理 SMILES

从嵌套 for 循环到字典理解?

是否有更好的正则表达式来计算中文字母的数量并同时排除一些字符?

如何将空格替换为字符串中的随机数

如何从多个数据帧创建分层多索引数据帧?

过滤一行代码,只显示某些列

Python:去除成对的列名

将 Python 字典键入为 Dict[key[T], value[K]] 其中 T 和 K 受到限制

如何将过滤的分组聚合的结果分配为原始 Pandas DataFrame 中的新列

如何在Pandas 中按天分组?

使用 Python OpenCV cv2.VideoCapture() 直接以灰度读取视频帧

函数的许多递归调用之一找到了正确的结果,但它不能“告诉”其他函数.有比这种丑陋的解决方法更好的解决方法吗?

如何通过使用 Python OpenCV 去除噪音来检测复选框?

如何减少 Python 中的多个嵌套 if 语句?

如何使用python将数据转储到Json文件中