Okay, also versuche ich mir eine Lösung dafür vorzustellen. Ich habe eine Datenbank mit über einer Million Zeilen, die einen Städtenamen in den USA und eine Reihe von Koordinaten für diese Stadt enthält. Das Problem ist, dass es mehrere Städte mit dem gleichen Namen gibt: Springfield, NJ und Springfield, MA, zum Beispiel. Also muss ich die staatliche Information bekommen.Wie sollte ich über 1.100.000 Zeilen Koordinateninformationen geolocation gehen?
Es gibt auch Duplikate innerhalb der Daten. Es gibt nur ungefähr 6500 Sätze einzigartiger Koordinaten, also könnte ich diese lokalisieren und sie dann den anderen Einträgen in der Datenbank zuordnen. Ist das ein realisierbarer Plan? Wie würde ich darüber gehen?
Hier sind einige Beispiele dafür, was in dieser Datenbank-Einträge wie folgt aussehen:
2015-09-01 00:00:00,Buffalo,"42.9405299,-78.8697906",10.1016/s0894-7317(12)00840-1,42.9405299,-78.8697906,43.0,-79.0
2015-09-01 00:00:00,New York,"40.7830603,-73.9712488",10.1016/j.jmv.2014.04.008,40.783060299999995,-73.9712488,41.0,-74.0
2015-09-01 00:00:04,Scottsdale,"33.4941704,-111.9260519",10.1016/j.euroneuro.2014.05.008,33.494170399999994,-111.9260519,33.0,-112.0
2015-09-01 00:00:09,Provo,"40.2338438,-111.6585337",10.1016/j.toxac.2014.07.002,40.233843799999995,-111.6585337,40.0,-112.0
2015-09-01 00:00:13,New York,"40.7830603,-73.9712488",10.1016/j.drugalcdep.2014.09.015,40.783060299999995,-73.9712488,41.0,-74.0
2015-09-01 00:00:16,Fremont,"37.5482697,-121.9885719",10.1016/j.ajic.2012.04.160,37.548269700000006,-121.98857190000001,38.0,-122.0
2015-09-01 00:00:24,Provo,"40.2338438,-111.6585337",10.1016/j.chroma.2015.01.036,40.233843799999995,-111.6585337,40.0,-112.0
ich das geocoder Paket für Geolocation verwende. Hier ist ein Code, den ich geschrieben habe, der damit umgehen könnte:
def convert_to_state(lati, long):
lat, lon = float(lati), float(long)
g = geocoder.google([lat, lon], method='reverse')
state_long, state_short = g.state_long, g.state
return state_long, state_short
Ich bin nur nicht sicher, wie dies zu tun ist. Es stellt sich heraus, dass Geocoding ziemlich teuer ist, daher ist die Verwendung der Duplikate wahrscheinlich der beste Weg. Irgendwelche Vorschläge, wie man das erreicht?
Sie können möglicherweise eine SQL-Abfrage verwenden, um eindeutige Daten, z. B. Koordinaten, zu erhalten. Versuchen Sie etwas wie "SELECT DISTINCT Stadt, Koordinaten FROM Tabelle". Sie müssen jedoch die richtigen Spalten- und Tabellennamen ersetzen. – NendoTaka
Ich habe noch nie SQL benutzt und habe nicht wirklich genug Zeit um zu lernen. Gibt es eine Möglichkeit, dies in Python und Pandas zu erreichen? – user1917407
Sie könnten eine geschachtelte Liste erstellen mit einer for-Schleife nach dem Abrufen der Daten und nur überprüfen, ob die neuen Daten ein Duplikat – NendoTaka