最终的目标是,给定一个大的地址集,获得“LAT”和“LNG”从谷歌API地址解析服务(这是我能做到)。然后,分析数据,以便lat和长可以在同一行进入到一个数据帧大熊猫作为提供的地址(这也是我能做到)。
我的数据集将要扩大,但我被困解析这个一小部分,因为我想避免这样做,通过数据帧的循环为将可能是缓慢的,当数据集从30行到数千个去。
下面是我起步的地方:
import pandas as pd
import googlemaps
阅读数据帧
df = pd.read_csv("SmallDecember2018")
gmaps = googlemaps.Client(key='shhhItsSecret')
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,但不结婚吧,因为我正在寻找更多的方向,不是代码的建议。我想没有破解这部分内容。
提前致谢!
在大熊猫申请不做API /查询。
我建议拆分出来到这两个函数(如果是几万或几十万我会使用SQS或发布/订阅并行的地址查找,结果存储到数据库中)。如果它是一个几千元我只是在本地执行:
通过每个地址(从CSV文件)循环并存储到文件中(address.json的可能的散列,或一些其他唯一标识符)的响应。我可能会在CSV分裂成几块,并在并行/运行它与一些蟒蛇实例(取决于它有多慢)...
完成后作为一个单独的Python脚本,我通过每一个文件就不断循环,并将其解析到类型的字典列表(和将其转换成一个数据帧大熊猫 - 和CSV)。