首页 > 后端开发 > Python教程 > 如何在填充时间序列数据之前高效地创建一个空 DataFrame?

如何在填充时间序列数据之前高效地创建一个空 DataFrame?

Mary-Kate Olsen
发布: 2024-12-08 01:43:12
原创
767 人浏览过

How Can I Efficiently Create an Empty DataFrame for Time-Series Data Before Filling It?

难题:创建一个空数据结构

您渴望构造一个 DataFrame 并随后用时间序列数据填充它。最初,您设想一个空的 DataFrame,配有特定的列和时间戳,全部用零或 NaN 值装饰。

当前方法:不优雅的解决方案

您当前的代码初始化在迭代数据以计算新值之前,具有全零列和时间戳行的 DataFrame。虽然这种方法达到了其目的,但感觉很麻烦,建议存在更有效的解决方案。

首选解决方案:在列表中累积数据

优化此过程,谨慎的做法是避免 DataFrame 中的行增长。相反,将数据累积到列表中,然后在数据收集完成后初始化 DataFrame。列表更轻量,消耗更少的内存,并且有利于自动数据类型推断和索引分配。

data = []
for row in some_function_that_yields_data():
    data.append(row)

df = pd.DataFrame(data)
登录后复制

列表中累积的优点

  • 增强计算效率:追加到列表并在中创建DataFrame一次比迭代追加到空 DataFrame 快得多。
  • 内存优化:列表占用更少的内存,并且更容易追加和操作。
  • 自动Dtypes Inference: DataFrame 构造函数自动根据数据推断 dtypes添加了。
  • 同步索引创建:为生成的 DataFrame 自动生成 RangeIndex。

要避免的已弃用方法

某些在新手用户中普遍存在的做法应该避免,因为它们效率低下并且细微差别:

  • 迭代追加或连接:这种方法存在二次复杂性和数据类型问题。
  • 通过 loc 追加:追加使用 loc 会产生与迭代相同的内存重新分配问题append.
  • 空的 NaN DataFrame: 使用 NaN 值创建 DataFrame 会产生对象列,这会使数据操作变得复杂。最好提前分配一次内存,避免内存碎片

以上是如何在填充时间序列数据之前高效地创建一个空 DataFrame?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板