在Pandas DataFrame中生成随机整数
使用Python的Pandas库在DataFrame中生成随机整数是一种重要的数据分析和处理技术。通过在DataFrame中生成和插入随机整数,您可以为各种应用打开无限可能。此功能在数据模拟、算法测试和生成合成数据集等任务中特别有用。熟悉此功能无疑将增强您数据分析工作流程的灵活性和多功能性。
方法一:使用NumPy的randint()函数
在本代码片段中,常用NumPy库中的randint()函数在指定范围内生成随机整数。
在这个程序中,我们确定一个类似表格的结构(称为DataFrame)所需的大小,以在指定范围内生成随机整数。最后,我们通过整合这些随机生成的数字来构建DataFrame。
算法
步骤1 - 开始导入pandas和numpy库
步骤2 - 创建变量“row和cols”来设置DataFrame的行和列
步骤3 - 要在特定范围内创建随机整数,请使用numpy.random.randint()函数。
步骤4 - 使用变量“data”中的随机整数创建DataFrame“df”。
步骤5 - 打印“df”
示例
import pandas as pd import numpy as np row = 5 cols = 5 Random = np.random.randint(low=0, high=100, size=(row, cols)) df = pd.DataFrame(Random) print(df)
输出
0 1 2 3 4 0 92 5 54 9 32 1 64 12 21 16 98 2 29 36 91 95 74 3 4 10 46 25 8 4 84 24 21 27 9
方法二:使用pandas.DataFrame.sample()方法
sample()方法用于从DataFrame中获取随机样本。
在提供的代码片段中,构建了一个名为'df'的DataFrame,包含5行3列('A' 'B' 'C')。随后实现sample()方法来选择并根据其各自的样本(有放回)为'A'、'B'和'C'列分配新值。样本大小设置为5,replace=True允许有放回的抽样,random_state=42用于建立可重复性目的的随机种子。最后,显示更新后的DataFrame。
示例
import pandas as pd import numpy as np # Set the seed for reproducibility (optional) np.random.seed(42) # declare a variable with rows and columns size & name df = pd.DataFrame(np.random.randint(0, 10, size=(5, 3)), columns=['A', 'B', 'C']) # Generating random number using sample() df['A'] = df['A'].sample(n=5, replace=True, random_state=42).values df['B'] = df['B'].sample(n=5, replace=True, random_state=42).values df['C'] = df['C'].sample(n=5, replace=True, random_state=42).values print(df)
输出
A B C 0 4 3 7 1 7 2 5 2 2 6 7 3 7 2 5 4 7 2 5
方法三:使用pandas.DataFrame.apply()方法和lambda函数。
下面的代码使用pandas.DataFrame.apply()方法和lambda函数来生成随机整数并将它们分配给Pandas DataFrame中的列。形成一个名为df的DataFrame,包含5行3列。通过使用apply()应用lambda函数,为每一行生成0到9之间的随机整数。然后将这些随机生成的整数分配到它们对应的列,即'RandomA'、'RandomB'和'RandomC'。最后,打印数据框以显示生成的随机整数。
算法
步骤1 - 导入pandas库和random模块。
步骤2 - 设置种子为42以实现可重复性(可选)。
步骤3 - 创建一个包含5行3列的DataFrame,列名为'RandomA'、'RandomB'和'RandomC'。
步骤4 - 使用apply()函数和lambda函数为每一列生成0到9之间的随机整数。
步骤5 - 将生成的随机值分配给DataFrame中相应的列。
步骤6 - 打印DataFrame。
示例
import pandas as pd import random # Set the seed for reproducibility (optional) random.seed(42) # Create a data frame with 5 rows and 3 columns containing random integers between 0 and 9 df = pd.DataFrame(index=range(5), columns=['RandomA', 'RandomB', 'RandomC']) # Generate random integers using apply() and a lambda function df['RandomA'] = df.apply(lambda _: random.randint(0, 9), axis=1) df['RandomB'] = df.apply(lambda _: random.randint(0, 9), axis=1) df['RandomC'] = df.apply(lambda _: random.randint(0, 9), axis=1) print(df)
输出
RandomA RandomB RandomC 0 1 2 6 1 0 1 0 2 4 8 0 3 3 1 1 4 3 9 3
方法四:使用pandas.Series.apply()函数
pandas.Series.apply()函数是panda库中的一个宝贵方法。它允许将自定义函数应用于Series对象中的每个元素。
在提供的代码片段中,使用嵌套列表推导式构建了一个DataFrame。为了生成0到100之间的随机整数,generate_random_int()函数与apply()函数一起使用。这种组合允许为DataFrame中的每个元素生成不同的随机数。因此,得到一个完全由随机生成的整数组成的DataFrame。最后,打印此生成的DataFrame以供进一步分析或使用。
算法
步骤1 - 导入所需的库:pandas用于数据处理,random用于生成随机整数。
步骤2 - 声明DataFrame的行数和列数。
步骤3 - 定义一个函数来生成0到100之间的随机整数。
步骤4 - 使用嵌套列表推导式创建一个DataFrame,为每个单元格生成随机整数。
步骤5 - 打印DataFrame以显示生成的随机整数。
步骤6 - 结束程序。
示例
import pandas as pd import random #setting the number of rows and columns for data frame num_rows = 10 num_cols = 5 #defining the function for generating random numbers def generate_random_int(): return random.randint(0, 100) #creating a variable to store a random number in data frame df = pd.DataFrame([[generate_random_int() for _ in range(num_cols)] for _ in range(num_rows)]) print(df)
输出
0 1 2 3 4 0 23 77 66 60 19 1 51 31 79 51 88 2 6 38 73 38 64 3 5 79 97 25 43 4 24 53 6 23 6 5 63 82 47 56 10 6 72 91 4 84 32 7 81 74 17 21 44 8 28 100 43 31 58 9 64 57 16 15 14
结论
总而言之,在Pandas DataFrame中创建随机整数有多种方法。常用的方法包括randint()函数和pandas.DataFrame.sample()、pandas.DataFrame.apply()以及pandas.Series.apply()。但是,每种方法都有其优点。确定最佳方法取决于具体的用例。如果目标是直接在DataFrame列中生成随机整数,那么randint()函数将是理想的选择。
另一方面,如果随机抽取行更重要,则sample()将更合适。对于需要涉及随机整数的更复杂操作的情况,可以有效地使用apply()函数。