quinta-feira, 20 de abril de 2017

E o CSV? Como faz pra fazer?

python3-dicas CSV
Olá Pythonistas do mundo Terra!

Bom ou mais?


Pois bem. Muitos de nós utilizamos os arquivos com valores separados por vírgula (Comma Separated Values - CSV).

De forma didática, podemos comparar o CSV como sendo o espírito ou alma de planilhas, sites,
tabelas e qualquer outra fonte de dados agrupados.

Então, aqui vai um jeito de se ler e escrever arquivos no formato CSV:

Suponhamos que temos o seguinte arquivo CSV:

poder_de_luta.csv

id,personagem,poder
1,Videl,150
2,Satan,135
3,Kuririn,650000
4,Gohan,25000000
5,GohanSSJ,1250000000
6,Vegeta,160000000
7,Vegeta,SSJ=8000000000
8,Tenshinhan,750000000
9,TenshinhanKikohu=5000000000
10,Kakaroto,200000000
11,KakarotoSSJ,10000000000
12,Trunks,160000000
13,Goten,3000000

Para ler esse arquivo precisamos importar a biblioteca csv:


Manipulando CSV

Importando a biblioteca csv:

In [1]:
import csv

Abrindo o arquivo e atribuindo seus valores a uma variável:

In [6]:
data = open('poder_de_luta.csv')
print(data)
<_io.TextIOWrapper name='poder_de_luta.csv' mode='r' encoding='UTF-8'>

Mas jovem! Eu não entendi! Onde estão os dados do arquivo?

Calma, meu chapa! A variável "data" agora está abrigando um TextIOWrapper. Futuramente farei um post explicando melhor isso mas, basicamente, isso quer dizer que minha variável abriga uma espécie de classe contendo meus dados.

Agora vamos "processar" os dados e transformá-lso em um objeto da da biblioteca 'csv':

In [3]:
csv_data = csv.reader(data)
In [4]:
print(csv_data)
<_csv.reader object at 0x7f63c0625f28>

Ah não, cara! Você tá de sacanagem! Onde estão meus dados???

Tô de sacanagem não! Eu precisava dessa etapa para poder trabalhar com os dados.

Então vamos ao que interessa:

In [7]:
for poder in csv_data:
    print(poder)
['id', 'personagem', 'poder']
['1', 'Videl', '150']
['2', 'Satan', '135']
['3', 'Kuririn', '650000']
['4', 'Gohan', '25000000']
['5', 'GohanSSJ', '1250000000']
['6', 'Vegeta', '160000000']
['7', 'Vegeta', 'SSJ=8000000000']
['8', 'Tenshinhan', '750000000']
['9', 'TenshinhanKikohu=5000000000']
['10', 'Kakaroto', '200000000']
['11', 'KakarotoSSJ', '10000000000']
['12', 'Trunks', '160000000']
['13', 'Goten', '3000000']

Até que enfim hein!

Poizé! Olha que beleza! O resultado foram vários vetores (ou arrays) contendo os valores do arquivo. A partir daí, você pode utilizar as técnicas que ensinei previamente sobre as listas para "brincar" com esses dados.

Para os aprendizes mais avançadinhos, sugiro que pesquisem sobre o framework chamado Pandas. Ele te dá uma infinidade de possibilidades para trabalhar com DataSets e DataFrames. Mas isso são cenas pros próximos capítulos.