我是一个初学者,试图进步我从教程中学到的项目。该项目包括从美国地质调查中导入CSV文件,并在地图上绘制其数据。
我在使用计算机中的文件时设法做到了。但是,我无法直接从URL获取CSV,以便数据可以自行更新。
现在,我正在使用大熊猫并获得此错误:
文件" c:/users/felipe/pycharmprojects/earthquake/earthquake.py",line 6,in 以打开(文件名)为csvfile:typeError:预期str,bytes或os.pathike对象,而不是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文件的地方。
我相信(再次,我是初学者),Pandas实际上给了我已经"处理过"的数据(不再是CSV),而我试图使用的工具可用于CSV文件本身(这是我试图理解错误,我敢肯定我可能错了,但是我什么也没想到)。
我尝试查看大熊猫文档,但找不到有关"数据帧"错误的信息。导入文件后,我还尝试使用" .to_csv",但它不起作用。
所以,TL; DR我如何获取此代码并导入CSV文件并使用其数据?
我也有一些额外的问题,我找不到答案:on"用open(fileName)为f:" f"做什么?
非常感谢!
我相信文件名应该是名字。
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)
pd.read_csv()
也接受URL并返回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