我是一个初学者,试图推进我在教程中学到的项目。该项目包括从美国地质调查局导入csv文件,并在地图上绘制数据。
我设法在使用计算机中的文件时制作它。但是,我无法直接从url获取csv,因此数据可以自行更新。
现在我正在使用pandas并收到此错误:
文件" C:/Users/Felipe/PycharmProjects/earthquake/earthquake.py" ;, line 6,在 with open(filename)as csvfile:TypeError:expected str,bytes或os.PathLike object,not DataFrame
import pandas as pd
filename = pd.read_csv('https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_hour.csv')
lats, lons = [], []
with open(filename) as f:
reader = csv.reader(f)
next(reader)
for row in reader:
lats.append(float(row[1]))
lons.append(float(row[2]))
print('lats', lats[0:5])
print('lons', lons[0:5])
这部分代码是我尝试检索de csv文件的地方。
我相信(再次,我是一个初学者),大熊猫实际上已经提供了我已经处理过的数据" (不再是csv了),我尝试使用的工具可用于csv文件本身(这是我试图理解错误,我确定我可能错了,但我无法想到其他任何事情。)
我试着查看一下pandas的文档但是找不到关于" DataFrame"的信息。错误。我也尝试使用" .to_csv"导入文件后,但它没有工作。
那么,tl; dr我如何绕过这段代码并导入一个csv文件并使用它的数据呢?
我还有一些额外的问题,我无法找到答案:on" open(filename)为f:"什么是" f"办?
非常感谢!
答案 0 :(得分:2)
我相信文件名应该只是名字。
filename = 'https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_hour.csv'
这应该将它变成数据帧:
import io
import requests
content = requests.get(filename).content
df = pd.read_csv(io.StringIO(content.decode('utf-8')))
或简单地说:
df = pd.read_csv(filename)
答案 1 :(得分:2)
pd.read_csv()
也接受网址并返回已解析的Pandas DataFrame。
演示:
In [55]: url = 'https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_hour.csv'
In [56]: df = pd.read_csv(url)
In [57]: df
Out[57]:
time latitude longitude depth mag magType nst gap dmin rms ... updated \
0 2017-09-12T20:38:20.330Z -15.079900 -174.19000 144.26 4.80 mb NaN 71 2.6100 0.85 ... 2017-09-12T20:56:45.040Z
1 2017-09-12T20:22:02.350Z 39.878502 -121.27433 6.78 2.74 md 9.0 215 0.3287 0.14 ... 2017-09-12T20:36:02.917Z
place type horizontalError depthError magError magNst status locationSource magSource
0 107km NNW of Hihifo, Tonga earthquake 8.80 5.30 0.033 285 reviewed us us
1 27km ENE of Magalia, California earthquake 1.82 10.49 0.240 8 automatic nc nc
[2 rows x 22 columns]
In [58]: df[['latitude','longitude']]
Out[58]:
latitude longitude
0 -15.079900 -174.19000
1 39.878502 -121.27433