Dataframes do Pandas

Cansado de programar?

Cansado(a) de quebrar a cabeça para aprender a programar Python de verdade?

Conheça a melhor e mais completa formação de Python e Django e sinta-se um programador verdadeiramente competente. Além de Python e Django, você também vai aprender Banco de Dados, SQL, HTML, CSS, Javascript, Bootstrap e muito mais!

Quero aprender Python e Django de Verdade! Quero aprender!
Suporte

Tire suas dúvidas diretamente com o professor

Suporte

Projetos práticos voltados para o mercado de trabalho

Suporte

Formação moderna com foco na prática profissional

Pandas, Pandas mais uma vez!

I see... Dataframes!

Agora que você é craque em Séries do Pandas, vamos ao complemento dessa dupla inseparável: Séries e Dataframes Pandas!

Vá Direto ao Assunto…

Definição de DataFrame

Depois de aprender tudo sobre Séries, chegou a hora de aprender tudo sobre Dataframes.

Como assim? Não sabe de Séries?? Pode parar por aqui então e ler nosso último post sobre as Séries do Pandas.

Como a gente é bonzinho, ele tá aqui ó.

Um jeito fácil de entender: Séries são colunas, Dataframes são tabelas!

Na verdade, um Dataframe é formado por um conjunto de séries, cada uma delas sendo uma coluna da ‘tabela’.

Para criar um Dataframe, é simples! Só precisamos instanciar um objeto a partir da classe DataFrame do Pandas:

1
2
3
4
5
6
7
>>> import pandas as pd
>>> df = pd.DataFrame([200, 350, 550])
>>> df
     0
0  200
1  350
2  550

Exemplo simples, mas já mostra que alguns componentes de um Dataframe.

Assim como as séries, Dataframes possuem índices, mas também possui colunas, cada uma delas com um nome.

Como não passamos explicitamente o nome das colunas, o pandas cria… adivinhem: um RangeIndex de 0 até o número de colunas menos um.

Mas, vamos devagar. No exemplo anterior criamos um Dataframe a partir de uma lista.

Outra forma é criar a partir de um dicionário, onde a chave é o nome da coluna e o valor, uma lista de elementos:

1
2
3
4
5
6
7
>>> import pandas as pd
>>> df = pd.DataFrame({'calorias':[200, 350, 550], 'gordura (%)':[0, 6, 15]})
>>> df
   calorias  gordura (%)
0       200            0
1       350            6
2       550           15

Agora, podemos alterar os índices para algo mais mnemônico, que facilite nossa vida:

1
2
3
4
5
6
7
>>> import pandas as pd
>>> df = pd.DataFrame({'calorias':[200, 350, 550], 'gordura (%)':[0, 6, 15]}, index=['banana', 'prato feito', 'big mac'])
>>> df
             calorias  gordura (%)
banana            200            0
prato feito       350            6
big mac           550           15

Vale lembrar que tudo que funcionava com o índice das séries também vale para os Dataframes!

Agora vamos aprender a acessar os dados de um Dataframe.

Acesso aos Dados

Essa parte é um capítulo à parte de teremos um post detalhando várias formas de acessar os dados de um Dataframe.

Alguns dos métodos, como loc, iloc, at e iat merecem bastante detalhe e exemplos, mas traremos isso pra vocês em breve!

Está curtindo esse conteúdo? :thumbsup:

Que tal receber 30 dias de conteúdo direto na sua Caixa de Entrada?

Sua assinatura não pôde ser validada.
Você fez sua assinatura com sucesso.

Assine as PyDicas e receba 30 dias do melhor conteúdo Python na sua Caixa de Entrada: direto e sem enrolação!

A verdade é que existem MUITAS formas de acessar os dados de um Dataframe, mas não vamos deixar os padawans na mão: a Python Academy sempre ao serviços de vocês :heart:

Uma forma simples de acessar todos os valores de uma coluna de um Dataframe é utilizar o df[coluna], dessa forma:

1
2
3
4
5
>>> df['gordura (%)']
banana          0
prato feito     6
big mac        15
Name: gordura (%), dtype: int64

Que estranho?! Parece uma série!

Certíssimo!

Lembra que dissemos que uma coluna de um Dataframe é uma série? Vamos testar:

1
2
>>> type(df['gordura (%)'])
<class 'pandas.core.series.Series'>

E para acessar os valores de uma linha?

Vamos recorrer aos índices!

1
2
3
4
5
6
>>> df = pd.DataFrame({'calorias':[200, 350, 550], 'gordura (%)':[0, 6, 15]})
>>> df
banana          0
prato feito     6
big mac        15
Name: gordura (%), dtype: int64

Nesse caso, como não criamos o índice, ele é numérico e corresponde à posição de cada linha.

Uma forma é acessar como acessamos elementos de uma lista, utilizando slice:

1
2
3
>>> df[1:2]
   calorias  gordura (%)
1       350            6
Jornada Python Jornada Python

Outros tipos de acesso (loc)

Adiantando um assunto importante, podemos também utilizar o método loc, que acessa por meio do índice:

1
2
3
4
>>> df.loc[0]
calorias       200
gordura (%)      0
Name: 0, dtype: int64

Percebam que a apresentação dos dois resultados é bem diferente!

Isso porque utilizando slice, o resultado é um novo Dataframe com as linhas selecionadas.

No segundo caso, o loc retorna uma série com os valores da linha selecionada.

Outro assunto que traremos pra vocês em mais detalhes: quando temos Dataframes, Séries e Cópias como resultados.

Séries são a base de tudo

Peraí, peraí: a Série não era uma coluna, agora é uma linha?

Ótima pergunta, Pythonista!

Olha que legal, o Pandas retorna tanto uma coluna como uma linha completa (com o respectivo índice) como uma Série!

Uma série “coluna” possui um nome (o título da caluna), os valores (elementos da coluna) bem como o tipo.

De forma similiar, uma série “linha” possui um nome (o índice que referencia a linha), os valores (elementos de uma linha) bem como tipo.

As séries são tão flexíveis e são uma mão na roda para representar os dados, não é à toa que os Cientistas de Dados utilizam Dataframes sempre que possível.

Conclusão

É isso, galera! Esse post + post de Séries dão uma boa base para conhecer a base de Pandas!

Daqui pra frente deixaremos de ser Padawans para sermos Mestres Jedi da Ciência de Dados.

Teremos outros tantos posts, com detalhamento do acesso aos dados com pandas, índices hierárquicos, tratando grandes volumes de dados e muito mais!

Até a próxima!

#newsletter Olá :wave: Curtiu o artigo? Então faça parte da nossa Newsletter! Privacidade Não se preocupe, respeitamos sua privacidade. Você pode se descadastrar a qualquer momento.