【问题标题】:How to get latitude and latitude for an address column in a dataframe using geopy?如何使用geopy获取数据框中地址列的纬度和纬度?
【发布时间】:2021-05-08 14:57:41
【问题描述】:

我目前正在研究一个 kaggle 数据集House price prediction

它在纬度和纬度列中有错误,所以我决定使用 geopy 来获取这两列的正确值。

如果我在一个地址上使用它,它工作正常,但如果应用于整个列,则返回 None。


city = []
lat = []
longi = []

for addr in train_df['address']:
  geolocator = Nominatim(user_agent="ram")
  location  = geolocator.geocode(addr), timeout=100, language = 'en')
  city.append(location.address.split(',')[-4])
  lat.append(location.latitude)
  longi.append(location.longitude)

它返回 None,可能是因为多次访问。

请帮我建议一些其他方法来获取我的数据框的“地址”列(或其他一些用于相同工作的库)的纬度和经度。

【问题讨论】:

  • 我很困惑,因为我看到您使用“名称”作为每个项目的地址,但在地理编码功能中使用了“地址”。只是这个问题中的变量名错误?
  • 对不起,已更正,请查看。
  • 我认为问题出在数据集中。让我在下面发布我如何调试,代码示例会更清楚。

标签: python python-3.x data-cleaning geopy


【解决方案1】:

问题出在数据集的地址上。如果你使用下面的 try catch 代码,你可以看到数据集中有很多错误的地址。

for addr in train_df['ADDRESS']:
    geolocator = Nominatim(user_agent="ram")
    location = geolocator.geocode(addr, timeout=10000, language = 'en')
    try:
        city.append(location.address.split(',')[-4])
        lat.append(location.latitude)
        longi.append(location.longitude)
    except:
        print(addr)

例如,地址之一是“Garebhavipalya,Bangalore”。如果您在 google 中搜索,正确的地址是“Garvebhavi Palya,Bangalore”。它是“Garvebhavi Palya”,但数据集显示为“Garebhavipalya,Bangalore”。因此,如果您使用以下代码检查该地址,您可以获得班加罗尔地址,并且经度和纬度接近数据集的数据。

geolocator = Nominatim(user_agent="ram")
location = geolocator.geocode("Garvebhavi Palya,Bangalore", timeout=100, language = 'en')
print(location.address)
print(location.latitude)
print(location.longitude)

要检查给定数据集的经纬度的地址,您可以使用反向。

geolocator = Nominatim(user_agent="ram")
location = geolocator.reverse("12.96991,77.59796")
print(location.address)

由于我不熟悉班加罗尔,我不确定数据集的 lat 12.96991 和 lon 77.59796 是否是“Garebhavipalya,Bangalore”地址。但我认为问题在于数据集的“地址”。

顺便说一句,我认为这个 GeoPy 库非常好。当你在这里问的时候我才知道。谢谢你的问题:)

【讨论】:

  • 是的,现在可以了。但是数据集有太多错误,我无法进一步使用它。无论如何,您的回答非常有帮助。
  • 很高兴听到。也同意。这么多错误,需要手动操作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-18
  • 1970-01-01
相关资源
最近更新 更多