最佳实践多个地址查找谷歌API使用Python和熊猫

问题描述 投票:0回答:1

最终的目标是,给定一个大的地址集,获得“LAT”和“LNG”从谷歌API地址解析服务(这是我能做到)。然后,分析数据,以便lat和长可以在同一行进入到一个数据帧大熊猫作为提供的地址(这也是我能做到)。

我的数据集将要扩大,但我被困解析这个一小部分,因为我想避免这样做,通过数据帧的循环为将可能是缓慢的,当数据集从30行到数千个去。

下面是我起步的地方:

import pandas as pd
import googlemaps

阅读数据帧

df = pd.read_csv("SmallDecember2018")

connect

gmaps = googlemaps.Client(key='shhhItsSecret')

get the geocode for each item based on addresses (AddressConcat) in my file, put them into the df.

df['geo_result'] = df['AddressConcat'].apply(lambda x: gmaps.geocode(x))

这工作得很好。 我得到的数据到df,但它是有点尴尬。 Python看到它作为一个嵌入式词典列表。

要获取数据的第一行我从df想,这个代码适用于我所关心的元素

lat = df['geo_result'][0][0].get('geometry').get('location').get('lat')
lng = df['geo_result'][0][0].get('geometry').get('location').get('lng')
print (lat + " " lng)

理想情况下,我想要做的另一个lambda函数来看待['geo_result']和解析lat/lng

我试过,只是“纬度” ...

df['lat'] = df['geo_result'].apply(lambda x: df['geo_result'].[x][0].get('geometry').get('location').get('lat')

它似乎并不喜欢这种方法,因为lambda功能并不想哈希字典或列表 - 我试图去两种方式。

被检索到它通过拉姆达本功能一个数据帧将是在一次2-3K要求高性能?我有一个GCP帐户,并可以把他们的BigQuery,如果这是一个建议,只要我可以得到一个数据帧最终。我应该怎么格式化,一旦我得到的回应? (JSON?字典吗?)我应该如何解析在返回的数据(循环还是有一个平滑的方式?)

我开始使用Python,但不结婚吧,因为我正在寻找更多的方向,不是代码的建议。我想没有破解这部分内容。

提前致谢!

python pandas google-api
1个回答
0
投票

在大熊猫申请不做API /查询。

我建议拆分出来到这两个函数(如果是几万或几十万我会使用SQS或发布/订阅并行的地址查找,结果存储到数据库中)。如果它是一个几千元我只是在本地执行:

通过每个地址(从CSV文件)循环并存储到文件中(address.json的可能的散列,或一些其他唯一标识符)的响应。我可能会在CSV分裂成几块,并在并行/运行它与一些蟒蛇实例(取决于它有多慢)...

完成后作为一个单独的Python脚本,我通过每一个文件就不断循环,并将其解析到类型的字典列表(和将其转换成一个数据帧大熊猫 - 和CSV)。

© www.soinside.com 2019 - 2024. All rights reserved.