Recentemente, tive que fazer um trabalho que envolvia montar várias tabelas e exportá-las para arquivos no formato CSV, pois eles serviriam de input para uma outra tarefa. Ao invés de usar o DataGrip, utilizei o SQL Alchemy para rodar os scripts em Python. A única coisa nova para mim, era exportação em CSV. Como sempre, era bem simples.
A única coisa que precisava fazer era utilizar o nome do objeto ao qual a tabela foi atribuída seguido de to_csv(). Claro, sendo esse objeto um dataframe Pandas.
Essa função deve receber essencialmente os parâmetros:
- Endereço e nome do arquivo a ser criado. Se não receber endereço, salvará no local em que o arquivo Python se encontra;
- Sep: separador a ser utilizado, como vírgula, ponto e vírgula, dentre outros;
- Index: índice do arquivo. Por default será True, o que significa que criará a numeração das linhas;
- Quotechar: o que usar para identificar textos. É comum que as pessoas utilizem aspas para identificar esse tipo de campo. Por isso é o default nesse caso;
- Decimal: Separador decimal. Como nós utilizamos vírgula, é bom especificar;
- Header: Por default é True, mas se o seu dataframe não tiver cabeçalho, é preciso especificar o parâmetro como False.
Veja um exemplo bem básico que é utilizado na página da função:
import pandas as pd df = pd.DataFrame({'name': ['Raphael', 'Donatello'], 'mask': ['red', 'purple'], 'weapon': ['sai', 'bo staff']}) df.to_csv('exemplo.csv',index=False)
Criamos uma tabela com as informações das tartarugas ninjas. Agora, quero mostrar um exemplo envolvendo valores numéricos:
df = pd.DataFrame({'name': ['Raphael', 'Donatello'], 'height': [2.13, 2.10]}) df.to_csv('exemplo.csv',decimal=',')
Note que agora temos a altura das tartarugas. Porém, o Python entende que o ponto é o separador decimal. Mas no Brasil nós utilizamos a vírgula. Sendo assim, acabei especificando esse argumento.
Uma última necessidade que eu tive foi colocar todos os campos entre aspas. Para isso, temos o parâmetro quoting:
df = pd.DataFrame({'name': ['Raphael', 'Donatello'], 'height': [2.13, 2.10]}) df.to_csv('exemplo.csv',decimal=',', quoting=csv.QUOTE_ALL)
Simples, não? Espero que tenham gostado!
Bons estudos!
Ps.: A documentação completa de to_csv() você pode ver neste link.