Ce que j'essaie de faire est de tracer les valeurs de latitude et de longitude de tempêtes spécifiques sur une carte en utilisant matplotlib, fond de carte, python, etc. Mon problème est que j'essaie d'extraire la latitude, la longitude et le nom des tempêtes sur carte, mais je continue à avoir des erreurs entre les lignes 41 à 44 où je tente d'extraire les colonnes dans la liste. Quelqu'un pourrait-il m'aider s'il vous plaît à comprendre cela. Merci d'avance.
Voici à quoi ressemble le fichier:
1957,AUDREY,HU, 21.6N, 93.3W
1957,AUDREY,HU,22.0N, 93.4W
1957,AUDREY,HU,22.6N, 93.5W
1957,AUDREY,HU,23.2N, 93.6W
Je veux que la liste ressemble à ceci:
latitude = [21.6N,22.0N,23.4N]
longitude = [93.3W, 93.5W,93.8W]
name = ["Audrey","Audrey"]
Voici ce que j'ai jusqu'à présent:
data = np.loadtxt('louisianastormb.csv',dtype=np.str,delimiter=',',skiprows=1)
'''print data'''
data = np.loadtxt('louisianastormb.csv',dtype=np.str,delimiter=',',skiprows=0)
f= open('louisianastormb.csv', 'rb')
reader = csv.reader(f, delimiter=',')
header = reader.next()
zipped = Zip(*reader)
latitude = zipped[3]
longitude = zipped[4]
names = zipped[1]
x, y = m(longitude, latitude)
Voici le dernier message d'erreur/traceback que j'ai reçu:
Traceback (appel le plus récent en dernier):
Fichier "/home/darealmzd/lstorms.py", ligne 42, dansen-tête = reader.next ()
_ csv.Error: caractère de nouvelle ligne vu dans un champ non entre guillemets - devez-vous ouvrir le fichier en mode de nouvelle ligne universel?
Cela ressemble à un problème de fins de ligne dans votre code. Si vous allez utiliser tous ces logiciels scientifiques, vous pouvez aussi utiliser Pandas pour la partie de lecture CSV, qui est à la fois plus robuste et plus utile que le csv
module:
import pandas
colnames = ['year', 'name', 'city', 'latitude', 'longitude']
data = pandas.read_csv('test.csv', names=colnames)
Si vous voulez que vos listes soient comme dans la question, vous pouvez maintenant faire:
names = data.name.tolist()
latitude = data.latitude.tolist()
longitude = data.longitude.tolist()
Cela suppose que la première ligne du csv est l’en-tête
import csv
# open the file in universal line ending mode
with open('test.csv', 'rU') as infile:
# read the file as a dictionary for each row ({header : value})
reader = csv.DictReader(infile)
data = {}
for row in reader:
for header, value in row.items():
try:
data[header].append(value)
except KeyError:
data[header] = [value]
# extract the variables you want
names = data['name']
latitude = data['latitude']
longitude = data['longitude']