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

Я работаю над своим первым корреляционным анализом. Я получил данные через файл Excel, я импортировал их как Dataframe (пришлось их развернуть), и теперь у меня есть набор из почти 3000 строк и 25000 столбцов. Я не могу выбрать из него подмножество, так как каждый столбец важен для этого проекта, и я также не знаю, какую информацию хранит каждый столбец, чтобы выбрать наиболее интересные, потому что он закодирован целыми числами (это университетский проект). Это похоже на большую анкету, где у каждого человека есть свой ряд, а ответы на каждый вопрос хранятся в отдельной колонке.

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

Набор данных имеет 600 МБ, и я использовал инструкцию по уменьшению для чисел с плавающей запятой и сохранил 300 МБ, но когда я пытаюсь заменить новые столбцы в копии моего набора данных, он работает в течение 30 минут и ничего не делает. Никаких предупреждений, никаких ошибок, пока я не прерву ядро, и оно все еще не дает мне намека на то, почему оно не работает.

Сначала я не могу использовать инструкцию удаления Nans, потому что их так много, что она сотрет практически все.

#i've got this code from https://www.dataquest.io/blog/pandas-big-data/
def mem_usage(pandas_obj):
    if isinstance(pandas_obj,pd.DataFrame):
        usage_b = pandas_obj.memory_usage(deep=True).sum()
    else: # we assume if not a df it's a series
        usage_b = pandas_obj.memory_usage(deep=True)
    usage_mb = usage_b / 1024 ** 2 # convert bytes to megabytes
    return "{:03.2f} MB".format(usage_mb)

gl_float = myset.select_dtypes(include=['float'])
converted_float = gl_float.apply(pd.to_numeric,downcast='float')

print(mem_usage(gl_float)) #almost 600
print(mem_usage(converted_float)) #almost 300

optimized_gl = myset.copy()
optimized_gl[converted_float.columns]= converted_float #this doesn't end

после работ по замене я хочу использовать функцию Imputer для замены Nans и распечатать результат корреляции для моего набора данных

1 Ответ

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

В конце концов я решил использовать это:

 column1 = myset.iloc[:,0]
 converted_float.insert(loc=0, column='ids', value=column1)

вместо строк с optimized_gl, и это решило это, но это было возможно только потому, что изменился каждый столбец, кроме первого. Поэтому мне просто нужно было добавить первое к остальным.

...