pandas打乱数据集

一、总结

一句话总结:

pandas可以用sample方法返回random sample,可以用reset_index方法reset打乱之后的index



df=df.sample(frac=1.0) #打乱所有数据
df=df.reset_index(drop=True) #打乱后的数据index也是乱的,用reset_index重新加一列index,drop=True表示丢弃原有index一列


 

 

 

二、pandas打乱数据集(测试)







import pandas as pd





1、sample方法




In [8]:





data = pd.read_csv('./iris.data',header=None)
data





Out[8]:



 

0

1

2

3

4

0

5.1

3.5

1.4

0.2

Iris-setosa

1

4.9

3.0

1.4

0.2

Iris-setosa

2

4.7

3.2

1.3

0.2

Iris-setosa

3

4.6

3.1

1.5

0.2

Iris-setosa

4

5.0

3.6

1.4

0.2

Iris-setosa

...

...

...

...

...

...

145

6.7

3.0

5.2

2.3

Iris-virginica

146

6.3

2.5

5.0

1.9

Iris-virginica

147

6.5

3.0

5.2

2.0

Iris-virginica

148

6.2

3.4

5.4

2.3

Iris-virginica

149

5.9

3.0

5.1

1.8

Iris-virginica

150 rows × 5 columns




In [9]:





data=data.sample(frac=1.0)#打乱所有数据
data





Out[9]:



 

0

1

2

3

4

111

6.4

2.7

5.3

1.9

Iris-virginica

16

5.4

3.9

1.3

0.4

Iris-setosa

6

4.6

3.4

1.4

0.3

Iris-setosa

41

4.5

2.3

1.3

0.3

Iris-setosa

31

5.4

3.4

1.5

0.4

Iris-setosa

...

...

...

...

...

...

108

6.7

2.5

5.8

1.8

Iris-virginica

21

5.1

3.7

1.5

0.4

Iris-setosa

146

6.3

2.5

5.0

1.9

Iris-virginica

70

5.9

3.2

4.8

1.8

Iris-versicolor

24

4.8

3.4

1.9

0.2

Iris-setosa

150 rows × 5 columns





为了结果的复现

可以看到设置的种子一样的时候,生成的随机数是一样的




In [19]:





data = pd.read_csv('./iris.data',header=None)
data=data.sample(frac=1.0,random_state=11)#打乱所有数据
data





Out[19]:



 

0

1

2

3

4

112

6.8

3.0

5.5

2.1

Iris-virginica

145

6.7

3.0

5.2

2.3

Iris-virginica

133

6.3

2.8

5.1

1.5

Iris-virginica

56

6.3

3.3

4.7

1.6

Iris-versicolor

111

6.4

2.7

5.3

1.9

Iris-virginica

...

...

...

...

...

...

76

6.8

2.8

4.8

1.4

Iris-versicolor

13

4.3

3.0

1.1

0.1

Iris-setosa

81

5.5

2.4

3.7

1.0

Iris-versicolor

91

6.1

3.0

4.6

1.4

Iris-versicolor

80

5.5

2.4

3.8

1.1

Iris-versicolor

150 rows × 5 columns





2、reset_index方法可以重新设置index(打乱数据集之后)




In [6]:





data = pd.read_csv('./iris.data',header=None)
data





Out[6]:



 

0

1

2

3

4

0

5.1

3.5

1.4

0.2

Iris-setosa

1

4.9

3.0

1.4

0.2

Iris-setosa

2

4.7

3.2

1.3

0.2

Iris-setosa

3

4.6

3.1

1.5

0.2

Iris-setosa

4

5.0

3.6

1.4

0.2

Iris-setosa

...

...

...

...

...

...

145

6.7

3.0

5.2

2.3

Iris-virginica

146

6.3

2.5

5.0

1.9

Iris-virginica

147

6.5

3.0

5.2

2.0

Iris-virginica

148

6.2

3.4

5.4

2.3

Iris-virginica

149

5.9

3.0

5.1

1.8

Iris-virginica

150 rows × 5 columns




In [7]:





data=data.sample(frac=1.0)#打乱所有数据
data=data.reset_index(drop=True) #打乱后的数据index也是乱的,用reset_index重新加一列index,drop=True表示丢弃原有index一列
data





Out[7]:



 

0

1

2

3

4

0

5.5

2.3

4.0

1.3

Iris-versicolor

1

6.7

3.0

5.0

1.7

Iris-versicolor

2

5.6

2.9

3.6

1.3

Iris-versicolor

3

7.7

2.8

6.7

2.0

Iris-virginica

4

5.4

3.0

4.5

1.5

Iris-versicolor

...

...

...

...

...

...

145

6.3

3.3

6.0

2.5

Iris-virginica

146

6.2

2.2

4.5

1.5

Iris-versicolor

147

4.7

3.2

1.6

0.2

Iris-setosa

148

5.7

2.6

3.5

1.0

Iris-versicolor

149

5.4

3.9

1.7

0.4

Iris-setosa

150 rows × 5 columns




In [ ]:


 


 

 

三、pandas打乱数据集(参照)




在机器学习中,拿到一堆训练数据,一般会我们需要先将数据打乱,使数据随机排序,然后在进行切分,需要将数据切分成训练集、交叉验证集和测试集,在监督学习中还要切分出属性集和标签集。

(注:df代表一个DataFrame)

1.打乱数据

df=df.sample(frac=1.0)#打乱所有数据

df=df.reset_index(drop=True)#打乱后的数据index也是乱的,用reset_index重新加一列index,drop=True表示丢弃原有index一列

2.切割数据

train=df.iloc[:a]#取数据的前a行为训练集

x_train=train.iloc[:,:b]#取训练集的前b列为属性集

y_train=train.iloc[:,b:]#取训练集的最后一列标签集

 


我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: ​​fanrenyi.com​​;有各种前端、后端、算法、大数据、人工智能等课程。

人工智能群:939687837

作者相关推荐

感悟总结

其它重要感悟总结

​感悟总结200813​​ ​ ​最近心境200830​​ ​ ​最近心境201019​​ ​ ​201218-210205​