Novamente, um post tentando ajudar a galera que está migrando de Excel para Python. Mais especificamente, aqueles que estão apanhando tentando juntar diferentes datasets, trazer informação de outras bases para uma principal e coisas do tipo. Hoje, você vai aprender como fazer PROCV – função clássica do Excel – e outros joins no Python. Além, claro, de outras formas de fazer join! Bora lá! Continuar a ler “Como fazer procv – e outros JOINs – no Python”
Etiqueta: left join
Introdução ao SQL + Left Join + Case When
Como sempre digo, aprender SQL é fundamental para um cientista de dados. Apesar de focarmos muito em Python, R e SAS, nenhuma linguagem é tão comum às empresas quanto SQL. Então não deixe de estudá-la. Abaixo, vou te introduzir à linguagem, ensinar como unir tabelas da mesma forma que você faria com o PROCV no Excel, e ensinar a utilizar condicionais. Bora! Continuar a ler “Introdução ao SQL + Left Join + Case When”
Gabarito do Desafio
Finalmente chegamos com o gabarito do desafio lançado. Para quem não lembra ou não o fez, basta clicar neste link. São vários exercícios para você praticar análise exploratória, estatística descritiva, limpeza de dados, joins, wheres, ifs, etc. Abaixo, estão as respostas! Continuar a ler “Gabarito do Desafio”
Como fazer um PROCV no Python
Já expliquei essa função outras vezes, mas talvez chamá-la de PROCV (ou VLOOKUP para quem usa Excel em inglês) ajuda as pessoas a compreendê-la. O post de hoje é dedicado a ensinar como fazer a famosa função PROCV do Excel no Python. Continuar a ler “Como fazer um PROCV no Python”
Join / Merge no Python (Usando Pandas)
Assim como aprendemos no SQL, ou qualquer linguagem para manipulação de bases de dados, como unir bases de dados de diferentes maneiras, o Pandas nos permite fazer estas tratativas no Python. Abaixo, vamos aprender como fazer as uniões de tabelas e algumas táticas que podem facilitar sua vida. Continuar a ler “Join / Merge no Python (Usando Pandas)”
Merge (Join) no R
No post Como combinar tabelas no SAS utilizando left join e full join ensinei como unir tabelas no SAS, utilizando o PROC SQL. Agora, como podemos fazer essa união no R? Como utilizar os clássicos inner join, left join, right join, etc., no R? É bem simples, você vai ver que consegue fazer tudo isso com menos linhas que no SQL. Continuar a ler “Merge (Join) no R”
Introdução ao SQL
SQL (Structured Query Language) é a linguagem padrão utilizada para armazenar, manipular e recuperar informações de bancos de dados. Colocando de forma simples, é através do SQL que é possível criar e atualizar nossos dados através de um modelo relacional. Os maiores usuários da linguagem são os DBAs (Database Administrators), responsáveis por toda a gestão dos dados, desde criar tabelas até dar acesso às demais áreas (para os mais curiosos há um podcast brasileiro com foco nos DBAs chamado DatabaseCast).
Combinando três tabelas com o left join
* notas dos alunos de calculo incluindo as de fisica dos que fizeram;
proc sql;
create table exemplo_left_join as
select a.*, b.nota_estat, c.nota_fis
from turma_calc as a
left join (select * from turma_estat ) as b
on a.nome = b.nome
left join (select * from turma_fis) as c
on a.nome= c.nome;
run;
* excluindo os alunos reprovados em fisica;
proc sql;
create table exemplo_left_join_2 as
select a.*, b.nota_estat, c.nota_fis
from turma_calc as a
left join (select * from turma_estat ) as b
on a.nome = b.nome
left join (select * from turma_fis where Nota_Fis >= 6) as c
on a.nome= c.nome;
run;
* cria uma flag = 1 para trazer quem foi aprovado em fisica e estatistica;
proc sql;
create table exemplo_left_join_3 as
select a.*, b.Aprovado_Estat, c.Aprovado_Fis
from turma_calc as a
left join (
select *, case when Nota_Estat >= 6 then 1
else 0 end as Aprovado_Estat from turma_estat ) as b
on a.nome = b.nome
left join (
select *, case when Nota_Fis >= 6 then 1
else 0 end as Aprovado_Fis from turma_fis) as c
on a.nome= c.nome;
run;
Como combinar tabelas no SAS utilizando left join e full join
Provavelmente a tarefa mais comum de alguém que trabalha com dados seja combinar diferentes tabelas para se obter toda a informação que precisa. Por exemplo, se em uma tabela você tiver o nome dos seus clientes e a informação de idade em uma base de dados, e em uma segunda tabela tiver informações como endereço e sexo, é bem provável que ao fazer um estudo, um modelo estatístico, você tenha que combinar estas duas tabelas. Vamos ver agora como combinar duas tabelas de algumas formas diferentes.
Vamos utilizar como exemplo duas turmas da faculdade, uma do curso de Cálculo e outra do curso de Estatística.Podemos ter alguns alunos matriculados em uma delas e não matriculados na outra e vice-versa. As duas tabelas abaixo contêm os alunos de cada turma, o sexo, a idade e a nota final da disciplina:
Caso alguém ainda não saiba criar sua própria tabela para treinar, segue o código utilizado para gerar as que serão utilizadas aqui:
data turma_calc; length nome $22.; input Nome $ Sexo $ Idade Nota_Calc; datalines; Roberto M 22 10 Maria F 24 10 Pedro M 17 6 Renata F 18 9 Andre M 23 9 Marcos M 27 8 Patricia F 19 7.5 Luciana F 19 6.2 Adriana F 22 4.5 Fernando M 21 6.6 Felipe M 20 7 Flavia F 20 6 Fabio M 18 1 ; run; data turma_estat; length nome $22.; input Nome $ Sexo $ Idade Nota_Estat; datalines; Roberto M 22 4 Maria F 24 3 Jose M 19 6 Renata F 18 8 Andre M 23 9 Alexandre M 17 8 Patricia F 19 6 Luciana F 15 6 Fernanda F 29 5 Fernando M 21 6 Marcelo M 17 5 Flavia F 20 7 Fabio M 18 5 ; run;
Vamos supor que você queira completar a primeira tabela com as notas de estatística para os alunos que cursaram as duas matérias, mas quer manter os demais também na tabela. Ou seja, pensando em dois conjuntos, você quer adicionar a informação que está na intersecção dos conjuntos A e B à informação do conjunto A. Abaixo temos a representação desse caso em um Diagrama de Venn seguido pelo código em SAS e a tabela de saída deste código:
* traz as notas de estatisticas para a tabela com os alunos de calculo; proc sql; create table exemplo_1 as select a.*, b.* from turma_calc as a left join turma_estat as b on a.nome = b.nome; run;
* traz os alunos que cursaram apenas Calculo; proc sql; create table exemplo_2 as select a.*, b.* from turma_calc as a left join turma_estat as b on a.nome = b.nome where b.nome is NULL; run;
proc sql; create table exemplo_2b as select a.* from turma_calc as a left join turma_estat as b on a.nome = b.nome where b.nome is NULL; run;
* traz todos os alunos das duas turmas; proc sql; create table exemplo_3 as select coalesce (a.nome, b.nome) as Nome , coalesce (a.sexo, b.sexo) as Sexo , coalesce(a.idade, b.idade) as Idade , a.* , b.* from turma_calc as a full join turma_estat as b on a.nome = b.nome; run;
* traz os alunos que cursam somente um dos dois cursos; proc sql; create table exemplo_4 as select coalesce (a.nome, b.nome) as Nome , coalesce(a.sexo, b.sexo) as Sexo , coalesce(a.idade, b.idade) as Idade , a.* , b.* from turma_1 as a full join turma_2 as b on a.nome = b.nome where a.nome is NULL or b.nome is NULL; run;