Взятие пропорции кадра данных на основе значений столбца - PullRequest
0 голосов
/ 10 января 2019

У меня есть фрейм данных Pandas с ~ 50 000 строк, и я хочу случайным образом выбрать пропорцию строк из этого фрейма в зависимости от ряда условий. В частности, у меня есть столбец с именем «тип использования», и для каждого поля в этом столбце я хочу выбрать различную пропорцию строк.

Например:

df[df['type of use'] == 'housing'].sample(frac=0.2)

Этот код возвращает 20% всех строк, у которых в качестве «типа использования» указано «жилье». Проблема в том, что я не знаю, как сделать это для оставшихся полей «идиоматическим» образом. Я также не знаю, как я мог бы взять результат этой выборки для формирования нового кадра данных.

1 Ответ

0 голосов
/ 10 января 2019

Вы можете создать уникальный список для всех значений в столбце с помощью list(df['type of use'].unique()) и выполнять итерации, как показано ниже:

for i in list(df['type of use'].unique()):
    print(df[df['type of use'] == i].sample(frac=0.2))

или

i = 0 
while i < len(list(df['type of use'].unique())):
    df1 = df[(df['type of use']==list(df['type of use'].unique())[i])].sample(frac=0.2)
    print(df1.head())
    i = i + 1

Для хранения вы можете создать словарь:

dfs = ['df' + str(x) for x in list(df2['type of use'].unique())]
dicdf = dict()
i = 0 
while i < len(dfs):
    dicdf[dfs[i]] = df[(df['type of use']==list(df2['type of use'].unique())[i])].sample(frac=0.2)
    i = i + 1
print(dicdf)

Будет напечатан словарь данных. Вы можете распечатать то, что хотите увидеть, например, для образца жилья: print (dicdf['dfhousing'])

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...