0:00:00: Muito bem-vindo, muito bem-vinda a nossa última aula sobre Pantas.

0:00:04: Nessa aula, nós vamos aprender a renomear colunas e índices

0:00:08: e também a combinar os dados, a juntar data frames e séries.

0:00:13: Essas duas coisas são muito importantes,

0:00:15: as colunas nem sempre vão estar com o nome que você quer,

0:00:17: então é importante você saber como renomear

0:00:19: e ter uma função muito simples para isso.

0:00:21: E combinar data frames, você vai fazer isso muito na sua vida,

0:00:25: porque certamente você vai ter várias tabelas diferentes

0:00:28: para juntar, para você poder criar as features dos seus dados.

0:00:32: Dificilmente os seus dados já vão vir

0:00:34: em uma tabela certinha com tudo que você precisa.

0:00:37: Vamos ver, então, como é que a gente faz isso.

0:00:39: A primeira função é muito simples,

0:00:41: é só você chamar a ponta rename no data frame

0:00:43: e aí você pode renomear tanto colunas quanto índices.

0:00:48: Como é que você faz?

0:00:49: O que a gente mais usa aqui é para renomear colunas.

0:00:52: Como é que a gente faz isso?

0:00:53: Você passa o argumento columns igual e você passa um dicionário,

0:00:57: sendo que as chaves desse dicionário

0:00:59: são os nomes originais das colunas que você quer renomear

0:01:02: e o valor é o nome novo da coluna.

0:01:05: Então nesse caso ele vai pegar a coluna points

0:01:08: e ele vai mudar o nome para score.

0:01:10: Aqui embaixo ele já mostra para a gente a cópia do data frame

0:01:13: com a mudança já feita.

0:01:15: Então essa coluna aqui chamava points,

0:01:16: que são as avaliações dos vinhos que a gente tem

0:01:19: e agora ela chama score.

0:01:20: E aqui você pode passar os nomes, quantos nomes você quiser,

0:01:24: desde que sejam colunas existentes no seu data frame.

0:01:27: Uma outra maneira de usar essa função rename

0:01:30: é especificar aqui index.

0:01:32: Então se você tiver um índice de linhas que tenham nomes

0:01:35: e que você queira mudar esses nomes,

0:01:37: que é uma questão muito mais rara na análise de dados,

0:01:41: eu pelo menos não lembro de ter usado essa função para renomear índices,

0:01:45: mas você pode também passar um dicionário com o nome da linha,

0:01:48: o índice da linha que você quer

0:01:50: e o novo nome que você quer que seja aplicado àquela linha.

0:01:54: Muito, muito simples e muito útil.

0:01:56: Ele fala aqui de uma outra função chamada renameAxis,

0:01:59: mas basicamente eu nunca usei,

0:02:01: não conheço ninguém que usa essa função renameAxis,

0:02:03: que é para você renomear literalmente os índices,

0:02:07: os nomes dos índices,

0:02:09: então o nome da estrutura que armazena o nome das colunas

0:02:14: e o nome da estrutura que armazena os nomes das linhas,

0:02:17: mas você basicamente dificilmente vai usar essa função.

0:02:21: Agora, essa aqui é muito importante.

0:02:22: Existem várias maneiras de você combinar data frames no Pandas

0:02:27: e se você já aprendeu SQL você vai ver que a gente também tem uma forma de fazer join.

0:02:31: Join é uma operação muito, muito útil em SQL,

0:02:35: em qualquer coisa que envolva bancos de dados.

0:02:38: E o Pandas tem três funções, ele tem a concat, ele tem a join e ele tem a merge.

0:02:42: Nesse tutorial ele vai falar da join e da concat

0:02:46: e eu vou te explicar porque eu uso mais a merge do que essas duas,

0:02:49: porque na verdade a merge é um join,

0:02:51: na verdade eu uso bastante concat e bastante merge,

0:02:53: mas eu quase não uso join,

0:02:55: porque a merge é uma versão mais parruda do join, vamos dizer.

0:02:58: Primeiro a concat, a concat é a mais simples, ela literalmente vai concatenar,

0:03:02: ela vai grudar, vai colar um data frame no outro,

0:03:06: ou por linha ou por coluna.

0:03:08: O exemplo que ele dá aqui para a gente é o seguinte,

0:03:10: ele tem alguns arquivos de vídeos do YouTube,

0:03:13: então cada linha é um vídeo do YouTube,

0:03:15: só que esses arquivos estão separados por país.

0:03:19: Então você tem um arquivo só com vídeos do Canadá,

0:03:21: um arquivo só com vídeos do Reino Unido

0:03:25: e ele quer juntar tudo isso num data frame só.

0:03:28: E a função concat pode fazer isso, é só você passar pd.concat,

0:03:32: preste atenção porque aqui não é uma função do data frame,

0:03:34: é uma função do Pandas, então você tem que chamar direto do Pandas,

0:03:37: e aí você passa uma lista dos data frames que você quer fazer operação.

0:03:42: Nesse caso ele geralmente recebe aqui um outro argumento chamado axis,

0:03:46: e axis igual a zero, quer dizer que você vai colar por linha,

0:03:50: então você vai colar um data set abaixo do outro,

0:03:53: e axis igual a 1 significa que você vai colar por coluna,

0:03:57: então você vai colar os data sets horizontalmente,

0:04:00: eles não vão ser adicionados novas linhas, vão ser adicionados novas colunas.

0:04:04: E essa função é muito, muito, muito útil,

0:04:07: às vezes você tem logs, por exemplo, de access on site,

0:04:09: ou então o preço de vários instrumentos financeiros,

0:04:14: e o teu sistema de ingestão de dados vai te dar arquivos diferentes para cada data,

0:04:18: e aí você tem que fazer uma operação dessa para juntar tudo numa coisa só,

0:04:21: para você poder fazer a sua análise, treinar o seu modelo e tudo mais.

0:04:26: A função join vai juntar data frames,

0:04:28: mas ela vai levar em conta alguma coluna ou índice,

0:04:31: para você poder fazer essa junção.

0:04:35: Então nesse caso ele está pegando aqui,

0:04:36: ele está colocando como índice o título e o trending date,

0:04:40: que é uma data, considere como uma data qualquer aqui dos dados,

0:04:44: e ele está falando left.join right.

0:04:47: O que isso significa?

0:04:48: Ele vai pegar todos os vídeos que tiveram o mesmo título e a mesma trending date,

0:04:53: no right aqui, e vai juntar as colunas daquela linha,

0:04:57: com as colunas da linha dos dados que estão no left.

0:05:01: Então imagine que você tem uma linha nos vídeos do Canadá,

0:05:03: com o título e a trending date,

0:05:05: e você tem lá quantas vezes foi visualizado,

0:05:08: quando foi publicado, o ID do vídeo,

0:05:10: e você tem essas informações também, só que para dados da Grã-Bretanha,

0:05:14: você tem os dados lá do Reino Unido.

0:05:16: Quando ele achar o mesmo vídeo nos dois, ele vai juntar,

0:05:19: vai fazer uma linha só, tanto para os dados do Canadá,

0:05:22: quanto para os dados do Reino Unido.

0:05:24: E tem uma função muito, tem um argumento aqui muito útil,

0:05:27: esse argumento que é o L suffix e R suffix,

0:05:30: porque quando você junta em colunas que têm o mesmo nome,

0:05:33: ele precisa identificar qual era a coluna do dataset que estava na esquerda,

0:05:37: e qual era a coluna do dataset que estava na direita.

0:05:40: Então você pode especificar o L suffix para as colunas que estão na esquerda,

0:05:44: e o R suffix para as colunas que estão na direita.

0:05:47: Ou seja, mesmo que elas tenham os mesmos títulos originalmente,

0:05:51: no novo dataset, eles vão ganhar esse sufixo,

0:05:54: para você identificar qual era originalmente de cada dataset.

0:05:58: E nesse caso aqui, eu nem sei se existem vídeos com o mesmo título e tudo mais,

0:06:03: nesses dois datasets, então eu não sei,

0:06:05: aliás, se foi um exemplo muito interessante,

0:06:08: mas deve ter, que aqui a maioria está como NAN.

0:06:11: E qual é a diferença do join para o merge, majoritariamente?

0:06:14: O join sempre vai fazer essa junção,

0:06:17: levando em conta o índice do dataset que você colocar na esquerda.

0:06:22: Então o dataset que você chamar aqui,

0:06:24: então left.join, ele sempre vai levar em conta o índice do left.

0:06:29: Só que no right você pode especificar uma coluna,

0:06:32: ou ele vai levar por padrão também em conta o índice.

0:06:34: Então em tese, os seus dois data frames precisam ter índices iguais.

0:06:38: Então por que eu gosto de usar o merge?

0:06:40: Porque com o merge, a função merge,

0:06:42: você pode especificar colunas diferentes para ele juntar os seus datasets.

0:06:47: Vamos ver então os exercícios.

0:06:48: Mais uma vez, faça os exercícios,

0:06:50: depois você vem aqui para a gente resolver juntos.

0:06:52: No primeiro exercício, ele pede para a gente o seguinte,

0:06:55: para a gente renomear as colunas região1 e região2

0:06:59: para region e local, sei lá.

0:07:02: Na verdade, para ficar mais claro o que quer dizer cada uma dessas colunas.

0:07:05: Isso aqui é muito simples com a função rename.

0:07:07: Vamos pegar aqui então reviews.rename, columns como argumento.

0:07:12: Às vezes eu esqueço de passar esse argumento e fico confuso

0:07:15: porque ele não funciona, mas lembre-se de passar columns igual.

0:07:18: E aí o dicionário.

0:07:19: Primeiro argumento é o nome atual, então region1 ele quer que chame region

0:07:24: e region2 ele quer que chame local.

0:07:28: Vamos ver se está certo.

0:07:30: Está correto, muito simples.

0:07:32: No exercício 2 ele pede para a gente mudar o nome do índice no dataset para wines.

0:07:37: Então originalmente esse índice eu acho que não tem nome,

0:07:41: vamos ver aqui, não tem nome.

0:07:43: Se a gente pegar aqui reviews.index também não tem nome,

0:07:46: então ele quer que a gente use aquela função renameAxis,

0:07:50: que eu te falei que a gente quase não usa, mas é um exercício.

0:07:52: Então reviews.renameAxis, vamos colocar aqui o nome.

0:07:56: Qual o nome mesmo que ele quer? Wines.

0:07:59: E aqui acho que a gente precisa passar qual é o índice que a gente quer renomear?

0:08:02: Axis igual a index.

0:08:04: Vamos ver se está certo e está correto.

0:08:06: Não vou nem passar muito tempo porque como eu te falei,

0:08:08: é muito difícil usar essa função.

0:08:10: No exercício 3 ele dá um exercício para a gente fazer um join.

0:08:13: Então ele pegou aqui um dataset de coisas do Reddit.

0:08:16: Basicamente ele pegou dois subreddits,

0:08:18: se você não conhece o Reddit, ele é como se fosse um monte de pequenos fóruns,

0:08:21: as comunidades do Orkut, por exemplo.

0:08:24: E ele pegou todos os links para produtos que tem na comunidade de filmes

0:08:28: e na comunidade de jogos e ele criou um data frame para cada um.

0:08:32: Ele baixou esse dataset.

0:08:33: E aí ele está pedindo para a gente criar um data frame

0:08:36: com os produtos que foram mencionados

0:08:39: em um ou outro subreddit, em um ou outro desses fóruns,

0:08:43: em algum deles.

0:08:44: Então o que a gente precisa fazer é o join aqui.

0:08:46: Vamos pegar gaming products.

0:08:48: Aliás, em um ou outro ele vai querer que a gente use o concat aqui.

0:08:51: Então pd.concat, lembre-se agora é pandas, não é direto do data frame.

0:08:57: Então o primeiro data frame, gaming products,

0:09:00: e o segundo movie products.

0:09:02: Ah, Mário, pode ter duplicado?

0:09:03: Pode ter duplicado, mas nesse momento ele só quer que a gente junte.

0:09:07: Em algum momento a gente poderia usar uma função chamada

0:09:09: .drop duplicates, que iria remover qualquer linha duplicada que a gente tivesse.

0:09:16: E aqui eu vou dar o exemplo, usando axes igual a zero,

0:09:19: só para você ver que ele vai juntar as linhas.

0:09:21: Eu esqueci de rodar essa célula, por isso que ele deu erro.

0:09:25: E agora está correto.

0:09:26: Então axes igual a zero, ele vai juntar linha a linha.

0:09:29: Ele vai juntar axes igual a zero, é uma conjunção,

0:09:31: é uma concatenação vertical,

0:09:33: ele vai colocar um data set no final do outro data set.

0:09:36: Então você vai ter as linhas do primeiro mais as linhas do segundo.

0:09:39: E se você colocar aqui axes igual a 1,

0:09:41: o número de linhas não muda, mas muda o número de colunas.

0:09:45: Então você vai ter mais colunas, ele vai juntar horizontalmente,

0:09:50: ele vai colar linha a linha ali os seus dados.

0:09:53: E aí precisa ter o índice igual,

0:09:54: eu tenho alguns detalhezinhos,

0:09:56: mas essa é a forma mais simples de você juntar data frames.

0:09:59: Aqui vamos colocar axes igual a 1, que é o que ele quer para esse exercício.

0:10:02: E aqui sim ele vai pedir que a gente faça um join.

0:10:07: No exercício 4 ele dá um exemplo que é o muito comum que a gente vê na prática.

0:10:12: Ele tem aqui para competições de powerlifting,

0:10:15: ele tem tanto os encontros, quando essas competições aconteceram,

0:10:18: dados das competições,

0:10:20: e ele tem dados dos competidores em tabelas diferentes.

0:10:23: Vamos inclusive dar uma olhada nesses dados

0:10:25: para a gente entender melhor o que a gente está fazendo.

0:10:27: Vou fazer um head desse aqui,

0:10:29: e vou pegar uma linha só para não ficar muito poluído aqui.

0:10:32: E powerlifting competitors.

0:10:34: Então o que a gente pode entender aqui?

0:10:36: Ele tem aqui qual é a competição, qual a federação, tudo mais, onde aconteceu.

0:10:41: E nessa powerlifting competitors ele tem o nome do competidor,

0:10:44: qual o ID da competição onde essa pessoa competiu.

0:10:49: Então essa é uma mulher, Engibel,

0:10:51: o equipamento do mais tão dado sobre o competidor,

0:10:53: mas o que sempre importa para você fazer um join

0:10:55: é que tenha alguma coluna ou algumas colunas

0:10:57: que sejam comuns entre as duas tabelas.

0:11:01: Nesse caso a gente quer juntar,

0:11:02: quer ter um novo data frame

0:11:04: em que a gente tenha linhas que correspondam não só a uma competição

0:11:09: ou a um competidor, mas os dados da competição

0:11:12: e dos competidores no mesmo data frame.

0:11:15: Vamos ver então como é que a gente faz isso.

0:11:16: Muito, muito simples.

0:11:17: Aqui ele vai querer que a gente use join

0:11:20: e que eu faça um índice com meetID.

0:11:21: Mas como o merge é mais interessante na prática para a gente usar,

0:11:25: eu vou fazer com o merge,

0:11:27: porque eu acho que vai ser mais importante para você.

0:11:29: Então eu vou pegar powerlifting.meets.merge

0:11:32: e aí o segundo argumento aqui que eu tenho a colocar

0:11:35: e você poder usar pd.merge

0:11:37: e depois eu posso fazer ou assim ou eu posso fazer isso aqui.

0:11:41: pd.merge e passar os dois como argumento,

0:11:45: o da esquerda e o da direita,

0:11:47: mas não faz diferença, aí vai da sua preferência.

0:11:51: Só que aí o que eu tenho que fazer?

0:11:52: Eu tenho que especificar aqui qual é a coluna

0:11:54: em que eu quero que ele faça o merge.

0:11:56: Então eu passo uma lista com o nome das colunas.

0:11:58: Se for uma coluna só,

0:12:00: você pode passar só uma string com o nome da coluna,

0:12:02: mas eu prefiro sempre passar lista para me lembrar que é assim que faz.

0:12:05: Então meetID é a coluna onde ele está pedindo para a gente fazer

0:12:09: e aí ele não pede para a gente usar os sufixos e tudo mais.

0:12:12: Vamos ver se isso aqui vai funcionar de boa.

0:12:14: Incorrect value for data frame.

0:12:17: Provavelmente porque ele quer que tenha o meetID como índice.

0:12:21: Então eu deixo colocar aqui setIndex meetID,

0:12:26: porque no join seria isso que teria acontecido e agora está correto.

0:12:29: Então eu acho muito mais fácil,

0:12:31: certamente aqui na solução ele vai falar para a gente fazer o join com o índice,

0:12:34: que ele vai colocar o índice de cada uma delas depois fazer o join.

0:12:38: Eu acho isso aqui muito complicado,

0:12:39: eu acho que se tem o merge é muito melhor,

0:12:42: a gente nem precisaria desse setIndex aqui,

0:12:44: mas eu só coloquei mesmo para cobrir o exercício.

0:12:47: Eu recomendo que você leia a documentação dessa função merge,

0:12:50: porque ela é muito, muito, muito útil.

0:12:52: Você pode juntar data frames tanto pelo índice quanto por colunas,

0:12:56: você pode juntar por colunas diferentes no data frame da esquerda e da direita.

0:13:01: É muito, muito boa essa função.

0:13:03: É isso, parabéns para você que conseguiu vir até o fim aqui desse curso.

0:13:07: Certamente você entende bem mais agora de pandas do que você entendia quando começou.

0:13:12: Muito obrigado por acompanhar essa série.

0:13:14: Se inscreva no canal, ative o sininho e

0:13:16: avise seus amigos sobre essa série aqui para eles também aprenderem pandas.

0:13:19: Muito obrigado e até a próxima.