【问题标题】:the replacement of converted columns after downcasting doesn't end向下转换后转换的列的替换不会结束
【发布时间】: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


    【解决方案1】:

    最后我决定使用这个:

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

    而不是带有优化的_gl 的行,它解决了它,但这只是因为除了第一列之外每一列都发生了变化。所以我只需要将第一个添加到其他的。

    【讨论】:

      猜你喜欢
      • 2016-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多