使用pandas从url读取导入的csv文件时出错

时间:2017-09-12 21:03:58

标签: python pandas csv

我是一个初学者,试图推进我在教程中学到的项目。该项目包括从美国地质调查局导入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"办?

非常感谢!

2 个答案:

答案 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