溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

利用iloc實(shí)現(xiàn)DataFrame的隨機(jī)樣本分層

發(fā)布時(shí)間:2024-09-01 15:41:39 來(lái)源:億速云 閱讀:92 作者:小樊 欄目:編程語(yǔ)言

要使用iloc實(shí)現(xiàn)DataFrame的隨機(jī)樣本分層,首先需要對(duì)數(shù)據(jù)進(jìn)行分層,然后在每個(gè)層次上隨機(jī)抽取樣本。以下是一個(gè)示例:

import pandas as pd
import numpy as np

# 創(chuàng)建一個(gè)模擬數(shù)據(jù)集
data = {'A': np.random.randint(1, 100, 100),
        'B': np.random.randint(1, 100, 100),
        'C': np.random.choice(['a', 'b', 'c'], 100)}

df = pd.DataFrame(data)

# 對(duì)數(shù)據(jù)集進(jìn)行分層
stratified_data = df.groupby('C')

# 定義要抽取的樣本數(shù)量
sample_size = 5

# 從每個(gè)層次上隨機(jī)抽取樣本
random_samples = []
for group_name, group_data in stratified_data:
    random_indices = np.random.choice(group_data.index, size=min(sample_size, len(group_data)), replace=False)
    random_samples.append(group_data.loc[random_indices])

# 將抽取的樣本合并為一個(gè)新的DataFrame
random_sampled_df = pd.concat(random_samples)

print(random_sampled_df)

這個(gè)示例首先創(chuàng)建了一個(gè)包含3列(A、B和C)的模擬數(shù)據(jù)集,其中C列有3個(gè)類別(a、b、c)。然后,我們使用groupby函數(shù)對(duì)數(shù)據(jù)集進(jìn)行分層,并從每個(gè)層次上隨機(jī)抽取5個(gè)樣本。最后,我們將抽取的樣本合并為一個(gè)新的DataFrame。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI