首页 >后端开发 >Python教程 >迭代创建和填充 Pandas DataFrame 的最有效方法是什么?

迭代创建和填充 Pandas DataFrame 的最有效方法是什么?

Barbara Streisand
Barbara Streisand原创
2024-11-28 15:56:11426浏览

What's the Most Efficient Way to Create and Populate a Pandas DataFrame Iteratively?

创建一个空的 Pandas DataFrame 进行迭代填充

创建一个空的 Pandas DataFrame 并迭代填充它是数据操作中的常见任务。然而,理想的方法可能不会立即显现出来。

逐行 DataFrame 增长的陷阱

您提供的代码片段是创建空 DataFrame 并迭代填充它的一种方法。然而,这种方法效率低下,并且可能会导致与内存相关的问题。原因是您要为每次迭代创建一个新行,这需要重新分配内存。随着 DataFrame 的增长,这一过程变得越来越繁琐。

首选方法:在列表中累积数据

首选方法是在列表中累积数据,然后使用一步创建 DataFrame pd.DataFrame() 函数。这种方法明显更有效并且更节省内存。它的工作原理如下:

# Accumulate data in a list
data = []
for row in some_function_that_yields_data():
    data.append(row)

# Create the DataFrame from the list
df = pd.DataFrame(data)

列表累积的优点

  1. 计算效率:追加到列表比追加到 DataFrame 快得多,尤其是对于大型数据集。
  2. 内存效率: 与 DataFrame 相比,列表占用的内存更少。
  3. 自动数据类型推断: pd.DataFrame 自动推断每列的数据类型,省去手动分配类型的麻烦。
  4. 自动索引创建:从创建 DataFrame 时列表中,pandas 会自动分配 RangeIndex 作为行索引,无需手动索引管理。

要避免的替代方案

  1. 在循环内追加或连接: 由于每个方法都需要不断地重新分配内存,因此该方法效率非常低
  2. 循环内的loc:与循环内的append或concat类似,每次迭代使用df.loc[len(df)]会导致内存开销。
  3. 空的 NaN DataFrame: 创建一个充满 NaN 的空 DataFrame 也会导致对象数据类型,这可能会阻碍 pandas

结论

处理大型数据集时,建议将数据累积到列表中并一步创建 DataFrame。它计算效率高、内存友好,并且简化了数据操作过程。

以上是迭代创建和填充 Pandas DataFrame 的最有效方法是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn