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