基于列值的随机抽样熊猫

RnK*_*RnK 4 python sampling pandas

我有文件(A、B、C 等),每个文件都有 12,000 个数据点。我已将文件分成 1000 个点的批次并计算每个批次的值。所以现在对于每个文件,我们有 12 个值,它们被加载到一个 Pandas 数据帧中(如下所示)。

    file    value_1     value_2
0   A           1           43
1   A           1           89
2   A           1           22
3   A           1           87
4   A           1           43
5   A           1           89
6   A           1           22
7   A           1           87
8   A           1           43
9   A           1           89
10  A           1           22
11  A           1           87
12  A           1           83
13  B           0           99
14  B           0           23
15  B           0           29
16  B           0           34
17  B           0           99
18  B           0           23
19  B           0           29
20  B           0           34
21  B           0           99
22  B           0           23
23  B           0           29
24  B           0           34
25  C           1           62
-   -           -           -
-   -           -           -
Run Code Online (Sandbox Code Playgroud)

现在作为下一步,我需要随机选择一个文件,并为该文件随机选择 4 个批次的序列作为 value_1。后者,我相信可以用 df.sample() 来完成,但我不确定如何随机选择文件。我试图让它与 np.random.choice(data['file'].unique()) 一起工作,但似乎不正确。

我在这里先向您的帮助表示感谢。总的来说,我对大熊猫和蟒蛇很陌生。

Abd*_*dou 5

如果我理解您想要达到的目的,以下内容应该会有所帮助:

# Test dataframe
import numpy as np
import pandas as pd


data = pd.DataFrame({'file': np.repeat(['A', 'B', 'C'], 12),
                     'value_1': np.repeat([1,0,1],12),
                     'value_2': np.random.randint(20, 100, 36)})
# Select a file
data1 = data[data.file == np.random.choice(data['file'].unique())].reset_index(drop=True)

# Get a random index from data1
start_ix = np.random.choice(data1.index[:-3])

# Get a sequence starting at the random index from the previous step
print(data.loc[start_ix:start_ix+3])
Run Code Online (Sandbox Code Playgroud)