[英]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.