Tópico 5 – DataFrames: Acessando DataFrames e Séries
DataFrames representam tabelas. Vamos finalmente explorar alguns dados!
Resultados Esperados
- Entender o
DataFrame
de pandas/babypandas - Saber acessar linhas e colunas
- Entender consultas básicas
Material Adaptado do DSC10 (UCSD)
Os dados de hoje estão aqui
Agenda
Hoje, usaremos um conjunto de dados real e muitas perguntas motivadoras para ilustrar as principais técnicas de manipulação de DataFrame.
Observação:
Alguns links importantes daqui para frente:
Tabelas de Dados
pandas
- DataFrames (tabelas) são fornecidos por um pacote chamado
pandas
. pandas
é a ferramenta para fazer ciência de dados em Python.
Mas a biblioteca pandas
padrão não é tão fofa…
Digite babypandas
!
- Criada pela Universidade de California San Diego (UCSD) criamos uma versão menor e mais agradável de
pandas
chamadababypandas
. - Mantém as coisas importantes e tem mensagens de erro muito melhores.
- É mais fácil de aprender, mas ainda é um código
pandas
válido.
DataFrames em babypandas
🐼
- As tabelas em
babypandas
(epandas
) são chamadas de “DataFrames”. - Para usar DataFrames, precisaremos importar
babypandas
. (Precisaremos denumpy
também.)
#In:
import babypandas as bpd
import numpy as np
Sobre os dados: Feira da Afonso Pena 👷
- Normalmente trabalharemos com dados armazenados no formato CSV. CSV significa “valores separados por vírgula”.
- O arquivo afonso_pena.csv contém informações sobre as barracas da feira. Tais dados foram coletados da Prefeitura de Belo Horizonte Dados Abertos PBH.
Lendo dados de um arquivo 📖
Podemos ler em um CSV usando bpd.read_csv(...)
. Forneça o caminho para um arquivo relativo ao seu notebook (se o arquivo estiver na mesma pasta do seu notebook, esse é apenas o nome do arquivo).
#In:
# para rodar no colab use 'https://raw.githubusercontent.com/flaviovdf/fcd/main/assets/06-GroupBy/data/afonso_pena.csv'
# i.e., afonso_pena = bpd.read_csv('https://raw.githubusercontent.com/flaviovdf/fcd/main/assets/06-GroupBy/data/afonso_pena.csv')
afonso_pena = bpd.read_csv('afonso_pena.csv')
Estrutura de um DataFrame
- DataFrames possuem colunas e linhas.
- Pense em cada coluna como um array. As colunas contêm dados do mesmo
tipo
. - Cada coluna possui um rótulo, por ex.
'NOME_SETOR'
e'NOME_FEIRANTE'
. - O rótulo de uma coluna é o seu nome.
- Os rótulos das colunas são armazenados como strings.
- Cada linha também possui um rótulo.
- Juntos, os rótulos das linhas são chamados de índice. O índice não é uma coluna!
#In:
afonso_pena
ID_FEIRA_AFONSO_PENA_BARRACA | CODIGO_VAGA | NOME_FANTASIA | NOME_FEIRANTE | NOME_PREPOSTO | NOME_SETOR | PRODUTOS | NUMERO_PRODUTOS_CADASTRADOS | AREA | |
---|---|---|---|---|---|---|---|---|---|
0 | 83 | F.F2.V016 | BARRACA CARMEN EMMANUEL DOS SANTOS SILVA | CARMEN EMMANUEL DOS SANTOS SILVA | JANA FONSECA VIEIRA | Criança | BOLSA DE BEBÊ, MALA DE MATERNIDADE, NECESSÁIRE... | 5.0 | 11.838911 |
1 | 84 | G.F3.V052 | BARRACA CARMEN FERNANDA ROCHA DE ALCANTARA | CARMEN FERNANDA ROCHA DE ALCANTARA | KARINA RODRIGUES BRANDORFI | Bijouterias | BRINCO, ANEL, PULSEIRA, COLAR, ARCO | 5.0 | 11.838911 |
2 | 85 | E.F4.V003 | BARRACA CARMEN LÚCIA CARVALHO DE ALMEIDA | CARMEN LÚCIA CARVALHO DE ALMEIDA | BARBARA ISABELLE CARVALHO DE PAULA | Vestuário Infantil | VESTIDO, CONJUNTO, MACACÃO | 3.0 | 11.838911 |
3 | 86 | E.F2.V004 | BARRACA CECÍLIA PAGANO NEVES SALAZAR | CECÍLIA PAGANO NEVES SALAZAR | GISELE PAGANO NEVES SALAZAR | Vestuário Infantil | MACACÃO, BLUSA, SAPATINHO | 3.0 | 11.827592 |
4 | 87 | D.F2.V016 | BARRACA CÉLIA APARECIDA DE SOUZA | CÉLIA APARECIDA DE SOUZA | EDSON PIRES DE SOUZA | Vestuário | BLUSA, BERMUDA, ROUPA DE GINÁSTICA, SAIA, VEST... | 7.0 | 11.827592 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
1245 | 1350 | G.F4.V014 | BARRACA HELCIO LICIO SILVA | HELCIO LICIO SILVA | GRAZIELA CRISTINA RAMALHO SILVA | Bijouterias | ANEL, COLAR, BROCHE, BRINCO, PULSEIRA, ALIANÇA... | 7.0 | 11.838911 |
1246 | 1351 | J.F1.V004 | BARRACA DIEGO DOS SANTOS DIAS | DIEGO DOS SANTOS DIAS | CELSO DE SOUZA LINHARES | Calçados | RASTEIRINHA, SAPATO, SANDÁLIA | 3.0 | 11.827592 |
1247 | 1352 | D.F4.V050 | BARRACA JAIR CORREA | JAIR CORREA | Keli Aparecida Batista Correa | Vestuário | VESTIDO DE MALHA, BATA DE TECIDO, CONJUNTO, SA... | 5.0 | 11.827592 |
1248 | 1353 | G.F2.V010 | BARRACA SIDNEY FERNANDO KNEIPP SOARES | SIDNEY FERNANDO KNEIPP SOARES | ANA PAULA FAUSTINA DE SOUZA | Bijouterias | COLAR, GARGANTILHA, ARCO, ANEL, PASSADOR DE CA... | 7.0 | 11.838911 |
1249 | 1354 | G.F1.V061 | BARRACA REGINA GARCIA FERREIRA | REGINA GARCIA FERREIRA | Rejane Garcia Ferreira Clemente | Bijouterias | COLAR DE METAL, PRESILHA, PASSADOR DE CABELO, ... | 4.0 | 11.827592 |
1250 rows × 9 columns
Configurando um novo índice
- Podemos definir um índice melhor usando
.set_index(column_name)
. - Os rótulos das linhas devem ser identificadores exclusivos.
- Os rótulos das linhas são nomes de linhas; idealmente, cada linha tem um nome descritivo diferente.
- ⚠️ Como a maioria dos métodos DataFrame,
.set_index
retorna um novo DataFrame; não modifica o DataFrame original.
#In:
afonso_pena.set_index('ID_FEIRA_AFONSO_PENA_BARRACA')
CODIGO_VAGA | NOME_FANTASIA | NOME_FEIRANTE | NOME_PREPOSTO | NOME_SETOR | PRODUTOS | NUMERO_PRODUTOS_CADASTRADOS | AREA | |
---|---|---|---|---|---|---|---|---|
ID_FEIRA_AFONSO_PENA_BARRACA | ||||||||
83 | F.F2.V016 | BARRACA CARMEN EMMANUEL DOS SANTOS SILVA | CARMEN EMMANUEL DOS SANTOS SILVA | JANA FONSECA VIEIRA | Criança | BOLSA DE BEBÊ, MALA DE MATERNIDADE, NECESSÁIRE... | 5.0 | 11.838911 |
84 | G.F3.V052 | BARRACA CARMEN FERNANDA ROCHA DE ALCANTARA | CARMEN FERNANDA ROCHA DE ALCANTARA | KARINA RODRIGUES BRANDORFI | Bijouterias | BRINCO, ANEL, PULSEIRA, COLAR, ARCO | 5.0 | 11.838911 |
85 | E.F4.V003 | BARRACA CARMEN LÚCIA CARVALHO DE ALMEIDA | CARMEN LÚCIA CARVALHO DE ALMEIDA | BARBARA ISABELLE CARVALHO DE PAULA | Vestuário Infantil | VESTIDO, CONJUNTO, MACACÃO | 3.0 | 11.838911 |
86 | E.F2.V004 | BARRACA CECÍLIA PAGANO NEVES SALAZAR | CECÍLIA PAGANO NEVES SALAZAR | GISELE PAGANO NEVES SALAZAR | Vestuário Infantil | MACACÃO, BLUSA, SAPATINHO | 3.0 | 11.827592 |
87 | D.F2.V016 | BARRACA CÉLIA APARECIDA DE SOUZA | CÉLIA APARECIDA DE SOUZA | EDSON PIRES DE SOUZA | Vestuário | BLUSA, BERMUDA, ROUPA DE GINÁSTICA, SAIA, VEST... | 7.0 | 11.827592 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
1350 | G.F4.V014 | BARRACA HELCIO LICIO SILVA | HELCIO LICIO SILVA | GRAZIELA CRISTINA RAMALHO SILVA | Bijouterias | ANEL, COLAR, BROCHE, BRINCO, PULSEIRA, ALIANÇA... | 7.0 | 11.838911 |
1351 | J.F1.V004 | BARRACA DIEGO DOS SANTOS DIAS | DIEGO DOS SANTOS DIAS | CELSO DE SOUZA LINHARES | Calçados | RASTEIRINHA, SAPATO, SANDÁLIA | 3.0 | 11.827592 |
1352 | D.F4.V050 | BARRACA JAIR CORREA | JAIR CORREA | Keli Aparecida Batista Correa | Vestuário | VESTIDO DE MALHA, BATA DE TECIDO, CONJUNTO, SA... | 5.0 | 11.827592 |
1353 | G.F2.V010 | BARRACA SIDNEY FERNANDO KNEIPP SOARES | SIDNEY FERNANDO KNEIPP SOARES | ANA PAULA FAUSTINA DE SOUZA | Bijouterias | COLAR, GARGANTILHA, ARCO, ANEL, PASSADOR DE CA... | 7.0 | 11.838911 |
1354 | G.F1.V061 | BARRACA REGINA GARCIA FERREIRA | REGINA GARCIA FERREIRA | Rejane Garcia Ferreira Clemente | Bijouterias | COLAR DE METAL, PRESILHA, PASSADOR DE CABELO, ... | 4.0 | 11.827592 |
1250 rows × 8 columns
#In:
afonso_pena
ID_FEIRA_AFONSO_PENA_BARRACA | CODIGO_VAGA | NOME_FANTASIA | NOME_FEIRANTE | NOME_PREPOSTO | NOME_SETOR | PRODUTOS | NUMERO_PRODUTOS_CADASTRADOS | AREA | |
---|---|---|---|---|---|---|---|---|---|
0 | 83 | F.F2.V016 | BARRACA CARMEN EMMANUEL DOS SANTOS SILVA | CARMEN EMMANUEL DOS SANTOS SILVA | JANA FONSECA VIEIRA | Criança | BOLSA DE BEBÊ, MALA DE MATERNIDADE, NECESSÁIRE... | 5.0 | 11.838911 |
1 | 84 | G.F3.V052 | BARRACA CARMEN FERNANDA ROCHA DE ALCANTARA | CARMEN FERNANDA ROCHA DE ALCANTARA | KARINA RODRIGUES BRANDORFI | Bijouterias | BRINCO, ANEL, PULSEIRA, COLAR, ARCO | 5.0 | 11.838911 |
2 | 85 | E.F4.V003 | BARRACA CARMEN LÚCIA CARVALHO DE ALMEIDA | CARMEN LÚCIA CARVALHO DE ALMEIDA | BARBARA ISABELLE CARVALHO DE PAULA | Vestuário Infantil | VESTIDO, CONJUNTO, MACACÃO | 3.0 | 11.838911 |
3 | 86 | E.F2.V004 | BARRACA CECÍLIA PAGANO NEVES SALAZAR | CECÍLIA PAGANO NEVES SALAZAR | GISELE PAGANO NEVES SALAZAR | Vestuário Infantil | MACACÃO, BLUSA, SAPATINHO | 3.0 | 11.827592 |
4 | 87 | D.F2.V016 | BARRACA CÉLIA APARECIDA DE SOUZA | CÉLIA APARECIDA DE SOUZA | EDSON PIRES DE SOUZA | Vestuário | BLUSA, BERMUDA, ROUPA DE GINÁSTICA, SAIA, VEST... | 7.0 | 11.827592 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
1245 | 1350 | G.F4.V014 | BARRACA HELCIO LICIO SILVA | HELCIO LICIO SILVA | GRAZIELA CRISTINA RAMALHO SILVA | Bijouterias | ANEL, COLAR, BROCHE, BRINCO, PULSEIRA, ALIANÇA... | 7.0 | 11.838911 |
1246 | 1351 | J.F1.V004 | BARRACA DIEGO DOS SANTOS DIAS | DIEGO DOS SANTOS DIAS | CELSO DE SOUZA LINHARES | Calçados | RASTEIRINHA, SAPATO, SANDÁLIA | 3.0 | 11.827592 |
1247 | 1352 | D.F4.V050 | BARRACA JAIR CORREA | JAIR CORREA | Keli Aparecida Batista Correa | Vestuário | VESTIDO DE MALHA, BATA DE TECIDO, CONJUNTO, SA... | 5.0 | 11.827592 |
1248 | 1353 | G.F2.V010 | BARRACA SIDNEY FERNANDO KNEIPP SOARES | SIDNEY FERNANDO KNEIPP SOARES | ANA PAULA FAUSTINA DE SOUZA | Bijouterias | COLAR, GARGANTILHA, ARCO, ANEL, PASSADOR DE CA... | 7.0 | 11.838911 |
1249 | 1354 | G.F1.V061 | BARRACA REGINA GARCIA FERREIRA | REGINA GARCIA FERREIRA | Rejane Garcia Ferreira Clemente | Bijouterias | COLAR DE METAL, PRESILHA, PASSADOR DE CABELO, ... | 4.0 | 11.827592 |
1250 rows × 9 columns
#In:
afonso_pena = afonso_pena.set_index('ID_FEIRA_AFONSO_PENA_BARRACA')
afonso_pena
CODIGO_VAGA | NOME_FANTASIA | NOME_FEIRANTE | NOME_PREPOSTO | NOME_SETOR | PRODUTOS | NUMERO_PRODUTOS_CADASTRADOS | AREA | |
---|---|---|---|---|---|---|---|---|
ID_FEIRA_AFONSO_PENA_BARRACA | ||||||||
83 | F.F2.V016 | BARRACA CARMEN EMMANUEL DOS SANTOS SILVA | CARMEN EMMANUEL DOS SANTOS SILVA | JANA FONSECA VIEIRA | Criança | BOLSA DE BEBÊ, MALA DE MATERNIDADE, NECESSÁIRE... | 5.0 | 11.838911 |
84 | G.F3.V052 | BARRACA CARMEN FERNANDA ROCHA DE ALCANTARA | CARMEN FERNANDA ROCHA DE ALCANTARA | KARINA RODRIGUES BRANDORFI | Bijouterias | BRINCO, ANEL, PULSEIRA, COLAR, ARCO | 5.0 | 11.838911 |
85 | E.F4.V003 | BARRACA CARMEN LÚCIA CARVALHO DE ALMEIDA | CARMEN LÚCIA CARVALHO DE ALMEIDA | BARBARA ISABELLE CARVALHO DE PAULA | Vestuário Infantil | VESTIDO, CONJUNTO, MACACÃO | 3.0 | 11.838911 |
86 | E.F2.V004 | BARRACA CECÍLIA PAGANO NEVES SALAZAR | CECÍLIA PAGANO NEVES SALAZAR | GISELE PAGANO NEVES SALAZAR | Vestuário Infantil | MACACÃO, BLUSA, SAPATINHO | 3.0 | 11.827592 |
87 | D.F2.V016 | BARRACA CÉLIA APARECIDA DE SOUZA | CÉLIA APARECIDA DE SOUZA | EDSON PIRES DE SOUZA | Vestuário | BLUSA, BERMUDA, ROUPA DE GINÁSTICA, SAIA, VEST... | 7.0 | 11.827592 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
1350 | G.F4.V014 | BARRACA HELCIO LICIO SILVA | HELCIO LICIO SILVA | GRAZIELA CRISTINA RAMALHO SILVA | Bijouterias | ANEL, COLAR, BROCHE, BRINCO, PULSEIRA, ALIANÇA... | 7.0 | 11.838911 |
1351 | J.F1.V004 | BARRACA DIEGO DOS SANTOS DIAS | DIEGO DOS SANTOS DIAS | CELSO DE SOUZA LINHARES | Calçados | RASTEIRINHA, SAPATO, SANDÁLIA | 3.0 | 11.827592 |
1352 | D.F4.V050 | BARRACA JAIR CORREA | JAIR CORREA | Keli Aparecida Batista Correa | Vestuário | VESTIDO DE MALHA, BATA DE TECIDO, CONJUNTO, SA... | 5.0 | 11.827592 |
1353 | G.F2.V010 | BARRACA SIDNEY FERNANDO KNEIPP SOARES | SIDNEY FERNANDO KNEIPP SOARES | ANA PAULA FAUSTINA DE SOUZA | Bijouterias | COLAR, GARGANTILHA, ARCO, ANEL, PASSADOR DE CA... | 7.0 | 11.838911 |
1354 | G.F1.V061 | BARRACA REGINA GARCIA FERREIRA | REGINA GARCIA FERREIRA | Rejane Garcia Ferreira Clemente | Bijouterias | COLAR DE METAL, PRESILHA, PASSADOR DE CABELO, ... | 4.0 | 11.827592 |
1250 rows × 8 columns
Forma de um DataFrame
.shape
retorna o número de linhas e colunas em um determinado DataFrame.- Acesse cada um com
[]
: .shape[0]
para linhas..shape[1]
para colunas.
#In:
# There were 9 columns before, but one of them became the index, and the index is not a column!
afonso_pena.shape
(1250, 8)
#In:
# Number of rows
afonso_pena.shape[0]
1250
#In:
# Number of columns
afonso_pena.shape[1]
8
Exemplo 1: Total, Media e Mediana de Produtos
Conceitos principais: Acessar colunas, entender operações em colunas numéricas.
Encontrando o total de solicitações
- Pergunta: Como sumarizar uma coluna?
- Obtenha a coluna
- Agregue o valor
Etapa 1 – Obtendo uma coluna
- Podemos obter uma coluna de um DataFrame usando
.get(column_name)
. - ⚠️ Os nomes das colunas diferenciam maiúsculas de minúsculas!
- Os nomes das colunas são strings, então precisamos usar aspas.
- O resultado parece um DataFrame de 1 coluna, mas na verdade é uma Série.
#In:
afonso_pena
CODIGO_VAGA | NOME_FANTASIA | NOME_FEIRANTE | NOME_PREPOSTO | NOME_SETOR | PRODUTOS | NUMERO_PRODUTOS_CADASTRADOS | AREA | |
---|---|---|---|---|---|---|---|---|
ID_FEIRA_AFONSO_PENA_BARRACA | ||||||||
83 | F.F2.V016 | BARRACA CARMEN EMMANUEL DOS SANTOS SILVA | CARMEN EMMANUEL DOS SANTOS SILVA | JANA FONSECA VIEIRA | Criança | BOLSA DE BEBÊ, MALA DE MATERNIDADE, NECESSÁIRE... | 5.0 | 11.838911 |
84 | G.F3.V052 | BARRACA CARMEN FERNANDA ROCHA DE ALCANTARA | CARMEN FERNANDA ROCHA DE ALCANTARA | KARINA RODRIGUES BRANDORFI | Bijouterias | BRINCO, ANEL, PULSEIRA, COLAR, ARCO | 5.0 | 11.838911 |
85 | E.F4.V003 | BARRACA CARMEN LÚCIA CARVALHO DE ALMEIDA | CARMEN LÚCIA CARVALHO DE ALMEIDA | BARBARA ISABELLE CARVALHO DE PAULA | Vestuário Infantil | VESTIDO, CONJUNTO, MACACÃO | 3.0 | 11.838911 |
86 | E.F2.V004 | BARRACA CECÍLIA PAGANO NEVES SALAZAR | CECÍLIA PAGANO NEVES SALAZAR | GISELE PAGANO NEVES SALAZAR | Vestuário Infantil | MACACÃO, BLUSA, SAPATINHO | 3.0 | 11.827592 |
87 | D.F2.V016 | BARRACA CÉLIA APARECIDA DE SOUZA | CÉLIA APARECIDA DE SOUZA | EDSON PIRES DE SOUZA | Vestuário | BLUSA, BERMUDA, ROUPA DE GINÁSTICA, SAIA, VEST... | 7.0 | 11.827592 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
1350 | G.F4.V014 | BARRACA HELCIO LICIO SILVA | HELCIO LICIO SILVA | GRAZIELA CRISTINA RAMALHO SILVA | Bijouterias | ANEL, COLAR, BROCHE, BRINCO, PULSEIRA, ALIANÇA... | 7.0 | 11.838911 |
1351 | J.F1.V004 | BARRACA DIEGO DOS SANTOS DIAS | DIEGO DOS SANTOS DIAS | CELSO DE SOUZA LINHARES | Calçados | RASTEIRINHA, SAPATO, SANDÁLIA | 3.0 | 11.827592 |
1352 | D.F4.V050 | BARRACA JAIR CORREA | JAIR CORREA | Keli Aparecida Batista Correa | Vestuário | VESTIDO DE MALHA, BATA DE TECIDO, CONJUNTO, SA... | 5.0 | 11.827592 |
1353 | G.F2.V010 | BARRACA SIDNEY FERNANDO KNEIPP SOARES | SIDNEY FERNANDO KNEIPP SOARES | ANA PAULA FAUSTINA DE SOUZA | Bijouterias | COLAR, GARGANTILHA, ARCO, ANEL, PASSADOR DE CA... | 7.0 | 11.838911 |
1354 | G.F1.V061 | BARRACA REGINA GARCIA FERREIRA | REGINA GARCIA FERREIRA | Rejane Garcia Ferreira Clemente | Bijouterias | COLAR DE METAL, PRESILHA, PASSADOR DE CABELO, ... | 4.0 | 11.827592 |
1250 rows × 8 columns
#In:
afonso_pena.get('NUMERO_PRODUTOS_CADASTRADOS')
ID_FEIRA_AFONSO_PENA_BARRACA
83 5.0
84 5.0
85 3.0
86 3.0
87 7.0
...
1350 7.0
1351 3.0
1352 5.0
1353 7.0
1354 4.0
Name: NUMERO_PRODUTOS_CADASTRADOS, Length: 1250, dtype: float64
Digressão: Série
- Uma Série é como um array, mas com um índice.
- Em particular, as séries suportam aritmética.
#In:
afonso_pena.get('NUMERO_PRODUTOS_CADASTRADOS')
ID_FEIRA_AFONSO_PENA_BARRACA
83 5.0
84 5.0
85 3.0
86 3.0
87 7.0
...
1350 7.0
1351 3.0
1352 5.0
1353 7.0
1354 4.0
Name: NUMERO_PRODUTOS_CADASTRADOS, Length: 1250, dtype: float64
Etapa 2 – Calculando o total
- Assim como acontece com os arrays, podemos realizar operações aritméticas nas séries
#In:
afonso_pena.get('NUMERO_PRODUTOS_CADASTRADOS').sum()
7457.0
#In:
afonso_pena.get('NUMERO_PRODUTOS_CADASTRADOS').max()
21.0
#In:
afonso_pena.get('NUMERO_PRODUTOS_CADASTRADOS').mean()
5.9656
Exemplo 2: Quais feirantes vendem mais produtos?
Conceitos principais: Classificação. Acessando usando posições inteiras.
Etapa 1 – Classificando o DataFrame
- Use o método
.sort_values(by=column_name)
para classificar. - O
by=
pode ser omitido, mas ajuda na legibilidade. - Como a maioria dos métodos DataFrame, retorna um novo DataFrame.
#In:
afonso_pena.sort_values(by='NUMERO_PRODUTOS_CADASTRADOS')
CODIGO_VAGA | NOME_FANTASIA | NOME_FEIRANTE | NOME_PREPOSTO | NOME_SETOR | PRODUTOS | NUMERO_PRODUTOS_CADASTRADOS | AREA | |
---|---|---|---|---|---|---|---|---|
ID_FEIRA_AFONSO_PENA_BARRACA | ||||||||
545 | Y.F1.V027 | BARRACA NATALICE BARBOSA DA CONCEIÇÃO | NATALICE BARBOSA DA CONCEIÇÃO | WALDIR BARBOSA DA SILVA | Alimentação | ACARAJÉ | 1.0 | 33.611058 |
1019 | P.F1.V007 | BARRACA EVANDRO TADEU DE OLIVEIRA | EVANDRO TADEU DE OLIVEIRA | JONH WAINE DE ALMEIDA SANTOS | Artes e Pintura | PINTURA ACRÍLICA | 1.0 | 23.790191 |
122 | E.F4.V001 | BARRACA DORA LÚCIA BATISTA CUNHA | DORA LÚCIA BATISTA CUNHA | CRISTINA CUNHA ESPERANCA | Vestuário Infantil | VESTIDO | 1.0 | 11.838911 |
1331 | E.F2.V024 | BARRACA VALERIA JANINE VILELA RIBEIRO | VALERIA JANINE VILELA RIBEIRO | AGDA GIOVANNA VILELA | Vestuário Infantil | VESTIDO | 1.0 | 11.827592 |
387 | I.F3.V031 | BARRACA MARIA ANGELICA DOS SANTOS PINTO | MARIA ANGELICA DOS SANTOS PINTO | PABLO TORQUATO SILVA | Cintos, Bolsas e Acessórios | BOLSA | 1.0 | 11.838911 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
653 | F.F1.V015 | BARRACA SILVIA REGINA NOGUEIRA RIBEIRO | SILVIA REGINA NOGUEIRA RIBEIRO | LIGIA MARIA NOGUEIRA RIBEIRO | Criança | VESTIDO, BLUSA, CONJUNTO VIROL, CALÇA, COLETE,... | 20.0 | 11.827592 |
1406 | Z.F1.V007 | BARRACA FRANCINERE AMARAL CARDOSO RIBEIRO DE S... | FRANCINERE AMARAL CARDOSO RIBEIRO DE SOUZA | RAYKARD AGUIAR DE JESUS | Alimentação | CERVEJA, REFRIGERANTE, SUCO INDUSTRIALIZADO, E... | 20.0 | 33.611058 |
336 | B.F1.V001 | BARRACA LUCY DOS SANTOS SEBASTIAO | LUCY DOS SANTOS SEBASTIAO | LAURO MARTINS DOS SANTOS | Decoração e Utilidades | CERÂMICA VITRIFICADA, MOLDURA, VELA, CASTIÇAL,... | 20.0 | 21.193242 |
491 | F.F2.V011 | BARRACA MARILEA IMACULADA MUNIZ COSTA | MARILEA IMACULADA MUNIZ COSTA | KELLINGTON NONATO MUNIZ COSTA | Criança | KIT BERÇO, CORTINADO, BONECA DE PELÚCIA, SAIA ... | 21.0 | 11.827592 |
109 | Y.F1.V012 | BARRACA DAYSE PINTO NORBERTO | DAYSE PINTO NORBERTO | DJALMA ANTÔNIO DE FREITAS | Alimentação | CERVEJA, TORRESMO, CHIPS, AZEITONA, REFRIGERAN... | 21.0 | 33.611057 |
1250 rows × 8 columns
Isso classifica, mas em ordem crescente (de pequeno para grande). Queremos o contrário!
Etapa 2 – Classificando o DataFrame em ordem decrescente
- Use
.sort_values(by=column_name, ascending=False)
para classificar em ordem decrescente. ascendente
é um argumento opcional. Se omitido, será definido comoTrue
por padrão.- Este é um exemplo de argumento de palavra-chave ou argumento nomeado.
- Se quisermos especificar a ordem de classificação, devemos usar a palavra-chave
ascendente=
.
#In:
ordenado = afonso_pena.sort_values(by='NUMERO_PRODUTOS_CADASTRADOS', ascending=False)
ordenado
CODIGO_VAGA | NOME_FANTASIA | NOME_FEIRANTE | NOME_PREPOSTO | NOME_SETOR | PRODUTOS | NUMERO_PRODUTOS_CADASTRADOS | AREA | |
---|---|---|---|---|---|---|---|---|
ID_FEIRA_AFONSO_PENA_BARRACA | ||||||||
109 | Y.F1.V012 | BARRACA DAYSE PINTO NORBERTO | DAYSE PINTO NORBERTO | DJALMA ANTÔNIO DE FREITAS | Alimentação | CERVEJA, TORRESMO, CHIPS, AZEITONA, REFRIGERAN... | 21.0 | 33.611057 |
491 | F.F2.V011 | BARRACA MARILEA IMACULADA MUNIZ COSTA | MARILEA IMACULADA MUNIZ COSTA | KELLINGTON NONATO MUNIZ COSTA | Criança | KIT BERÇO, CORTINADO, BONECA DE PELÚCIA, SAIA ... | 21.0 | 11.827592 |
653 | F.F1.V015 | BARRACA SILVIA REGINA NOGUEIRA RIBEIRO | SILVIA REGINA NOGUEIRA RIBEIRO | LIGIA MARIA NOGUEIRA RIBEIRO | Criança | VESTIDO, BLUSA, CONJUNTO VIROL, CALÇA, COLETE,... | 20.0 | 11.827592 |
1406 | Z.F1.V007 | BARRACA FRANCINERE AMARAL CARDOSO RIBEIRO DE S... | FRANCINERE AMARAL CARDOSO RIBEIRO DE SOUZA | RAYKARD AGUIAR DE JESUS | Alimentação | CERVEJA, REFRIGERANTE, SUCO INDUSTRIALIZADO, E... | 20.0 | 33.611058 |
336 | B.F1.V001 | BARRACA LUCY DOS SANTOS SEBASTIAO | LUCY DOS SANTOS SEBASTIAO | LAURO MARTINS DOS SANTOS | Decoração e Utilidades | CERÂMICA VITRIFICADA, MOLDURA, VELA, CASTIÇAL,... | 20.0 | 21.193242 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
647 | P.F1.V023 | BARRACA SÉRGIO BARBOSA DE JESUS | SÉRGIO BARBOSA DE JESUS | MARIA ADEMILDE DURAES DOS SANTOS | Artes e Pintura | PINTURA A ÓLEO | 1.0 | 23.790191 |
401 | I.F1.V017 | BARRACA ROSÂNGELA APARECIDA CALDEIRA DE ALVAR... | ROSÂNGELA APARECIDA CALDEIRA DE ALVARENGA | ELZIM JOSÉ LUIZ | Cintos, Bolsas e Acessórios | BOLSA | 1.0 | 11.838911 |
811 | D.F3.V005 | BARRACA JANE LACERDA FARIA | JANE LACERDA FARIA | WASHIMGTON GERALDO SILVA | Vestuário | BLUSA | 1.0 | 11.838911 |
1022 | P.F1.V008 | BARRACA IVETE EMILIA MAGALHÃES SANTOS | IVETE EMILIA MAGALHÃES SANTOS | LAZARA TEREZA RIZZO | Artes e Pintura | PINTURA A ÓLEO | 1.0 | 23.790191 |
1170 | I.F1.V034 | BARRACA LUCIENE REIS VASCONCELOS | LUCIENE REIS VASCONCELOS | ELIZETE GENOVEVA DA SILVA | Cintos, Bolsas e Acessórios | BOLSA | 1.0 | 11.827592 |
1250 rows × 8 columns
Exemplo 3: Criando novas Colunas
Conceitos Principais Entender operações em colunas assim como em vetores
Etapa 1 - Operações aritméticas em colunas
- Crie uma variável para o número de produtos cadastrados
- Crie uma outra variável para a área
#In:
produtos = afonso_pena.get('NUMERO_PRODUTOS_CADASTRADOS')
area = afonso_pena.get('AREA')
- Assim como em
numpy
(aula passada), podemos realizar operações aritméticas em colunas pandas.
#In:
produtos / area
ID_FEIRA_AFONSO_PENA_BARRACA
83 0.422336
84 0.422336
85 0.253402
86 0.253644
87 0.591836
...
1350 0.591271
1351 0.253644
1352 0.422740
1353 0.591271
1354 0.338192
Length: 1250, dtype: float64
- Observe como a resposta tem a divisão dos produtos pela área, ou seja, a densidade de cada barraca
- Além do mais, observe como temos também o índice de cada barraca
Etapa 2: Criando uma nova coluna
- Agora, vamos criar a coluna densidade na nossa base de dados
- Use
.assign(name_of_column=data_in_series)
para atribuir uma série (ou array, ou lista) a um DataFrame. - ⚠️ Não coloque aspas em
name_of_column
. - Cria um novo DataFrame!
#In:
afonso_pena.assign(DENSIDADE = produtos / area)
CODIGO_VAGA | NOME_FANTASIA | NOME_FEIRANTE | NOME_PREPOSTO | NOME_SETOR | PRODUTOS | NUMERO_PRODUTOS_CADASTRADOS | AREA | DENSIDADE | |
---|---|---|---|---|---|---|---|---|---|
ID_FEIRA_AFONSO_PENA_BARRACA | |||||||||
83 | F.F2.V016 | BARRACA CARMEN EMMANUEL DOS SANTOS SILVA | CARMEN EMMANUEL DOS SANTOS SILVA | JANA FONSECA VIEIRA | Criança | BOLSA DE BEBÊ, MALA DE MATERNIDADE, NECESSÁIRE... | 5.0 | 11.838911 | 0.422336 |
84 | G.F3.V052 | BARRACA CARMEN FERNANDA ROCHA DE ALCANTARA | CARMEN FERNANDA ROCHA DE ALCANTARA | KARINA RODRIGUES BRANDORFI | Bijouterias | BRINCO, ANEL, PULSEIRA, COLAR, ARCO | 5.0 | 11.838911 | 0.422336 |
85 | E.F4.V003 | BARRACA CARMEN LÚCIA CARVALHO DE ALMEIDA | CARMEN LÚCIA CARVALHO DE ALMEIDA | BARBARA ISABELLE CARVALHO DE PAULA | Vestuário Infantil | VESTIDO, CONJUNTO, MACACÃO | 3.0 | 11.838911 | 0.253402 |
86 | E.F2.V004 | BARRACA CECÍLIA PAGANO NEVES SALAZAR | CECÍLIA PAGANO NEVES SALAZAR | GISELE PAGANO NEVES SALAZAR | Vestuário Infantil | MACACÃO, BLUSA, SAPATINHO | 3.0 | 11.827592 | 0.253644 |
87 | D.F2.V016 | BARRACA CÉLIA APARECIDA DE SOUZA | CÉLIA APARECIDA DE SOUZA | EDSON PIRES DE SOUZA | Vestuário | BLUSA, BERMUDA, ROUPA DE GINÁSTICA, SAIA, VEST... | 7.0 | 11.827592 | 0.591836 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
1350 | G.F4.V014 | BARRACA HELCIO LICIO SILVA | HELCIO LICIO SILVA | GRAZIELA CRISTINA RAMALHO SILVA | Bijouterias | ANEL, COLAR, BROCHE, BRINCO, PULSEIRA, ALIANÇA... | 7.0 | 11.838911 | 0.591271 |
1351 | J.F1.V004 | BARRACA DIEGO DOS SANTOS DIAS | DIEGO DOS SANTOS DIAS | CELSO DE SOUZA LINHARES | Calçados | RASTEIRINHA, SAPATO, SANDÁLIA | 3.0 | 11.827592 | 0.253644 |
1352 | D.F4.V050 | BARRACA JAIR CORREA | JAIR CORREA | Keli Aparecida Batista Correa | Vestuário | VESTIDO DE MALHA, BATA DE TECIDO, CONJUNTO, SA... | 5.0 | 11.827592 | 0.422740 |
1353 | G.F2.V010 | BARRACA SIDNEY FERNANDO KNEIPP SOARES | SIDNEY FERNANDO KNEIPP SOARES | ANA PAULA FAUSTINA DE SOUZA | Bijouterias | COLAR, GARGANTILHA, ARCO, ANEL, PASSADOR DE CA... | 7.0 | 11.838911 | 0.591271 |
1354 | G.F1.V061 | BARRACA REGINA GARCIA FERREIRA | REGINA GARCIA FERREIRA | Rejane Garcia Ferreira Clemente | Bijouterias | COLAR DE METAL, PRESILHA, PASSADOR DE CABELO, ... | 4.0 | 11.827592 | 0.338192 |
1250 rows × 9 columns
- O código acima cria não altera os dados originais
- Ainda temos as mesmas colunas de antes
#In:
afonso_pena.columns
Index(['CODIGO_VAGA', 'NOME_FANTASIA', 'NOME_FEIRANTE', 'NOME_PREPOSTO',
'NOME_SETOR', 'PRODUTOS', 'NUMERO_PRODUTOS_CADASTRADOS', 'AREA'],
dtype='object')
- Porém, podemos criar uma variável
#In:
afonso_pena = afonso_pena.assign(DENSIDADE = produtos / area)
afonso_pena.get('DENSIDADE')
ID_FEIRA_AFONSO_PENA_BARRACA
83 0.422336
84 0.422336
85 0.253402
86 0.253644
87 0.591836
...
1350 0.591271
1351 0.253644
1352 0.422740
1353 0.591271
1354 0.338192
Name: DENSIDADE, Length: 1250, dtype: float64
Exemplo 3: Agora você responda.
- Qual a densidade máxima?
- Qual a densidade mínima?
- Qual a densidade média?
#In:
# Suas respostas aqui!
Exemplo 4: A densidade média das barracas de produtos de crianças 👶🧸?
- Podemos responde a pergunda acima se tivéssemos um DataFrame composto apenas por tais barracas.
- Como conseguimos esse DataFrame?
#In:
# Aqui temos os setores
afonso_pena.get('NOME_SETOR')
ID_FEIRA_AFONSO_PENA_BARRACA
83 Criança
84 Bijouterias
85 Vestuário Infantil
86 Vestuário Infantil
87 Vestuário
...
1350 Bijouterias
1351 Calçados
1352 Vestuário
1353 Bijouterias
1354 Bijouterias
Name: NOME_SETOR, Length: 1250, dtype: object
#In:
# Quais deles são de crianças
afonso_pena.get('NOME_SETOR') == 'Criança'
ID_FEIRA_AFONSO_PENA_BARRACA
83 True
84 False
85 False
86 False
87 False
...
1350 False
1351 False
1352 False
1353 False
1354 False
Name: NOME_SETOR, Length: 1250, dtype: bool
Use ==
para verificar a igualdade. Não =
, pois é para atribuição de um valor a uma variável.
#In:
'Criança' == 'Criança'
True
#In:
'Criança' == 'Adulto'
False
Podemos transmitir a verificação de igualdade para cada elemento de uma Série. A comparação acontece elemento a elemento.
#In:
afonso_pena.get('NOME_SETOR') == 'Criança'
ID_FEIRA_AFONSO_PENA_BARRACA
83 True
84 False
85 False
86 False
87 False
...
1350 False
1351 False
1352 False
1353 False
1354 False
Name: NOME_SETOR, Length: 1250, dtype: bool
À parte: Booleanos
- Quando comparamos dois valores, o resultado é
True
ouFalse
. - Observe que essas palavras não estão entre aspas.
bool
é um tipo de dados em Python, assim comoint
,float
estr
.- Significa “Boolean”, em homenagem a George Boole, um dos primeiros matemáticos.
- Existem apenas dois valores booleanos possíveis:
True
ouFalse
. - Sim ou não.
- Ligado ou desligado.
- 1 ou 0.
Operadores de comparação
Existem vários tipos de comparações que podemos fazer.
símbolo | significado |
---|---|
== | igual a |
!= | diferente de |
< | menos que |
<= | menor ou igual a |
> | maior que |
>= | maior ou igual a |
Podemos então usar o operador apropriado para ver tudo que é diferente de ‘Criança’ Observe que a resposta é o oposto de antes!
#In:
afonso_pena.get('NOME_SETOR') != 'Criança'
ID_FEIRA_AFONSO_PENA_BARRACA
83 False
84 True
85 True
86 True
87 True
...
1350 True
1351 True
1352 True
1353 True
1354 True
Name: NOME_SETOR, Length: 1250, dtype: bool
O que é uma consulta? 🤔
- Uma “consulta” é um código que extrai linhas de um DataFrame para as quais determinadas condições são verdadeiras.
- Freqüentemente usamos consultas para filtrar DataFrames para que contenham apenas as linhas que satisfaçam as condições declaradas em nossas perguntas.
Como consultamos um DataFrame?
Para selecionar apenas determinadas linhas de solicitações
:
- Faça uma sequência (lista/matriz/série) de
True
s (manter) eFalse
s (lançar), geralmente fazendo uma comparação. - Em seguida, passe-o para
dados[booleanos]
.
#In:
afonso_pena[afonso_pena.get('NOME_SETOR') == 'Criança']
CODIGO_VAGA | NOME_FANTASIA | NOME_FEIRANTE | NOME_PREPOSTO | NOME_SETOR | PRODUTOS | NUMERO_PRODUTOS_CADASTRADOS | AREA | DENSIDADE | |
---|---|---|---|---|---|---|---|---|---|
ID_FEIRA_AFONSO_PENA_BARRACA | |||||||||
83 | F.F2.V016 | BARRACA CARMEN EMMANUEL DOS SANTOS SILVA | CARMEN EMMANUEL DOS SANTOS SILVA | JANA FONSECA VIEIRA | Criança | BOLSA DE BEBÊ, MALA DE MATERNIDADE, NECESSÁIRE... | 5.0 | 11.838911 | 0.422336 |
97 | F.F3.V022 | BARRACA CLÁUDIA REGINA RACHID NETTO | CLÁUDIA REGINA RACHID NETTO | HERMOGENES GONÇALVES NETTO | Criança | SACOLA, MOISÉS, FRASQUEIRA, MALA, NECESSÁIRE | 5.0 | 11.838911 | 0.422336 |
99 | F.F2.V002 | BARRACA CLESIA LUCI TORRES DE OLIVEIRA | CLESIA LUCI TORRES DE OLIVEIRA | ANA CAROLINE SILVA MATOZINHOS | Criança | BONECO, MÓBILE, BICHO DE PANO | 3.0 | 11.838911 | 0.253402 |
108 | F.F1.V031 | BARRACA DAISY ANDRADE | DAISY ANDRADE | MARCIO MARTINS | Criança | PAGÃO, CABIDE | 2.0 | 11.827592 | 0.169096 |
114 | F.F2.V013 | BARRACA DIRLENE VILELA ROMÃO | DIRLENE VILELA ROMÃO | MICHELLE VILELA COSTA | Criança | EDREDON, MANTA, CAPA DE CARRINHO, CORTINADO DE... | 7.0 | 11.827592 | 0.591836 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
1411 | F.F3.V013 | BARRACA ROSANA DANIEL DE FIGUEIREDO | ROSANA DANIEL DE FIGUEIREDO | MARIA DO ROSARIO SILVA SALGADO | Criança | KIT BERÇO, MANTA, PROTETOR DE BERÇO, CAPA DE C... | 10.0 | 11.827592 | 0.845481 |
1467 | F.F1.V005 | BARRACA LYDNEIA MELISSA TEIXEIRA | LYDNEIA MELISSA TEIXEIRA | LYDSSEI MELISSA TEIXEIRA FERREIRA | Criança | KIT BERÇO, SAIA PARA BERÇO, NINHO, LENÇOL, ALM... | 8.0 | 11.827592 | 0.676384 |
1468 | F.F4.V014 | BARRACA PAULA GUERRA IGLESIAS RODRIGUES | PAULA GUERRA IGLESIAS RODRIGUES | GREG PETERSON LOPES PERUZZO | Criança | BONECA DE PANO, BONECA DE FELTRO, BONECO, DEDO... | 5.0 | 11.838911 | 0.422336 |
1426 | F.F3.V010 | BARRACA ALESSANDRA DE ABREU REIS | ALESSANDRA DE ABREU REIS | GLAUCIA HELENA DE ABREU TAVARES | Criança | ACESSÓRIOS PARA CACHORRO, ALMOFADA, CAMA DE TE... | 14.0 | 11.838911 | 1.182541 |
1337 | F.F2.V004 | BARRACA MATHEUS PESSALI TIAGO BARBOSA | MATHEUS PESSALI TIAGO BARBOSA | MIRNA COSTA GONÇALVES | Criança | QUADRO, TOALHA FRALDA, TOALHA, BRINQUEDO PEDAG... | 6.0 | 11.838911 | 0.506803 |
103 rows × 9 columns
Voltando para a pergunta: A densidade média das barracas de produtos de crianças 👶🧸?
- Filtre um novo DataFrame apenas de crianças
- Pegue a coluna desejada
- Tire a média
#In:
criancas = afonso_pena[afonso_pena.get('NOME_SETOR') == 'Criança']
criancas.get('DENSIDADE')
ID_FEIRA_AFONSO_PENA_BARRACA
83 0.422336
97 0.422336
99 0.253402
108 0.169096
114 0.591836
...
1411 0.845481
1467 0.676384
1468 0.422336
1426 1.182541
1337 0.506803
Name: DENSIDADE, Length: 103, dtype: float64
#In:
criancas.get('DENSIDADE').mean()
0.6106923564685903
E se forem comidas? 🍓 🍒 🍎 🍉 🍑 🍊 🥭 🍍 🍌 🍋 🍈 🍏 🍐 🥝 🍇 🥥 🍅 🌶 🍄 🥕 🍠 🧅 🌽 🥦 🥒🥬 🥑 🍆 🧄 🥔 🌰🥜
#In:
comidas = afonso_pena[afonso_pena.get('NOME_SETOR') == 'Alimentação']
comidas.get('DENSIDADE').mean()
0.218202423788409
Como explicar o resultado acima?
- Será que a coluna área ajuda?
#In:
comidas.get('AREA').mean()
33.593432833729956
#In:
criancas.get('AREA').mean()
12.378615690707454
Parece que as barracas de comida tem muita espaço. Isso é esperado, elas precisam cozinhar.
Resumo
Resumo
- Aprendemos alguns métodos e técnicas do DataFrame.
- Não sinta necessidade de memorizá-los todos imediatamente.
- Com o tempo, essas técnicas se tornarão cada vez mais familiares.
- Pratique! Elabore suas próprias perguntas usando este conjunto de dados e tente respondê-las.
Próxima vez
- Responderemos a perguntas mais complicadas, que nos levarão a um novo método principal do DataFrame,
.groupby
, para organizar linhas de um DataFrame com o mesmo valor em uma coluna específica. - Por exemplo, podemos querer organizar os dados por bairro, recolhendo todos os diferentes pedidos de serviço para cada bairro.
#In: