You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化Python数组转Pandas DataFrame的转换速度?

提升Python数组转Pandas DataFrame速度的实用方法

碰到Python数组转Pandas DataFrame速度慢的问题?结合你给出的K线类数据结构(包含时间戳、字符串格式的数值字段),我分享几个亲测有效的提速技巧:

  • 提前指定数据类型(dtype),避免自动推断
    Pandas默认会逐个字段推断数据类型,尤其是处理大量字符串格式的数值时,这个推断过程会消耗很多时间。你可以提前给每一列指定明确的类型,直接跳过推断步骤:

    import pandas as pd
    
    # 先定义对应你的数据列名
    columns = [
        'open_time', 'open', 'high', 'low', 'close', 'volume',
        'close_time', 'quote_asset_volume', 'number_of_trades',
        'taker_buy_base_asset_volume', 'taker_buy_quote_asset_volume', 'ignore'
    ]
    
    # 为每列指定精准的数据类型
    dtype_map = {
        'open_time': 'int64',
        'open': 'float64',
        'high': 'float64',
        'low': 'float64',
        'close': 'float64',
        'volume': 'float64',
        'close_time': 'int64',
        'quote_asset_volume': 'float64',
        'number_of_trades': 'int64',
        'taker_buy_base_asset_volume': 'float64',
        'taker_buy_quote_asset_volume': 'float64',
        'ignore': 'int64'
    }
    
    # 直接传入类型参数构造DataFrame
    df = pd.DataFrame(your_array, columns=columns, dtype=dtype_map)
    
  • 先转成NumPy数组再构造DataFrame
    Pandas对NumPy数组的处理效率远高于纯Python列表,尤其是数据量较大时。先把你的Python数组转成NumPy数组,再转成DataFrame能显著降低转换开销:

    import numpy as np
    import pandas as pd
    
    # 转成结构化NumPy数组(推荐,类型更精准)
    numpy_dtype = [
        ('open_time', 'int64'), ('open', 'float64'), ('high', 'float64'),
        ('low', 'float64'), ('close', 'float64'), ('volume', 'float64'),
        ('close_time', 'int64'), ('quote_asset_volume', 'float64'),
        ('number_of_trades', 'int64'), ('taker_buy_base_asset_volume', 'float64'),
        ('taker_buy_quote_asset_volume', 'float64'), ('ignore', 'int64')
    ]
    
    # 将每行转为元组后生成结构化数组
    numpy_array = np.array([tuple(row) for row in your_array], dtype=numpy_dtype)
    df = pd.DataFrame(numpy_array)
    
  • 使用from_records方法替代直接构造
    Pandas的DataFrame.from_records方法在处理结构化数据时,有时候会比直接用pd.DataFrame()构造函数更高效,你可以尝试替换:

    df = pd.DataFrame.from_records(your_array, columns=columns, dtype=dtype_map)
    
  • 绝对避免逐行添加数据
    如果你之前是通过循环逐行将数据添加到DataFrame中(比如用df.append()或者loc),那这绝对是速度慢的元凶。一定要先把所有数据收集到一个大的Python数组/列表中,再一次性转成DataFrame,这是最基础也是最有效的优化原则。

总结一下:提前指定数据类型和先转成NumPy数组是提升大数组转换速度的核心技巧,这两个方法通常能让转换速度提升数倍甚至数十倍。

内容的提问来源于stack exchange,提问作者Siem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:30:08