簡體   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