繁体   English   中英

Pandas read_csv from url 返回更少的行数

[英]Pandas read_csv from url returns less number of rows

我正在使用 pandas read_csv function 直接从 url 获取数据。 这是代码

import pandas as pd
mosa_df = pd.read_csv("https://api.coronavirus.data.gov.uk/v2/data?areaType=msoa&metric=newCasesBySpecimenDateRollingSum&format=csv")
print(mosa_df.shape)

Output: (72019, 11)

但是,如果您手动下载相同的 csv,则它有 210601 条记录。 pandas read_csv 中的行数是否有任何限制? 如果没有,如何获取所有行?

我不是 100% 确定,但似乎第 72016 行的 url 数据存在一些问题(通过熊猫读取时)或 api 在通过 read_csv 方法读取时返回 72016 行。

因为当我在读取 csv 时跳过 10000 行时,在 output 中我只能读取 62016 行。
(如果 read_csv 有任何限制,那么我应该从 10001 行得到 72016 行)

urld = "https://api.coronavirus.data.gov.uk/v2/data?areaType=msoa&metric=newCasesBySpecimenDateRollingSum&format=csv"
url_c = pd.read_csv(urld, skiprows=10000, nrows=999999)

url_c.shape 
Output is (62016, 11)

同样,当我从 72015 行读取时,我只能读取单行。

url_c = pd.read_csv(urld, skiprows=72015, nrows=999999)

url_c.shape
Output is (1, 11)

正如预期的那样,当尝试从第 72017 行读取 csv 时,收到 EmptyDataError。

url_c = pd.read_csv(urld, skiprows=72017, nrows=999999)
EmptyDataError: No columns to parse from file

pandas 直接从 URL 读取似乎有问题(可能是服务器问题,服务器断开连接,pandas 无法重新连接)。

一种解决方案是通过requests读取源代码,然后将其放入 pandas:

import requests
import pandas as pd
from io import StringIO


url = "https://api.coronavirus.data.gov.uk/v2/data?areaType=msoa&metric=newCasesBySpecimenDateRollingSum&format=csv"

data = StringIO(requests.get(url).text)
mosa_df = pd.read_csv(data)
print(mosa_df.shape)

印刷:

(210785, 11)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM