Pandas 如何将DataFrame随机分割成多个较小的DataFrame

Pandas 如何将DataFrame随机分割成多个较小的DataFrame

在本文中,我们将介绍如何使用Pandas将一个大的DataFrame随机拆分成多个较小的DataFrame。这在处理大数据集、进行交叉验证或创建训练集和测试集时非常有用。

阅读更多:Pandas 教程

方法1:使用sample()函数

Pandas中的sample()函数可以从DataFrame中随机选择一定数量的行。通过多次调用该函数,我们可以将DataFrame分割成多个较小的DataFrame。下面是一个示例代码:

import pandas as pd

# 创建一个示例DataFrame
data = {'A': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'B': ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']}
df = pd.DataFrame(data)

# 将DataFrame分割成3个较小的DataFrame
split_df1 = df.sample(frac=0.3, random_state=1)
split_df2 = df.sample(frac=0.3, random_state=2)
split_df3 = df.sample(frac=0.3, random_state=3)

# 打印拆分后的DataFrame
print(split_df1)
print(split_df2)
print(split_df3)
Python

上述代码中,我们首先创建了一个DataFrame对象df,然后使用sample()函数将其分割成三个较小的DataFrame对象。frac参数用于指定要保留的行的比例,random_state参数用于保证每次运行时分割结果的一致性。通过多次调用sample()函数,我们可以实现更多的分割。

方法2:使用numpy库

除了使用Pandas自带的函数,我们还可以使用numpy库来实现DataFrame的随机拆分。下面是一个示例代码:

import pandas as pd
import numpy as np

# 创建一个示例DataFrame
data = {'A': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'B': ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']}
df = pd.DataFrame(data)

# 将DataFrame的索引随机打乱
np.random.seed(1)
df = df.iloc[np.random.permutation(len(df))]

# 计算每个较小DataFrame的长度
length = len(df)
split_length = int(length/3)

# 分割DataFrame成3个较小的DataFrame
split_df1 = df[:split_length]
split_df2 = df[split_length:2*split_length]
split_df3 = df[2*split_length:]

# 打印拆分后的DataFrame
print(split_df1)
print(split_df2)
print(split_df3)
Python

上述代码中,我们使用numpy库的random.seed()函数将DataFrame的索引随机打乱,并用iloc[]函数按打乱后的顺序重新排序DataFrame的行。然后,我们计算出每个较小DataFrame的长度,再使用切片操作将DataFrame分割成三个较小的DataFrame。

方法3:使用sklearn库

如果我们希望按照一定比例将DataFrame分割成训练集和测试集,可以使用sklearn库中的train_test_split()函数。下面是一个示例代码:

import pandas as pd
from sklearn.model_selection import train_test_split

# 创建一个示例DataFrame
data = {'A': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'B': ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']}
df = pd.DataFrame(data)

# 将DataFrame分割成训练集和测试集
train_df, test_df = train_test_split(df, test_size=0.3, random_state=1)

# 打印拆分后的DataFrame
print("训练集:")
print(train_df)
print("测试集:")
print(test_df)
Python

上述代码中,我们首先导入sklearn库中的train_test_split()函数,然后使用该函数将DataFrame分割成训练集和测试集。test_size参数用于指定测试集的比例,random_state参数用于保证每次运行时分割结果的一致性。

总结

本文介绍了三种常用的方法来随机分割一个大的DataFrame成多个较小的DataFrame。方法1使用Pandas的sample()函数,适用于简单的随机分割;方法2使用numpy库,适用于需要对DataFrame进行索引重排序的分割;方法3使用sklearn库的train_test_split()函数,适用于将DataFrame按比例划分为训练集和测试集。

无论使用哪种方法,都可以根据实际需求来灵活地将DataFrame分割为较小的子集,以便进行后续的分析、建模或评估工作。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册