【问题标题】:Error while reading imported csv file from url with pandas使用 pandas 从 url 读取导入的 csv 文件时出错
【发布时间】:2018-02-21 10:35:51
【问题描述】:

我是一名初学者,试图推进我通过教程学到的项目。该项目包括从美国地质调查局导入一个 csv 文件并将其数据绘制在地图上。

我在使用位于我计算机中的文件时设法做到了。但是,我无法直接从 url 获取 csv,以便数据可以自行更新。

现在我正在使用 pandas 并收到此错误:

文件“C:/Users/Felipe/PycharmProjects/earthquake/earthquake.py”,行 6、在 使用 open(filename) as csvfile: TypeError: expected str, bytes or 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 文件的地方。

我相信(同样,我是初学者)pandas 实际上为我提供了已经“处理”的数据(不再是 csv),并且我尝试使用的工具可用于 csv 文件本身(这是我试图理解错误,我确定我可能错了,但我想不出别的)。

我尝试查看 pandas 文档,但找不到太多关于“DataFrame”错误的信息。导入文件后我也尝试使用“.to_csv”,但没有成功。

那么,tl;dr 我怎样才能绕过这段代码并导入一个 csv 文件并使用它的数据?

我还有一些额外的问题我找不到答案:关于“with open(filename) as f:”“f”是做什么的?

非常感谢!

【问题讨论】:

  • df = pd.read_csv('https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_hour.csv') - 将为您提供正确解析的 DataFrame...
  • 感谢您的回答,比我想象的要简单得多。
  • 不客气! :) 仅供参考:你可以accept only one answer

标签: python pandas csv


【解决方案1】:

我认为文件名应该只是名称。

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)

【讨论】:

    【解决方案2】:

    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
    

    【讨论】:

      猜你喜欢
      • 2021-07-04
      • 2020-01-29
      • 2014-03-03
      • 2021-11-08
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多