【数据挖掘】Python数据分析和挖掘实战--随机打乱DataFrame中的数据(含代码和效果)

写在前面:
首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。

路虽远,行则将至;事虽难,做则必成。只要有愚公移山的志气、滴水穿石的毅力,脚踏实地,埋头苦干,积跬步以至千里,就一定能够把宏伟目标变为美好现实。

今天在项目中,需要将pandas读取得到的数据随机打乱,该数据是DataFrame类型,特此记录。

1、方法一

使用sklearn中的shuffle实现数据打乱功能,具体代码如下:

from sklearn.utils import shuffle
import pandas as pd
 
data = {
    "a": [0, 1, 2, 3, 4, 12, 13, 14],
    "b": [2, 4, 5, 6, 4, 15, 16, 17],
    "c": [4, 7, 8, 9,3, 18, 19, 20],
    "d": [55, 1, 2, 3, 4, 12, 133, 14],
    "e": [29, 4, 5, 6, 4, 15, 126, 17],
    "f": [6, 7, 8, 9,3, 18, 149, 260]}

df = pd.DataFrame(data)
print(df)

# 打乱数据
df_new = shuffle(df)
print(df_new)

打印结果:

    a   b   c    d    e    f
0   0   2   4   55   29    6
1   1   4   7    1    4    7
2   2   5   8    2    5    8
3   3   6   9    3    6    9
4   4   4   3    4    4    3
5  12  15  18   12   15   18
6  13  16  19  133  126  149
7  14  17  20   14   17  260
-----------------------------------
    a   b   c    d    e    f
6  13  16  19  133  126  149
4   4   4   3    4    4    3
0   0   2   4   55   29    6
5  12  15  18   12   15   18
1   1   4   7    1    4    7
2   2   5   8    2    5    8
7  14  17  20   14   17  260
3   3   6   9    3    6    9

df里面数据:

在这里插入图片描述
df_new里面数据:

在这里插入图片描述

2、方法二

使用numpy库对数据进行打乱,具体代码如下:

import numpy as np  
import pandas as pd
 
data = {
    "a": [0, 1, 2, 3, 4, 12, 13, 14],
    "b": [2, 4, 5, 6, 4, 15, 16, 17],
    "c": [4, 7, 8, 9,3, 18, 19, 20],
    "d": [55, 1, 2, 3, 4, 12, 133, 14],
    "e": [29, 4, 5, 6, 4, 15, 126, 17],
    "f": [6, 7, 8, 9,3, 18, 149, 260]}

df = pd.DataFrame(data)
print(df)

print("-----------------------------------")

# 打乱DataFrame的索引  
df_new_2 = df.iloc[np.random.permutation(len(df))]  
print(df_new_2)

df_new_2里面的数据:

在这里插入图片描述

3、方法三

使用DataFrame自带的方法,具体代码如下:

import pandas as pd
 
data = {
    "a": [0, 1, 2, 3, 4, 12, 13, 14],
    "b": [2, 4, 5, 6, 4, 15, 16, 17],
    "c": [4, 7, 8, 9,3, 18, 19, 20],
    "d": [55, 1, 2, 3, 4, 12, 133, 14],
    "e": [29, 4, 5, 6, 4, 15, 126, 17],
    "f": [6, 7, 8, 9,3, 18, 149, 260]}

df = pd.DataFrame(data)
print(df)

# 打乱DataFrame的顺序
df_new_3 = df.sample(frac=1)
# df_new_3 = df.sample(frac=1).reset_index(drop=True)
print(df_new_3)

df_new_3里面的数据:

在这里插入图片描述

sample(frac=1)会按照随机顺序对DataFrame进行抽样,实现了打乱DataFrame的顺序。reset_index(drop=True)会重置索引,使得索引按照新的顺序重新排列。如果使用了reset_index(drop=True),df_new_3里面的数据:

在这里插入图片描述
可以看到,索引重置了。

下面是sample()方法的一些常用参数和详细介绍:

  • n:要抽取的行数或列数,可以是整数。默认为1。
  • frac:要抽取的行数或列数占原DataFrame的比例,取值范围为[0,1]。n和frac参数只能同时指定一个,如果同时指定了两个,优先使用n参数。
  • replace:是否允许重复抽样,默认为False。如果设为True,则抽取的样本中可能包含重复的行或列。
  • weights:行或列的权重列表,用于指定每行或每列被抽取的概率。
  • axis:抽取的方向,0表示按行抽取,1表示按列抽取,默认为0。
  • random_state:随机数种子,用于控制随机抽样的结果可以重现。

好了,今天的分享就到这里结束了,不足之处还请各位见谅,欢迎在评论区补充。

参考资料:

https://blog.csdn.net/sinat_41858359/article/details/130186566
https://blog.csdn.net/weixin_45503064/article/details/136713380

在这里插入图片描述

请扫码关注下方的公众号,让我们共同进步吧。
在这里插入图片描述

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器不学习我学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值