Генерация случайных данных на основе состояния в пандах и козлах - PullRequest
1 голос
/ 22 сентября 2019

У меня есть фрейм данных, как показано ниже.

ID      
1    
2    
3    
4    
5    
6    
7    
8    
9    
10   
11   
12   
13   
14   
15   
16  
17   
18   
19   
20

, который имеет только один идентификатор столбца и 20 уникальных значений.случайным образом я хочу выбрать 25% уникальных значений идентификатора столбца и создать новый столбец OWNER_ID путем случайного заполнения его в 20 строках с отсутствием 10% (2 строки).

Случайно выбранный идентификатор и Owner_ID должныматч.Например, если мы случайно выбрали 2 в качестве одного из Owner_ID.тогда всякий раз, когда ID равен 2, Owner_ID должен быть 2

Например, я случайно выбрал 2,3,8,9,11

Ожидаемый результат:

ID   OWNERD_ID  
1    2
2    2
3    3
4    11
5    9
6    11
7    11
8    8
9    9
10   2
11   11
12   2
13   na
14   8
15   9
16   8
17   9
18   2
19   2
20   na

Iпросто не знаю с чего начать.Поэтому я ничего не пробовал.Я только учусь генерировать случайные данные с помощью панд.

1 Ответ

1 голос
/ 22 сентября 2019

Может быть, вы можете попробовать пользовательские функции, такие как:

def myfunc(d):
    s=d.sample(frac=.25)
    d=d.assign(owner_id=s)
    fill_na=pd.Series(np.random.choice(d['owner_id'].dropna(), size=len(df))) #thanks @jezrael
    d['owner_id']=d['owner_id'].fillna(fill_na)
    d.loc[d.sample(frac=.10).index,'owner_id']=np.nan
    return d
myfunc(df)

    ID  owner_id
0    1       3.0
1    2      19.0
2    3       3.0
3    4       3.0
4    5       5.0
5    6       3.0
6    7       8.0
7    8       8.0
8    9       NaN
9   10       3.0
10  11       5.0
11  12       3.0
12  13      19.0
13  14       9.0
14  15       5.0
15  16      19.0
16  17       NaN
17  18       9.0
18  19      19.0
19  20       9.0
...