Как создать список фреймов данных, в которых каждый фрейм данных имеет различное количество строк на основе условий поднабора отдельного фрейма данных? - PullRequest
0 голосов
/ 03 апреля 2020

Моя цель - создать список фреймов данных, в которых каждый фрейм данных имеет различное количество строк. Каждый из этих фреймов данных является подмножеством исходного фрейма данных на основе заранее определенного числа строк.

Дополнительные сведения о поднаборах: существует одна группа, которую я называю «группой меньшинств» (например, наблюдения со значением «черный»). за характеристику "этническая принадлежность"), на основании которой я хочу подмножество. Количество строк для группы меньшинств должно составлять разных размеров для каждого кадра данных в результирующем списке. Количество наблюдений, назначенных группе большинства (например, наблюдения со значением «white»), должно быть одинаковым для разных фреймов данных. Наблюдения, назначенные группе меньшинства и большинства, должны затем добавляться к одному и тому же фрейму данных для каждой итерации заранее определенного количества строк для группы меньшинства.

Для достижения sh моей цели я придумал следующую функцию :

import numpy as np
import pandas as pd

min_dataset_list = list()
compl_dataset_list = list()

def create_datasets(min_data, maj_data, training_sizes):
  for training_size in training_sizes:
    while len(min_data.index) >= training_size: # Code should stop when number of rows of df with min. group is smaller than training size iteration 
      dataset_min_slice = min_data.sample(n = training_size, random_state = 1) # Get a random subset of the minority group
      min_dataset_list.append(dataset_min_slice) # Create list of data frames that include observations of minority group of different sizes
      for min_dataset_component in min_dataset_list:
        dataset_list = maj_data.append(min_dataset_component) # Merge observations of min. group of different sizes with observations from maj. group
        compl_dataset_list.append(dataset_list) # Create list of data frames that include majority group (fixed size) and minority group (different sizes)
        return compl_dataset_list

# Execute function
training_sizes = [5, 10, 20, 30, 40, 50, 75, 100, 125, 150, 175, 200, 250]

df_3_adult_black = df_3_adult[is_black]  # Define minority group based on original data frame
df_3_adult_white = df_3_adult[is_white]  # Define majority group based on original data frame

list_dfs = create_datasets(min_data = df_3_adult_black, maj_data = df_3_adult_white, training_sizes = training_sizes)

В результирующем списке фреймов данных я ожидаю получить столько фреймов данных, сколько будет указано заранее установленного размера training_sizes (в моем случае 12 - разные шаги от размера обучения 5 до 250) и отдельных лиц. фреймы данных должны иметь различное количество строк из-за групп меньшинств разного размера. Однако в списке я получаю только два фрейма данных, и все фреймы данных имеют одинаковое количество строк.

Как это исправить? Спасибо!

...