Boas-vindas ao curso de Databricks: análise de dados! Meu nome é Allan Spadini.
Autodescrição: sou um homem branco, tenho cabelos e olhos castanho-escuros. Cabelos curtos. Estou em um cenário que ao fundo tem algumas luzes de cor roxa e ciano e na parede tem uma espuma preta no formato de uma colmeia.
Neste curso estudaremos a API da biblioteca Pandas dentro do PySpark. Para isso, usaremos dados do Prouni.
Esses dados do Prouni terão informações de cursos de graduação no geral e vamos focar nos cursos de medicina, para fornecer informações para quem está querendo estudar medicina no Brasil, quem precisa de bolsa ou até quem precisa de acesso às universidades públicas.
Este curso é voltado para você, que já conhece um pouco sobre Data Science e sobre as bibliotecas Pandas e outras bibliotecas de visualização de dados.
Aprenderemos boas práticas para você que está trabalhando com dados um pouco maiores, big data, e tem alguma dificuldade com as ferramentas que já conhece. Para quem quer estudar o PySpark aproveitando seus conhecimentos prévios em Pandas.
Espero você nos próximos vídeos!
Neste curso, utilizaremos dados do Prouni (Programa Universidade Para Todos) dentro do Databricks, utilizando a API da Pandas dentro do PySpark.
Para isso, estamos usando a versão community do Databricks. Nosso objetivo aqui é carregar os dados relacionados a cursos de medicina.
Dentro do Databricks, na seção "Compute", a primeira coisa que precisamos ter é criar um novo cluster.
Para isso, clicaremos em "Create compute". No campo "Cluster name" daremos o nome genérico de "cluster" e, em seguida, clicar no botão "Create Cluster". Ele demora um pouco para fazer essa criação.
Além de ter essa máquina criada, precisamos ter os dados que utilizaremos no decorrer do curso. Esses dados serão disponibilizados dentro do DBFS do Databricks.
No menu lateral esquerdo, temos a opção "Data", que é onde colocamos os nossos dados.
Ao clicarmos em "Data", a opção selecionada por padrão é a Database Tables, mas não é essa que queremos. Vamos selecionar a opção "DBFS".
Dentro da DBFS clicaremos em "tables > FileStore". Em seguida, clicaremos em "Upload" para selecionar o arquivo que queremos. Vamos selecionar dois arquivos: cursos-prouni.csv
e reajuste.csv
. Depois que eles carregarem, clicaremos em "Done".
Feito isso, ao clicarmos em "FileStore" veremos os dois arquivos que carregamos. Na seta que aparece à direita do nome do arquivo, teremos a opção "copy path" para copiar o endereço desse arquivo. Vamos copiar o endereço do File API Format.
/dbfs/FileStore/cursos_prouni.csv
O que faremos com esse endereço?
Vamos abrir um notebook, dentro do Databricks, para começarmos a carregar e entender esses dados.
No menu lateral, clicaremos em "Workspace" e na na seta que aparece ao lado do e-mail de usuário, selecionaremos a opção "Create > Notebook".
Vai abrir uma janela na qual podemos escolher a linguagem padrão, o cluster que queremos usar e podemos nomear esse notebook. Vamos nomeá-lo como Prouni_estudo
e clicar em "Create".
Ele criou o notebook, já está vinculado ao cluster que nós criamos.
Feito isso, podemos colocar o endereço que copiamos e removeremos a parte inicial do endereço, vamos apagar o trecho "/dbfs", deixar o endereço entre aspas simples. O endereço será adicionado a uma variável chamada local_do_arquivo
:
local_do_arquivo = '/FileStore/cursos_prouni.csv'
Podemos executar essa célula com o atalho "Shift + Enter".
Agora, podemos começar a trabalhar com o Pandas dentro do PySpark.
Poderíamos fazer import pandas as pd
? Na verdade sim, mas não é essa Pandas que estamos trabalhando aqui. A que estamos trabalhando é a que está dentro do PySpark.
Então, vamos escrever o seguinte comando:
Para termos uma diferença que indica que estamos trabalhando com essa biblioteca dentro do PySpark, vamos importá-la como ps
.
Além disso, vamos ler o arquivo.Vamos inserir ps.read_csv()
, informando a variável local_do_arquivo
como parâmetro. Por fim, colocaremos essa informação dentro de um DataFrame chamado df
.
import pyspark.pandas as ps
df = ps.read_csv(local_do_arquivo)
Vamos pressionar "Shift + Enter" para executar esses comandos.
Ele executou o comando, mas logo abaixo do comando apareceu o ícone de uma lâmpada amarela que nos trouxe duas informações:
Pandas API on Spark: If
index_col
is not specified forread_csv
, the default index is attached which can cause additional overhead.Instrument ML code with MLflow: Use MLflow to track metrics, params, and models from your training code.
A mensagem que aparece mais embaixo tem a ver com o MLflow, machine learning, mas neste curso não nos preocuparemos com esse tipo de informação porque não lidaremos com machine learning.
E a primeira informação é sobre a Pandas API on Spark. Está fazendo referência a o que estamos usando e reclamando que não passamos o index_col
, ou seja, não passamos uma coluna de índice. Isso não é comum, na biblioteca pandas, geralmente, ele não reclama disso.
Ele está informando que, se passarmos a informação da coluna de índice, a leitura do arquivo será mais eficiente.
Então, agora vamos ler o arquivo que carregamos e tentar identificar se existe alguma coluna que seria útil carregar como um índice para o nosso DataFrame.
Para visualizar as primeiras linhas do arquivo usaremos o seguinte comando:
df.head()
Temos diversas colunas, colunas para o grau do curso, turno, valor da mensalidade, etc. Temos uma coluna em especial, que pode ser importante para nós que é a coluna curso_id
, é um id que identifica cada curso dentro dessa tabela. Por isso, vamos passar essa coluna curso_id
como informação para o read.csv()
.
Lembrando que o ideal é que já tivéssemos conhecimento antecipado sobre os dados e já carregasse esses dados de forma mais eficiente, certo?
Agora, vamos adicionar mais um parâmetro para o read_csv()
. Depois de local_do_arquivo
adicionaremos uma vírgula e vamos indicar o index_col
que será a coluna curso_id
.
import pyspark.pandas as ps
df = ps.read_csv(local_do_arquivo, index_col='curso_id')
Ao executarmos, note que ele não exibiu o ícone daquela lâmpada com sugestões.
Agora, podemos executar o comando df.head()
novamente. E temos um índice chamado curso_id
na primeira coluna.
Para entender um pouco mais esses dados, vamos tentar visualizar o tamanho desses dados. Para isso, executaremos o comando df.shape
.
df.shape
Out[6]: (41447,19)
Temos 41.447 linhas nesse DataSet e temos 19 colunas.
Cada uma das colunas tem uma informação diferente, mas eu dei uma olhada nesse DataSet durante a preparação do curso e vi que temos duas colunas com informações que são semelhantes, as colunas curso_busca
e nome
aparentemente têm a mesma informação.
Será que essas colunas têm exatamente a mesma informação? Vamos tentar responder essa pergunta utilizando o método equals()
.
df['curso_busca'].equals(df['nome'])
Ao executarmos esse comando, ele vai executar linha por linha de cada coluna citada para verificar se elas são iguais. Será exibida uma lista com cada linha seguida por true.
Para facilitar, podemos usar o sum()
e somar todos os trues. Assim saberemos quantas linhas são iguais.
df['curso_busca'].equals(df['nome']).sum()
Out[8]:41447
Tivemos o retorno de que 41447 linhas são iguais. Ou seja, todas as linhas das colunas curso_busca
e nome
são iguais.
Uma ressalva aqui, na Pandas convencional é retornado um resultado um pouco diferente quando aplicamos o equals()
. Ela retorna simplesmente true ou false. Pois ela compara diretamente as duas colunas.
Aqui com a Pandas dentro do PySpark ele compara linha por linha porque eles estão trabalhando de forma eficiente com esse arquivo, então ele separa as linhas desse arquivo em partes diferentes para conseguir fazer isso com processamento paralelo.
Dito isso, outra coisa que podemos tentar, já que descobrimos que temos duas colunas idênticas, é remover uma dessas colunas. Vamos tentar remover a coluna curso_busca
usando o método drop()
. Depois de abrir e fechar os colchetes, vou colocar uma vírgula e inserir axis=1
para garantir que ele exclua a coluna.
df = df.drop(['curso_busca'],axis=1)
Após executar esse comando, podemos verificar com o df.head()
que a coluna curso_busca
realmente sumiu. Agora temos apenas a coluna nome
.
Para tornar mais fácil de entendermos qual é a informação da coluna nome
podemos renomeá-la para nome_curso
, com o seguinte comando usando o método rename()
:
df = df.rename(colums={'nome':'nome_curso'})
Podemos checar se a alteração foi feita usando o comando df.head()
. Agora, temos a coluna nome_curso
.
Fizemos alguns procedimentos que são comuns quando trabalhamos com o Pandas, quando começamos a entender o arquivo com o qual estamos trabalhando. Também excluímos algumas informações desnecessárias para nosso trabalho.
No próximo vídeo, tentaremos responder algumas perguntas em relação aos cursos de medicina dentro dessa base de dados. Até lá!
O curso Databricks: análise de dados possui 148 minutos de vídeos, em um total de 42 atividades. Gostou? Conheça nossos outros cursos de Engenharia de Dados em Data Science, ou leia nossos artigos de Data Science.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.
Acesso completo
durante 1 ano
Estude 24h/dia
onde e quando quiser
Novos cursos
todas as semanas