在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()函数。

更新于:2023年8月10日

5K+ 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告