按比例划分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
广告