第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

隨機(jī)將數(shù)據(jù)幀分成具有均勻分布值的組

隨機(jī)將數(shù)據(jù)幀分成具有均勻分布值的組

PIPIONE 2023-06-20 13:52:54
我有兩個組(A和B)的數(shù)據(jù)框,在這些組中,有 6 個子組(、、、、、a和)。示例數(shù)據(jù)如下:bcdefindex? ?group? ? subgroup? ? value0? ? ? ?A? ? ? ? a? ? ? ? ? ?11? ? ? ?A? ? ? ? b? ? ? ? ? ?12? ? ? ?A? ? ? ? c? ? ? ? ? ?13? ? ? ?A? ? ? ? d? ? ? ? ? ?14? ? ? ?A? ? ? ? e? ? ? ? ? ?15? ? ? ?A? ? ? ? f? ? ? ? ? ?16? ? ? ?B? ? ? ? a? ? ? ? ? ?17? ? ? ?B? ? ? ? b? ? ? ? ? ?18? ? ? ?B? ? ? ? c? ? ? ? ? ?19? ? ? ?B? ? ? ? d? ? ? ? ? ?110? ? ? B? ? ? ? e? ? ? ? ? ?111? ? ? B? ? ? ? f? ? ? ? ? ?1...? ? ?...? ? ? ...? ? ? ? ?...雖然我在這里只列出了 12 行等于 1 的值,但實際上真實數(shù)據(jù)集中有 300 行(值等于 2、3 等)。我正在嘗試將數(shù)據(jù)框隨機(jī)分成 6 批,每批 50 個值。但是,我希望每批包含均勻分布的group值(因此 25 個 A 和 25 個 B)和大致均勻分布的subgroup值。例如,batch_1 可能包含:25 A's,其中包含 4 a's、5 b's、4 c's、4 d's、5 e's 和 3 f's。和 25 B's,其中包含 5 a's、4 b's、3 c's、5 d's、4 e's 和 4 f's。這 6 個批次將分配給 1 個用戶。(所以我實際上需要將數(shù)據(jù)幀隨機(jī)拆分為多個不同的6 個批次以供更多用戶使用。)但我無法判斷這是否是數(shù)據(jù)幀應(yīng)該隨機(jī)拆分或采樣的問題。有沒有人對如何實現(xiàn)這一目標(biāo)有建議?
查看完整描述

1 回答

?
喵喔喔

TA貢獻(xiàn)1735條經(jīng)驗 獲得超5個贊

使用一些技巧

  1. 用于pd.factorize()將分類數(shù)據(jù)轉(zhuǎn)換為每個類別的值

  2. 計算代表組/子組對的值/因子f

  3. 隨機(jī)化一點np.random.uniform(),最小值和最大值接近 1

  4. 一旦有一個代表分組的值,就可以sort_values()并且reset_index()有一個干凈的有序索引

  5. 最終通過整數(shù)余數(shù)進(jìn)行分組

group = list("ABCD")

subgroup = list("abcdef")

df = pd.DataFrame([{"group":group[random.randint(0,len(group)-1)], 

 "subgroup":subgroup[random.randint(0,len(subgroup)-1)],

 "value":random.randint(1,3)} for i in range(300)])


bins=6

dfc = df.assign(

    # take into account concentration of group and subgroup

    # randomise a bit....

    f = ((pd.factorize(df["group"])[0] +1)*10 + 

            (pd.factorize(df["subgroup"])[0] +1) 

            *np.random.uniform(0.99,1.01,len(df))

        ),

).sort_values("f").reset_index(drop=True).assign(

    gc=lambda dfa: dfa.index%(bins)

).drop(columns="f")


# check distribution ... used plot for SO

dfc.groupby(["gc","group","subgroup"]).count().unstack(0).plot(kind="barh")

# every group same size...

# dfc.groupby("gc").count()


# now it's easy to get each of the cuts.... 0 through 5

# dfcut0 = dfc.query("gc==0").drop(columns="gc").copy().reset_index(drop=True)

# dfcut0

http://img1.sycdn.imooc.com//64913ed700018f2703970245.jpg

查看完整回答
反對 回復(fù) 2023-06-20
  • 1 回答
  • 0 關(guān)注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號