首页  >  文章  >  后端开发  >  如何使用 Pandas 直接从 URL 读取数据?

如何使用 Pandas 直接从 URL 读取数据?

DDD
DDD原创
2024-11-04 10:40:30358浏览

How to Read Data Directly from a URL Using Pandas?

读取全部 URL 难题

数据分析中的一项常见任务是从 URL 加载数据。 Pandas 是一种流行的用于数据操作的 Python 库,它提供了 read_csv 函数,允许人们从位于文件路径中的 CSV 文件或作为类似文件的对象读取数据。但是,尝试直接将 URL 传递给 read_csv 可能会导致错误。

理解错误

为了演示此错误,让我们考虑问题中提供的示例:

<code class="python">import pandas as pd
import requests

url = "https://github.com/cs109/2014_data/blob/master/countries.csv"
s = requests.get(url).content
c = pd.read_csv(s)</code>

此代码尝试使用 requests 库从给定 URL 检索 CSV 文件,然后将检索到的内容作为类似文件的对象传递给 read_csv。但是,这会引发错误:

Expected file path name or file-like object, got <class 'bytes'> type

解决问题

要解决此错误,我们需要确保将类似文件的对象传递给 read_csv。在Python中,类文件对象主要有两种类型:文本文件和二进制文件。问题中提供的示例传递从 URL 检索的字节数组,这是一个二进制文件。 Read_csv 需要一个文本文件对象,可以通过解码字节数组获得该对象:

<code class="python">import pandas as pd

url = "https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv"
c = pd.read_csv(url, encoding="utf-8")</code>

通过将编码指定为“utf-8”,我们将字节数组解释为文本文件。这使得 read_csv 能够成功地从 URL 加载数据。

使用 Pandas 0.19.2 提高了简单性

在最新版本的 pandas (0.19.2) 中,有一个更简单的解决方案。 Pandas 现在允许直接从 URL 读取:

<code class="python">import pandas as pd

url = "https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv"
c = pd.read_csv(url)</code>

这消除了检索内容和解码等额外操作的需要,使过程更加简单。

以上是如何使用 Pandas 直接从 URL 读取数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn