Biblioteca de Análise de Dados (pandas)
Pandas é uma das bibliotecas mais populares em Python para manipulação e análise de dados. Ela fornece estruturas de dados flexíveis e eficientes para trabalhar com dados tabulares, como planilhas, tabelas de banco de dados e coleção de dados em geral
Instalação do pacote
Instalar o pacote pandas
no pelo pip
pip install pandas
Importação de biblioteca
Importação de uma biblioteca com um apelido
import pandas as pd
Criação dos DataFrames
Pandas introduz duas principais estruturas de dados: o DataFrame e a Series. O DataFrame é uma tabela bidimensional com rótulos nas colunas e linhas, semelhante a uma planilha, enquanto a Series é uma estrutura unidimensional semelhante a uma coluna ou linha de um DataFrame
Criação de um DataFrame com a classificação de frutas
import pandas as pd
frutas = pd.DataFrame([
{"Nome": "Banana", "Cor": "Amarela", "CascaComestivel": False, "Nota": 9 },
{"Nome": "Maçã", "Cor": "Vermelha", "CascaComestivel": True, "Nota": 4 },
{"Nome": "Goiaba", "Cor": "Verde", "CascaComestivel": True, "Nota": 6 }
], index=['3', '1', '2'])
print(frutas)
Adicionar coluna para todos os valores
import pandas as pd
frutas = pd.DataFrame([
{"Nome": "Banana", "Cor": "Amarela", "CascaComestivel": False, "Nota": 9 },
{"Nome": "Maçã", "Cor": "Vermelha", "CascaComestivel": True, "Nota": 4 },
{"Nome": "Goiaba", "Cor": "Verde", "CascaComestivel": True, "Nota": 6 }
], index=['3', '1', '2'])
frutas["Comestível"] = True
print(frutas)
Criação de um novo DataFrames com o campo comestível incluso
import pandas as pd
frutas = pd.DataFrame([
{"Nome": "Maracujá", "Cor": "Amarela", "CascaComestivel": False, "Nota": 9, "Comestível": True },
{"Nome": "Pera", "Cor": "Verde", "CascaComestivel": True, "Nota": 4, "Comestível": True }
])
print(frutas)
União dos DataFrames
import pandas as pd
frutas_1 = pd.DataFrame([
{"Nome": "Banana", "Cor": "Amarela", "CascaComestivel": False, "Nota": 9 },
{"Nome": "Maçã", "Cor": "Vermelha", "CascaComestivel": True, "Nota": 4 },
{"Nome": "Goiaba", "Cor": "Verde", "CascaComestivel": True, "Nota": 6 }
], index=['3', '1', '2'])
frutas_1["Comestível"] = True
frutas_2 = pd.DataFrame([
{"Nome": "Maracujá", "Cor": "Amarela", "CascaComestivel": False, "Nota": 9, "Comestível": True },
{"Nome": "Pera", "Cor": "Verde", "CascaComestivel": True, "Nota": 4, "Comestível": True }
])
frutas = pd.merge(frutas_1, frutas_2, how="outer")
print(frutas)
Os tipos de mesclagem (merge) semelhantes as junções SQL:
- left: apenas chaves do quadro esquerdo, preservar a ordem das chaves;
- right: apenas chaves do quadro direito, preservar a ordem das chaves;
- outer: união de chaves de ambos os frames, classificar chaves lexicograficamente;
- inner: interseção de chaves de ambos os quadros, preserve a ordem das teclas esquerdas;
- cross: cria o produto cartesiano de ambos os quadros, preserva a ordem das teclas esquerdas.
Criação de array com Fruta e Origem
import pandas as pd
frutas_origem = pd.DataFrame([
{"Nome": "Banana", "Origem": "Indonésia" },
{"Nome": "Maçã", "Origem": "Ásia Central" },
{"Nome": "Goiaba", "Origem": "Brasil" },
{"Nome": "Maracujá", "Origem": "Brasil" },
{"Nome": "Pera", "Origem": "Norte da África" }
])
print(frutas_origem)
União lateral de DataFrame
import pandas as pd
frutas_1 = pd.DataFrame([
{"Nome": "Banana", "Cor": "Amarela", "CascaComestivel": False, "Nota": 9 },
{"Nome": "Maçã", "Cor": "Vermelha", "CascaComestivel": True, "Nota": 4 },
{"Nome": "Goiaba", "Cor": "Verde", "CascaComestivel": True, "Nota": 6 }
], index=['3', '1', '2'])
frutas_1["Comestível"] = True
frutas_2 = pd.DataFrame([
{"Nome": "Maracujá", "Cor": "Amarela", "CascaComestivel": False, "Nota": 9, "Comestível": True },
{"Nome": "Pera", "Cor": "Verde", "CascaComestivel": True, "Nota": 4, "Comestível": True }
])
frutas = pd.merge(frutas_1, frutas_2, how="outer")
frutas_origem = pd.DataFrame([
{"Nome": "Banana", "Origem": "Indonésia" },
{"Nome": "Maçã", "Origem": "Ásia Central" },
{"Nome": "Goiaba", "Origem": "Brasil" },
{"Nome": "Maracujá", "Origem": "Brasil" },
{"Nome": "Pera", "Origem": "Norte da África" }
])
frutas_completo = pd.merge(frutas, frutas_origem, how="left", left_on="Nome", right_on="Nome")
print(frutas_completo)
Manipulação de DataFrames
Vamos criar a listagem para realizar a manipulação
import pandas as pd
frutas = pd.DataFrame([
{
"Nome": "Banana",
"Cor": "Amarela",
"CascaComestivel": False,
"Nota": 9,
"Origem": "Indonésia"
},
{
"Nome": "Maçã",
"Cor": "Vermelha",
"CascaComestivel": True,
"Nota": 7,
"Origem": "Ásia Central"
},
{
"Nome": "Goiaba",
"Cor": "Verde",
"CascaComestivel": True,
"Nota": 6,
"Origem": "Brasil"
},
{
"Nome": "Maracujá",
"Cor": "Amarela",
"CascaComestivel": True,
"Nota": 9,
"Origem": "Brasil"
},
{
"Nome": "Pera",
"Cor": "Verde",
"CascaComestivel": True,
"Nota": 4,
"Origem": "Norte da África"
}
])
print(frutas)
Compreendendo base de dados
Vamos usar a fonte de dados Video Game Sales with Ratings com (/assets/content/video_games_sales.zip) encontrada na área de Downloads
import pandas as pd
dados = pd.read_csv('video_games_sales.zip', compression = 'zip')
print('Informações:\n', dados.info(), '\n\n')
print('Nome das colunas:\n', dados.columns, '\n\n')
print('5 primeiros registros:\n', dados.head(), '\n\n')
print('5 últimos registros:\n', dados.tail(), '\n\n')
print('descrição da fonte:\n', dados.describe(), '\n\n')
print('formato da fonte:\n', dados.shape)
Compreender um campo especifico
import pandas as pd
dados = pd.read_csv('video_games_sales.zip', compression = 'zip')
plataforma = dados['Platform']
print('Campo:\n', plataforma, '\n\n')
print('Únicos:\n', plataforma.unique(), '\n\n')
print('Contagem:\n', plataforma.value_counts(), '\n\n')
print('Proporção:\n', plataforma.value_counts(normalize = True), '\n\n')
Manipulação de dados
Renomear campos, detalhe para o inplace=True
para converter o DataFrame original
import pandas as pd
colunas = {
'Name': 'nome',
'Platform': 'plataforma',
'Year_of_Release': 'ano',
'Critic_Count': 'críticos',
'User_Count': 'usuários'
}
dados = pd.read_csv('video_games_sales.zip', compression = 'zip')
dados.rename(columns=colunas, inplace=True)
print(dados)
Realizar pesquisa dentro de valores
import pandas as pd
dados = pd.read_csv('video_games_sales.zip', compression = 'zip')
plataforma = 'GBA'
print(dados.query('Platform == @plataforma'))
plataformas = ['GB', 'GBA']
print(dados.query('Platform in @plataformas'))