簡體   English   中英

使用多行創建 pandas dataframe 的更快方法

[英]Faster way to create pandas dataframe with many rows

我正在閱讀具有大量數據的 hdf5 文件。 我想將它存儲在 dataframe 中(它將包含大約 1.3e9 行)。 目前我正在使用以下程序:

df = pd.DataFrame()
for key in ['Column1', 'Column2', 'Column3']:
    df[key] = np.array(h5assembly.get(key))

我已經計時了,大約需要 110 秒

如果我只是將值分配給 numpy arrays,如下所示:

v1 = np.array(h5assembly.get('Column1'))
v2 = np.array(h5assembly.get('Column2'))
v3 = np.array(h5assembly.get('Column3'))

大約需要 22 秒。

難道我做錯了什么? 預計 dataframe 的創建速度會慢很多嗎? 有什么方法可以加速這個過程嗎?

是的,預計 DataFrame 將比 Numpy arrays 花費更長的時間。 這是由於各種原因,我不會一一列舉。 部分原因是 Numpy 使用並釋放了 memory。 Numpy 操作在 C 中實現,這是一種具有性能優勢的編譯語言。

pandas 和 Numpy 性能之間的有趣比較可以在這里看到: https://penandpants.com/2014/09/05/-num-py-seriespandas-series

A package that aims to speed up Pandas using parallelization is Molin: https://www.kdnuggets.com/2019/11/speed-up-pandas-4x.html

Here is also a package called 'PyPolars' which aims to work in a very similar way to Pandas with greater performance due to the implementation of Rust: https://www.analyticsvidhya.com/blog/2021/02/is-pypolars-熊貓的新替代品/

您可以使用pandas.read_hdf將 hdf 文件直接讀取到 dataframe 中。

df = pd.read_hdf('./store.h5')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM