Uma das ações mais comuns em ciência de dados com Python é carregar os dados salvos em algum arquivo CSV para um dataframe no Pandas. Neste texto explico como usar a função read_csv
e seus principais argumentos.
Primeiro deve-se importar a biblioteca Pandas:
import pandas as pd
Básico
O uso mais básico da função read_csv
é passando o caminho para o arquivo que se quer importar:
df = pd.read_csv("test.csv")
df
PassengerId Pclass Name ... Fare Cabin Embarked
0 892 3 Kelly, Mr. James ... 7.8292 NaN Q
1 893 3 Wilkes, Mrs. James (Ellen Needs) ... 7.0000 NaN S
2 894 2 Myles, Mr. Thomas Francis ... 9.6875 NaN Q
3 895 3 Wirz, Mr. Albert ... 8.6625 NaN S
4 896 3 Hirvonen, Mrs. Alexander (Helga E Lindqvist) ... 12.2875 NaN S
.. ... ... ... ... ... ... ...
413 1305 3 Spector, Mr. Woolf ... 8.0500 NaN S
414 1306 1 Oliva y Ocana, Dona. Fermina ... 108.9000 C105 C
415 1307 3 Saether, Mr. Simon Sivertsen ... 7.2500 NaN S
416 1308 3 Ware, Mr. Frederick ... 8.0500 NaN S
417 1309 3 Peter, Master. Michael J ... 22.3583 NaN C
[418 rows x 11 columns]
Simples, não?
Porém, nem todos os CSVs são iguais, pois não existe um padrão para os arquivos Comma Separated Values. Coisas como delimitador de coluna, separador decimal, agrupador de dígitos, formato de data e codificação (encoding) podem diferir dependendo do país, sistema e preferência pessoal.
Por isso existem argumentos na função read_csv
para dizer a Pandas quais caracteres usar para delimitar colunas, separar inteiros da parte decimal, representar os agrupamentos de milhar e decodificar data e hora. Os três argumentos básicos para ler arquivos CSV no Pandas são o sep
, o decimal
e o encoding
. Com esses três pelo menos metade dos problemas com arquivos CSV são resolvidos logo ao carregar o arquivo.
Argumentos para arquivos CSV
sep: usado para dizer à função qual caractere considerar como delimitador de colunas. Os mais comuns são a vírugula “,” (padrão), o ponto e vírgula “;” e a tabulação “\t”, mas pode-se passar qualquer string para esse argumento.
encoding: determina qual a codificação de caracteres do arquivo. O padrão é o UTF-8, mas no Brasil normalmente se usa o LATIN-1 (formalmente ISO-8859-1). Quando usamos o read_csv
com esse argumento incorreto vemos aqueles nomes com caracteres estranhos (�).
Argumentos para tratar números
decimal: diz à função qual caractere representa o separador decimal de um número. O ponto é o valor padrão (por exemplo \(\pi = 3.14\)), mas no Brasil usamos a vírgula (\(\pi = 3,14\)).
thousands: define qual caractere a função interpretará como agrupador de milhar, por exemplo, ponto (1.000.000) e vírgula (1,000,000).
Argumentos para tratar linhas
skiprows e skipfooter: servem para pular linhas no início e no final do arquivo respectivamente. Útil quando o arquivo tem textos de cabeçalho e rodapé.
skip_blank_lines: passamos um valor booleano (True ou False) se quisermos que o Pandas ignore linhas em branco no arquivo CSV.
nrows: diz ao Pandas quantas linhas ler do arquivo. Útil quando o arquivo é muito grande e queremos apenas dar uma olhada no formato dos dados.
header: pode ser um int ou uma lista de int que diz ao Pandas quais linhas considerar como contendo os nomes das colunas.
names: recebe uma lista de strings com os nomes das colunas. Útil quando o CSV não tem uma linha com os nomes das colunas ou quando queremos sobreescrever os nomes das colunas. Caso for sobreescrever os nomes das colunas, passar header=0
.
Esses são os argumentos básicos para a função read_csv
do Pandas. Existem vários outros argumentos que tratam de tipos das colunas, compressão do arquivo, entre outras. Para uma lista completa visite a documentação oficial: https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html