数据分析中的一项常见任务是从 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 现在允许直接从 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中文网其他相关文章!