【发布时间】:2017-09-12 22:43:52
【问题描述】:
我正在尝试从包含地震数据的 csv 中提取纬度、经度、震级和时间,以便将它们绘制成地图。
我目前提取数据的代码是:
import pandas as pd
csv_path = 'https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_hour.csv'
filename = pd.read_csv(csv_path, names = ['time','latitude','longitude','mag'])
lats, lons = [], []
magnitudes = []
timestrings = []
for row in filename:
print (row)
lats.append(row[1])
lons.append(row[2])
magnitudes.append(row[2])
timestrings.append(row[0])
# Printing this to check if the values are correctly imported
# This is, instead, printing the second letter of each word
print('lats', lats[0:5])
print('lons', lons[0:5])
但我的输出是:
time
latitude
longitude
mag
lats ['i', 'a', 'o', 'a']
lons ['m', 't', 'n', 'g']
很抱歉,如果之前有人回答过这个问题,我试图查找它,但我没有设法得到我在代码中找到的答案。
【问题讨论】:
-
filename是一个熊猫数据框。它不是一个文件。也许您正在寻找csv.reader()对象? -
如果我将代码更改为:"csv_data = csv.reader(filename) for row in csv_data:...." 我得到 "File ------- line 12, in lats.append(row[1]) IndexError: list index out of range
-
csv.reader()采用 文件对象 或可迭代的。不是文件名。 -
迭代
pd.DataFrame会产生它的列的名称。 -
现在我看到了不同之处。我仍然很难处理像这样的所有微妙之处。谢谢!
标签: python pandas matplotlib dataframe plot