Como criar uma API com kaggle e ler um dataset
- Amanda Nascimento

- 1 de set.
- 2 min de leitura
Atualizado: 11 de set.
Tenho usado o site kaggle para pegar datasets para estudar data science com Python utilizando o google colab, e toda vez, tenho que ficar baixando o arquivo csv ou ficar ajustando o apontamento no import. Com ajuda do chatgpt (amo) fizemos um script para ler diretamente do kaggle e com alguns tipos de arquivos
Criando o token de acesso
Logada no kaggle, nas configurações de perfil, settings,


Documentação oficial, clique aqui!
Quando clicamos em "criar novo token" ele sobrepõe o anterior e automaticamente é baixado um arquivo .json com as credenciais.

O dataset que escolhi no kaggle foi este: conjunto de dados
Pegando o endereço do dataset no kaggle
Ao abrir o link do dataset, no canto superior direito clique em código e copie o caminho conforme selecionei na imagem abaixo e no item # 3 do script, em "dataset = ", insira o caminho.

Script
# ======================================================================
# script
# ======================================================================
# 1) Instalar a CLI do Kaggle
!pip -q install kaggle
# 2) Configurar credenciais usando a chave fornecida
import os, json, glob, subprocess
import pandas as pd
from IPython.display import display
# >>>>> Preenchidos com os dados que você forneceu <<<<<
usuario_kaggle = "INSIRA SEU NOME DE USUÁRIO NO KAGGLE AQUI"
chave_kaggle = "INSIRA SUA CHAVE AQUI"
# Exporta como variáveis de ambiente (a CLI do Kaggle aceita assim)
os.environ["KAGGLE_USERNAME"] = usuario_kaggle
os.environ["KAGGLE_KEY"] = chave_kaggle
# cria o arquivo kaggle.json (opcional)
os.makedirs("/root/.kaggle", exist_ok=True)
with open("/root/.kaggle/kaggle.json", "w") as f:
json.dump({"username": usuario_kaggle, "key": chave_kaggle}, f)
os.chmod("/root/.kaggle/kaggle.json", 0o600)
# 3) Baixar o dataset para a área temporária do Colab e extrair
dataset = "walekhwatlphilip/intro-to-data-cleaning-eda-and-machine-learning"
pasta_dados = "/content/dados_kaggle"
os.makedirs(pasta_dados, exist_ok=True)
# Lista arquivos do dataset
subprocess.run(["kaggle", "datasets", "files", "-d", dataset], check=True)
# Faz o download e descompacta
subprocess.run(["kaggle", "datasets", "download", "-d", dataset, "-p", pasta_dados, "--unzip"], check=True)
# 4) Localizar o principal CSV
arquivos_csv = sorted(
glob.glob(pasta_dados + "/**/*.csv", recursive=True),
key=os.path.getsize, reverse=True
)
if not arquivos_csv:
raise FileNotFoundError("Nenhum CSV encontrado no pacote do Kaggle.")
caminho_csv = arquivos_csv[0]
print("Arquivo encontrado:", caminho_csv)
# 5) Função para tentar ler com múltiplos encodings
def ler_csv_robusto(caminho, encodings=["utf-8", "ISO-8859-1", "cp1252", "latin1"]):
ultimo_erro = None
for enc in encodings:
try:
print(f"Tentando abrir com encoding: {enc}")
return pd.read_csv(caminho, encoding=enc), enc
except Exception as e:
ultimo_erro = e
continue
raise RuntimeError(f"Não foi possível abrir o arquivo com os encodings {encodings}. Erro: {ultimo_erro}")
# 6) Ler o CSV de forma robusta
df, usado = ler_csv_robusto(caminho_csv)
print(f"Arquivo carregado com sucesso usando encoding: {usado}")
print("Formato (linhas, colunas):", df.shape)
display(df.head(5))
obs: os encodings servem para garantir que pandas consiga abrir qualquer CSV, independentemente de como foi gravado.
utf-8, ISO-8859-1, cp1252, latin1 são encodings que podem variar dependendo de como o CSV (Comma-Separated Values) foi salvo.
Resultado



