python - 如何减少处理大数据框的时间
问题描述
我认为我的代码效率低下,我认为可能有办法做得更好。
代码的目标是它需要一个 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))
解决方案
首先,您可以尝试使用不同的 python 结构。数据帧占用大量内存并且处理速度较慢。
从简单的结构和更高效的处理到复杂的结构和效率较低的处理的顺序
- 列表
- 字典
- Numpy 数组
- 熊猫系列
- 熊猫数据框
推荐阅读
- ip - Google Cloud SQL 上的几个查询
- node.js - 检查电子邮件是否已存在于带有异步和等待的 Mongo Atlas DB 中
- java - 如何将浮动比例转换为长比例?
- python-3.x - 为什么它在结果中显示这个(列表索引超出范围)?
- ios - Xocde - 错误 ITMS-90683 在 Info.plist 文件中缺少目的字符串
- javascript - 达到最大长度值后关注下一个输入 - reactjs
- javascript - TypeError:无法读取reactjs中未定义的属性'then'
- google-app-engine - 在 GAE 中使用默认服务帐户时如何设置范围
- visual-studio-extensions - 检查未保存的更改并要求用户保存
- yii - 如何将文件名保存到数据库?