【发布时间】:2019-01-14 19:42:54
【问题描述】:
我正在进行我的第一个相关性分析。我已经通过一个 excel 文件接收到数据,我已经将它作为 Dataframe 导入(必须旋转它),现在我有一组近 3000 行和 25000 列。我不能从中选择一个子集,因为每一列对于这个项目都很重要,而且我也不知道每列存储什么信息以便选择最有趣的信息,因为它是用整数编码的(它是大学项目)。这就像一个大问卷,每个人都有自己的行,每个问题的答案都存储在不同的列中。
我真的需要解决这个问题,因为稍后我将不得不用列的中位数替换许多 Nans,然后开始相关性分析。我先尝试了这部分,但由于尺寸原因它没有成功,所以我先尝试向下转换
数据集有 600 MB,我对浮点数使用了向下转换指令并保存了 300 MB,但是当我尝试替换数据集副本中的新列时,它运行了 30 分钟,但什么也没做。没有警告,没有错误,直到我中断内核,它仍然没有提示我为什么它不起作用。
我不能先用 delete 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 替换并打印我的数据集的相关结果
【问题讨论】:
标签: python dataframe bigdata correlation downcast