我需要以5公里的比例识别所有点,并检查所有可能的泛滥。事实是,我有很多可能的积分(2,000),而我所做的就是对每个积分进行一次循环检查,我的意思是2,000X2,000次。
我想知道是否有一个优化此代码的过程,因为这需要花费很多时间。
感谢您的帮助。
import pandas as pd
from geopy import distance
from geopy import Point
df_geoloc_eess= pd.read_excel("eess_zonacentro.xlsx")
dist_km=[]
ar_eess_cand=[]
ar_eess_comp=[]
ar_lats_cand=[]
ar_lons_cand=[]
ar_lats_comp=[]
ar_lons_comp=[]
distancia=[]
for i in range(len(df_geoloc_eess.index)):
lats_cand=df_geoloc_eess['latitud'][i]
lons_cand=df_geoloc_eess['longitud'][i]
eess_cand=df_geoloc_eess["num_pemex"][i]
for j in range(len(df_geoloc_eess.index)):
lats_comp=df_geoloc_eess['latitud'][j]
lons_comp=df_geoloc_eess['longitud'][j]
eess_comp=df_geoloc_eess["num_pemex"][j]
point_cand=Point(lats_cand,lons_cand)
point_comp=Point(lats_comp,lons_cand)
dist_km=distance.distance(point_cand,point_comp).km
if dist_km<5:
distancia.append(dist_km)
ar_eess_cand.append(eess_cand)
ar_lats_cand.append(lats_cand)
ar_lons_cand.append(lons_cand)
ar_eess_comp.append(eess_comp)
ar_lats_comp.append(lats_comp)
ar_lons_comp.append(lons_comp)
dta={'candidata':ar_eess_cand,'competencias':ar_eess_comp,'latitud':ar_lats_comp,'longitud':ar_lons_comp,'distancia':distancia}
matiz_dist=pd.DataFrame(dta)