Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

TypeError: read_gbq() got an unexpected keyword argument 'dtype'

Olá!

Vendo a documentação do Pandas dentro do 'read_gbq' não existe o comando 'dtype'. Acredito que seja devido ao ano que esse curso foi criado, assim como aconteceu com o Datalab, que não existe mais conforme uma colega informou em outro tópico. Seria ideal se atualizarem esse curso.

Mas não consegui achar nada que me possibilitasse a importação dos dados já convertendo os tipos das colunas. Poderiam me ajudar em como converter os dados na importação dos dados?

Obrigado!

3 respostas

Olá, Fabio!

Você está absolutamente correto. A função read_gbq do Pandas sofreu algumas atualizações e o argumento 'dtype' não é mais suportado. No entanto, ainda é possível converter os tipos de dados após a importação dos dados.

Vou te mostrar um exemplo prático de como você pode fazer isso. Suponha que você tenha importado seus dados usando a função read_gbq e agora você tem um DataFrame chamado df. Se você quiser converter a coluna 'visitId' para string (object), você pode fazer isso da seguinte maneira:

df['visitId'] = df['visitId'].astype(str)

O método astype() é usado para converter os tipos de dados de um DataFrame. No exemplo acima, estamos convertendo a coluna 'visitId' para string.

Espero ter ajudado e bons estudos!

Olá Allan, bom dia!

Muito obrigado pelo retorno!

Porém, quando fazemos a primeira parte desse curso, ele diz que o ideal seria carregar os dados já convertendo os dados. Por exemplo, as colunas que tem o "Id" em números, caso não sejam carregados como string e sim como integer, podemos acabar perdendo informações (e.g. um id que comece com "0" (zero) acaba por perder o dado). Sendo assim, seria possível fazer a conversão já no carregamento do dado?

solução!

Oi Fabio,

Nesse caso como o read_gbq não possui o dtype você precisaria fazer esse passo antes de pensar passar os dados para a Pandas. Por exemplo, no bigquery você poderia criar uma nova tabela com os tipos convertidos e qualquer correção já realizada.

Exemplo:

CREATE TABLE nova_tabela AS
SELECT
    CAST(id AS VARCHAR(255)) AS id_convertido,
    outra_coluna,
    mais_outra_coluna
FROM minha_tabela;

Aí você poderia chamar essa tabela a partir da pandas. Não esqueça que vai precisar passar e o endereço da sua tabela dentro da query.

Uma forma de se aprofundar nesse tema de acesso ao bigquery com outras linguagens é assistindo esse curso que é um pouco mais recente. https://cursos.alura.com.br/course/big-query-manipulacao-programatico-linguagens