如何将Modin大熊猫数据框附加到其他数据框?

时间:2019-06-15 13:44:43

标签: python pandas dataframe pandasql modin

我正在对每个文件大约 6GB 的大文件执行计算,并遇到了 Modin熊猫,我听说它与熊猫相比是经过优化的。

我需要分块读取CSV文件并进行计算,然后将其附加到大的数据框,然后再次将大数据框转换为 CSV 文件。 / p>

这对于熊猫来说绝对可以正常工作。但是,即使是很小的文件,也要花费太多时间。而且我什至无法想象 6GB 文件。

但是,当我尝试对modin pandas做同样的事情时,它无法将数据帧附加到要转换为csv文件的大数据帧中。

任何人都可以提出任何替代方案或解决方案的建议。

Python - 3.6
Pandas - 0.24.2
Modin Pandas - 0.5.2

代码。

import modin.pandas as pd

def calculate_visit_prioritization(df):
    # calculations here
    return df

def get_all_data():
    big_df = pd.DataFrame()
    for df in pd.read_csv('./samp.csv', chunksize=50):
        big_df = big_df.append(calculate_visit_prioritization(df))
    big_df.to_csv('samps3.csv', index=False)

def main():
    get_all_data()

if __name__ == '__main__':
    main()

使用Modin熊猫添加数据框时出错。

  

UserWarning:DataFrame.append表示默认为空的DataFrame   熊猫的实现。

     

文件   “ /home/tony/.local/lib/python3.6/site-packages/pandas/core/reshape/concat.py”,   第289行,在__init__中引发TypeError(msg)

     

TypeError:无法连接类型为“”的对象;仅pd.Series,pd.DataFrame,   和pd.Panel(不建议使用)objs有效

我已经遍历了link,据说熊猫的.append()功能在Modin中实现了部分(P)

1 个答案:

答案 0 :(得分:1)

Modin的USP是,熊猫和modin熊猫之间的唯一区别是import声明。要串联多个DataFrame,请使用单个pd.concat调用而不是N append个调用以提高性能。

df_list = []
for df in pd.read_csv('./samp.csv', chunksize=50):
    df_list.append(calculate_visit_prioritization(df))

big_df = pd.concat(df_list, ignore_index=True)
big_df.to_csv('samps3.csv', index=False)

这也应该很好地处理空的子DataFrame。