按比例划分DataFrame


Pandas库用于数据操作和分析。数据将通过两种方式使用pandas库创建:DataFrame和Series。DataFrame是包含行和列的二维数据结构。

根据比例划分DataFrame数据的方法有很多。让我们一一来看。

  • 使用np.random.rand()

  • 使用pandas.DataFrame.sample()

  • 使用numpy.split()

使用numpy.random.rand()

在下面的示例中,我们将使用randm.rand()函数通过定义比例将dataframe数据分成几部分。如果我们想按60%和40%的比例划分数据,我们将比例定义为0.6和0.4。

import numpy as np
ratio = np.random.rand(dataframe)
dataframe[ratio comparision_operator value]

示例

在下面的示例中,我们将使用randm.rand()函数通过定义比例将dataframe数据分成几部分。如果我们想按60%和40%的比例划分数据,我们将比例定义为0.6和0.4。

import numpy as np
import pandas as pd
data=pd.read_csv("https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv")
data = data[:20]
ratio = np.random.rand(len(data))
train_data = data[ratio < 0.6]
train_data.head()
test_data = data[ratio >= 0.6]
test_data.head()

输出

    PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
4             5         0       3  ...   8.0500   NaN         S
8             9         1       3  ...  11.1333   NaN         S
10           11         1       3  ...  16.7000    G6         S
14           15         0       3  ...   7.8542   NaN         S
17           18         1       2  ...  13.0000   NaN         S

[5 rows x 12 columns]

使用pandas.DataFrame.sample()

另一种按比例划分DataFrame的方法是使用sample()函数与DataFrame一起使用。它接受两个参数:frac用于定义分数,random_state用于获取随机数生成器的种子值。

语法

以下是语法。

dataframe.sample(frac,random_state)

示例

在下面的示例中,我们使用pandas库中提供的sample()函数,将数据按50%和50%的比例分成两部分。

import pandas as pd
dic = {"Letters":['A','B','C','D','E','F','G','H'],
      "Number":[1,2,3,4,5,6,7,8]}
data = pd.DataFrame(dic)
print("The Original data:")
print(data)
print("The 50% of the original data")
train_data = data.sample(frac = 0.5, random_state = 40)
print(train_data)
print("Another 50% of the data")
test_data = data.drop(train_data.index)
print(test_data)

输出

The Original data:
  Letters  Number
0       A       1
1       B       2
2       C       3
3       D       4
4       E       5
5       F       6
6       G       7
7       H       8
The 50% of the original data
  Letters  Number
7       H       8
1       B       2
2       C       3
4       E       5
Another 50% of the data
  Letters  Number
0       A       1
3       D       4
5       F       6
6       G       7

使用numpy.split()函数

另一种基于比例划分dataframe的方法是numpy.split()。在Numpy库中,我们有split()函数,它接受dataframe以及比例*dataframe长度。

语法

以下是语法。

numpy.split(dataframe,[int(ratio*len(dataframe))

示例

下面的示例使用numpy.split()函数将dataframe按70%和30%的比例划分。

import pandas as pd
import numpy as np
dic = {"Letters":['A','B','C','D','E','F','G','H'],
      "Number":[1,2,3,4,5,6,7,8]}
data = pd.DataFrame(dic)
print("The Original data:")
print(data)
print("The 70% of the original data")
train_data, test_data= np.split(data,[int(0.7*len(data))])
print(train_data)
print("Another 30% of the data")
print(test_data)

输出

The Original data:
  Letters  Number
0       A       1
1       B       2
2       C       3
3       D       4
4       E       5
5       F       6
6       G       7
7       H       8
The 70% of the original data
  Letters  Number
0       A       1
1       B       2
2       C       3
3       D       4
4       E       5
Another 30% of the data
  Letters  Number
5       F       6
6       G       7
7       H       8

更新于:2023年11月2日

608 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告