Ich arbeite an der Alienvault Reputation.data Datei. Es ist eine Liste der 40k bösartigen IP-Adresse und ihrer Standorte. Ich habe die Datei eingelesen, wie soPython plotten Komma getrennte Koordinaten (lat, lang) in Matplotlib Grundkarte
addresses_columns = ["IP", "Reliability", "Risk", "Type", "Country", "Locale", "Coords", "x"]
ip_addresses = pd.read_csv('reputation.data', sep='#', names=addresses_columns)
Ich möchte die Coords Spalte nehmen und verwenden Sie die lat langen Zahlen sie als Streudiagramm auf einer Weltkarte zu zeichnen. Die Koordinaten sind Breiten- und Längengrad, Komma getrennt in den Spalten, sie sind Floats wie 21.0333003998,105.849998474. Die Weltkarte ist von Grundkarte codiert also
#import the world map from basemap
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
# Define the projection, scale, the corners of the map, and the resolution.
m = Basemap(projection='merc',llcrnrlat=-80,urcrnrlat=80,\
llcrnrlon=-180,urcrnrlon=180,lat_ts=20,resolution='c')
# Draw the coastlines
m.drawcoastlines()
# Color the continents
m.fillcontinents(color='#ffcc99',lake_color='#ccffff')
# draw parallels and meridians.
m.drawparallels(np.arange(-90.,91.,30.))
m.drawmeridians(np.arange(-180.,181.,60.))
# fill in the oceans
m.drawmapboundary(fill_color='#ccffff')
plt.title("Map of IP Addresses")
plt.show
So jetzt möchte ich die lat langen Zahlen auf der Karte plotten. Das habe ich.
coordinates = ip_addresses[['Coords']]
for index in range(len(coordinates)):
lat, lon = coordinates[index].split(",")
print "lat=%s, lon=%s" % (lat, lon)
x,y = map(lon, lat)
map.plot(x, y, 'bo', markersize=2)
Hier ist die Ausgabe
Traceback (most recent call last): File "./assignment.py", line 85, in <module>
lat, lon = coordinates[index].split(",") File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 2059, in __getitem__
return self._getitem_column(key) File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 2066, in _getitem_column
return self._get_item_cache(key) File "/usr/local/lib/python2.7/dist-packages/pandas/core/generic.py", line 1386, in _get_item_cache
values = self._data.get(item) File "/usr/local/lib/python2.7/dist-packages/pandas/core/internals.py", line 3543, in get
loc = self.items.get_loc(item) File "/usr/local/lib/python2.7/dist-packages/pandas/indexes/base.py", line 2136, in get_loc
return self._engine.get_loc(self._maybe_cast_indexer(key))
File "pandas/index.pyx", line 132, in pandas.index.IndexEngine.get_loc (pandas/index.c:4145)
File "pandas/index.pyx", line 154, in pandas.index.IndexEngine.get_loc (pandas/index.c:4009)
File "pandas/src/hashtable_class_helper.pxi", line 732, in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13166)
File "pandas/src/hashtable_class_helper.pxi", line 740, in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13120)
KeyError: 0
Warum gibt es kein Streudiagramm? Jede Hilfe wird geschätzt.
Willkommen bei Stackoverflow. "Keine Freude" ist keine ausreichende Problembeschreibung. Was ist das Problem? Was passiert, wenn Sie Ihren Code ausführen? Wenn ein Fehler auftritt, schließen Sie das Traceback ein. [Bearbeiten] Ihre Frage entsprechend. – ImportanceOfBeingErnest