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