Проблема в том, что вы декодируете контент, а затем используете io.StringIO
.
Решение состоит в том, чтобы не декодировать байты и использовать io.BytesIO
.
См. Этот ответ на переполнение стека : { ссылка }
URL возвращает содержимое в формате GNU ZIP. pd.read_csv
ожидает путь к файлу или буфер в качестве первого аргумента. Поскольку содержимое является байтовым, необходимо использовать объект io.BytesIO
. Pandas затем обрабатывает распаковку данных в файл CSV.
import io
import pandas as pd
import requests
# defining the url
url = "https://data.brasil.io/dataset/covid19/caso_full.csv.gz"
response = requests.get(url)
content = response.content
print(type(content))
df = pd.read_csv(
io.BytesIO(content), sep=",", compression="gzip", index_col=0, quotechar='"',
)
print(df.head())
ВЫХОД:
<class 'bytes'>
city_ibge_code date epidemiological_week estimated_population_2019 ... place_type state new_confirmed new_deaths
city ...
São Paulo 3550308.0 2020-02-25 9 12252023.0 ... city SP 1 0
NaN 35.0 2020-02-25 9 45919049.0 ... state SP 1 0
São Paulo 3550308.0 2020-02-26 9 12252023.0 ... city SP 0 0
NaN 35.0 2020-02-26 9 45919049.0 ... state SP 0 0
São Paulo 3550308.0 2020-02-27 9 12252023.0 ... city SP 0 0
[5 rows x 16 columns]