我正在完成我的第一个数据项目,有一个显示街道交叉口的框架,看起来像这样:
from_station_name count
86 Canal St & Adams St 50575
152 Clinton St & Madison St 5990
157 Clinton St & Washington Blvd 45378
159 Columbus Dr & Randolph St 31370
252 Franklin St & Monroe St 30832
321 Kingsbury St & Kinzie St 30654
175 Daley Center Plaza 30423
89 Canal St & Madison St 27138
410 Michigan Ave & Washington St 25468
330 LaSalle St & Jackson Blvd 23021
字符串
我试着找到交叉点的经纬度坐标,并把这些信息放在这个坐标框的另外两列中。
我尝试使用Google Maps API编写一个循环,如下所示:
def geocode_intersection(api_key, intersection):
base_url = "https://maps.googleapis.com/maps/api/geocode/json?"
params = {"address": intersection, "key": api_key}
response = requests.get(base_url, params=params)
if response.status_code == 200:
data = json.loads(response.text)
if data["status"] == "OK":
location = data["results"][0]["geometry"]["location"]
return location["lat"], location["lng"]
else:
return None
else:
return None
api_key = "MY_API_KEY"
# Initialize new columns
busiest_stations_subs["latitude"] = np.nan
busiest_stations_subs["longitude"] = np.nan
# Loop through the DataFrame
for index, row in busiest_stations_subs.iterrows():
intersection = row["from_station_name"]
result = geocode_intersection(api_key, intersection)
if result is not None:
latitude, longitude = result
busiest_stations_subs.at[index, "latitude"] = latitude
busiest_stations_subs.at[index, "longitude"] = longitude
型
并得到了许多交叉点正确,但许多是NaN这样:
580 Wabash Ave & Roosevelt Rd 15914 41.861202 -87.943284
544 State St & Kinzie St 15764 NaN NaN
191 Damen Ave & Pierce Ave 15546 41.909363 -87.677420
339 Lake Shore Dr & North Blvd 15520 28.107321 -82.729723
235 Fairbanks Ct & Grand Ave 15477 64.840051 -147.719976
424 Morgan St & Lake St 15307 NaN NaN
499 Sheffield Ave & Fullerton Ave 15129 41.925373 -87.653611
582 Wacker Dr & Washington St 15010 NaN NaN
619 Wilton Ave & Belmont Ave 14990 41.939913 -87.652890
122 Clark St & Armitage Ave 14881 41.918477 -87.636128
559 Streeter Dr & Grand Ave 14879 NaN NaN
329 LaSalle St & Illinois St 14412 41.890819 -87.632670
197 Dearborn Pkwy & Delaware Pl 14144 41.898748 -87.629835
型
我了解到的是,与NaN交叉口的街道名称缺少实际街道的N,E,W,S方向指示器。我可以在谷歌Map上查看,看到缺少的方向指示器,然而,在我的数据中有成千上万的行。有没有一种方法可以自动查看所有的NaN,找到实际的街道名称,并替换什么?一个问题是,像“湖街”在芝加哥有两个版本,一个“W湖街”和“E湖街”。我不知道如何解决这个问题。任何帮助或建议,如何处理这个解决方案将不胜感激。
1条答案
按热度按时间nuypyhwy1#
地址不明确,Geocoder无法返回任何结果
Geocoding Addresses Best Practices文档中写道:
通常,对完整地址(例如,“48 Pirrama Rd,Pyrmont,NSW,Australia”)进行地理编码时使用地理编码API。对不明确(不完整)的地址进行地理编码时使用Places API Place Autocomplete service
在您的例子中,这些地址是不完整的,因此地理编码API按预期工作。我尝试对返回
NaN
的地址进行地理编码,并确认它确实返回ZERO_RESULTS
。你可以尝试任何一种方式:
Chicago
(State St & Kinzie St Chicago
)来更改地址State St & Kinzie St
将返回结果:41.889261,-87.627984
而不是ZERO_RESULTS
。由于它仍然被认为是最佳实践,地理编码只明确的地址,我现在只能想到的解决方案是只是清理您的数据。
尽管如此,我还是希望这些信息能有所帮助!