首页 > 解决方案 > 如何减少处理大数据框的时间

问题描述

我认为我的代码效率低下,我认为可能有办法做得更好。

代码的目标是它需要一个 Excel 列表,并且必须将列的每个元素与同一列的其余元素相关联。根据某些条件,将其与联合信息一起存储在一个新的数据框中,在我的情况下,该文件有超过 16000 行,因此在进行练习时,它必须执行 (16.000 x 16.000) 256.000.000 次迭代。但这需要几天的处理时间。

我的代码如下:

import pandas as pd                                         
import numpy as np


excel1="Cs.xlsx"                                                 

dataframe1=pd.read_excel(excel1)                                

col_names=["Eb","Eb_n","Eb_Eb","L1","Ll1","L2","Ll2","D"]
my_df =pd.DataFrame(columns=col_names)                          

count_row = dataframe1.shape[0] 

print(count_row)

for n in range(0,count_row):

    for p in range(0,count_row):
        if abs(dataframe1.iloc[n,1] - dataframe1.iloc[p,1]) < 0.27 and abs(dataframe1.iloc[n,2] - 
            dataframe1.iloc[p,2]) < 0.27:           
            Nb_Nb=dataframe1.iloc[n,0]+"_"+dataframe1.iloc[p,0]     
            myrow=pd.Series([dataframe1.iloc[n,0],dataframe1.iloc[p,0],Nb_Nb,dataframe1.iloc[n,1],
            dataframe1.iloc[n,2],dataframe1.iloc[p,1],dataframe1.iloc[p,2]],   
            index=["Eb","Eb_n","Eb_Eb","L1","Ll1","L2","Ll2"])
            my_df = my_df.append(myrow, ignore_index=True)          
    
print(my_df.head(5))

标签: pythonpandasperformance

解决方案


首先,您可以尝试使用不同的 python 结构。数据帧占用大量内存并且处理速度较慢。

从简单的结构和更高效的处理到复杂的结构和效率较低的处理的顺序

  1. 列表
  2. 字典
  3. Numpy 数组
  4. 熊猫系列
  5. 熊猫数据框

推荐阅读