У меня огромный набор данных TSV (genomi c) (размер 1 ГБ), который имеет 2 504 строки и 220 001 столбец. (Для загрузки с pd.read_table("biallelic-only.raw")
.
требуется 1 час 11 минут 4 секунды. Все столбцы, кроме 5, являются категориальными данными, и я хочу преобразовать их в категорию факторизации.
С небольшими выборками , этот код хорошо обращается:
data = pd.read_table("biallelic-only.raw")
categorical_feats = [
f for f in data.columns if f not in ['FID', 'IID', 'PAT', 'MAT', 'bmi']
]
categorical_feats
for f in categorical_feats:
data[f], _ = pd.factorize(data[f])
data[f] = data[f].astype('category')
Но с этим огромным, он требует возрастов.
Мой вопрос, возможно ли загрузить набор данных уже как разложенные категории вместо преобразования позже?
Я знаю, что мы можем сделать что-то вроде:
pd.read_csv('file', dtype={'col_name':type}))
Но, учитывая, что у меня 220 001 столбец, невозможно установить все их в словарь dtype. Интересно, есть ли перевернутый способ назначения типа. Что-то вроде: установите все столбцы как category
, кроме этих 5).
Спасибо!