如何填充数据集中缺少的地理位置?

时间:2016-05-16 07:20:20

标签: python pandas geolocation geopy geopandas

我有一组数据集,同时缺少地理位置名称和坐标。我想填补空白,以便我可以继续进行数据的未来分析。数据集是从twitter获得的,因此它不是创建的数据,但这是数据的来源,我需要以某种方式填补空白并继续进行未来的分析。

选项1:我可以使用userLocationuserTimezone之一来查找coordinates

输入:

userLocation,   userTimezone,   Coordinates,
India,          Hawaii,    {u'type': u'Point', u'coordinates': [73.8567, 18.5203]}
California,     USA     
          ,     New Delhi,  
Ft. Sam Houston,Mountain Time (US & Canada),{u'type': u'Point', u'coordinates': [86.99643, 23.68088]}
Kathmandu,Nepal, Kathmandu, {u'type': u'Point', u'coordinates': [85.3248024, 27.69765658]}

预期产出

userLocation,  userTimezone,   Coordinates_one, Coordinates_two
    India,          Hawaii,         73.8567,         18.5203
    California,     USA,            [fill this]      [fill this]
    [Fill this],    New Delhi,      [fill this]      [fill this]
    Ft. Sam Houston,Mountain Time (US & Canada), 86.99643, 23.68088
    Kathmandu,      Kathmandu,      85.3248024,      27.69765658

是否可以在Python或pandas中编写脚本,以便在正确格式化输出的同时填写缺少的位置名称和坐标?

我理解Python或Pandas没有任何魔术包,但开始时会有所帮助。

我在GIS部分提出了这个问题但在那里没有多少帮助。这是我第一次使用Geo位置数据集,我不知道如何开始。如果问题不合适,请评论删除而不是投票。

1 个答案:

答案 0 :(得分:1)

正如其他人在你的GIS问题上提到的那样,没有什么神奇的方法可以产生准确的东西,但我会玩geopy。我假设您能够遍历缺失的数据,示例代码和输出演示geopy:

from geopy.geocoders import Nominatim

geolocator = Nominatim() 

for location in ('California USA', 'New Delhi'):
    geoloc = geolocator.geocode(location)
    print location, ':', geoloc, geoloc.latitude, geoloc.longitude

输出:

California USA : California, United States of America 36.7014631 -118.7559974 
New Delhi : New Delhi, New Delhi District, Delhi, India 28.6138967 77.2159562

您可能想尝试不同的地理编码服务(请参阅geopy doc),其中一些服务可以采取其他参数,例如:提名可以采取" country_bias"将结果偏向给定国家/地区的关键字。