在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+ 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告