- 导入模块和数据集
首先,我们需要导入需要的模块和数据集,例如:
import pandas as pd
import numpy as np
# 加载数据集
dataset = pd.read_csv('data.csv')
- 手动shuffle
手动打乱数据的方法很简单,我们只需要使用numpy.random.permutation()函数,它会返回乱序后的索引,然后我们就可以根据这些索引来重新排列数据集了。
# 生成随机索引
shuffle_index = np.random.permutation(len(dataset))
# 使用随机索引重新排列数据集
shuffled_dataset = dataset.iloc[shuffle_index]
我们可以使用iloc()方法根据新的索引重新排列数据集。
- Padas中的shuffle方法
另一个更方便的方法是使用Pandas的sample()函数。这个函数会在不改变索引的情况下,随机选择数据集中的指定比例的数据。
# 使用sample函数打乱数据
shuffled_dataset = dataset.sample(frac=1)
这里的frac参数代表需要选取的比例,根据我们的需求来设定即可。
- 示例说明
假设我们有一份名为data.csv的数据集,它有3列,分别是name, age和score,我们希望对数据集打乱顺序,让它变得更加随机。下面是具体的代码示例:
# 导入模块和数据集
import pandas as pd
import numpy as np
dataset = pd.read_csv('data.csv')
# 手动shuffle数据
shuffle_index = np.random.permutation(len(dataset))
shuffled_dataset_manually = dataset.iloc[shuffle_index]
# 使用Pandas中的sample函数打乱数据
shuffled_dataset_pandas = dataset.sample(frac=1)
# 输出shuffle后的数据集
print("手动shuffle之后的数据集:")
print(shuffled_dataset_manually.head(10))
print("使用Pandas中的sample()函数shuffle之后的数据集:")
print(shuffled_dataset_pandas.head(10))
输出结果如下:
手动shuffle之后的数据集:
name age score
628 李洋洋 26 78
988 王利斌 29 69
90 张宇鹏 28 87
396 何保平 22 89
213 郑园园 24 83
232 张扬扬 20 80
699 李桂英 29 81
310 贺晨光 28 76
907 陈雅琳 27 84
321 姜鹏 21 81
使用Pandas中的sample()函数shuffle之后的数据集:
name age score
569 刘天宇 24 84
564 王颖婷 28 88
777 金明明 23 81
15 宋建涛 30 78
313 王瑞 25 79
674 刘倩 30 80
355 王志刚 23 81
338 李洪宇 26 79
292 宋良 28 74
177 刘红 30 86
可以看出,手动shuffle和使用Pandas的sample()函数的结果是不一样的,但它们都能成功打乱数据集。具体使用哪种方法取决于我们自己的需求。