Alura > Cursos de Data Science > Cursos de Data Science > Conteúdos de Data Science > Primeiras aulas do curso Data Science: visualização de dados para saúde e medicina

Data Science: visualização de dados para saúde e medicina

Boletins e explorações - Introdução

Boas-vindas ao nosso segundo curso de Data Science na área de saúde. Nesse curso nós vamos continuar com aquilo que estávamos fazendo no primeiro curso, então se você ainda não o fez, mas tem o conhecimento, você pode fazer esse segundo e começar no Google Colab, no “Jupyter Notebook” que vamos fornecer para você. Mas se você fez o curso anterior, maravilha!

O que vamos fazer? Continuar analisando o conjunto de dados do Coronavírus, que é disponibilizado pela Johns Hopkins, mas também juntar essa base de dados com outra base de dados. Procurar outras informações em outros lugares da internet, que confiemos, para tirar mais conclusões.

Claro, eu vou tentar agora começar a comparar as conclusões que eu encontro com conclusões encontradas em outros relatórios, com outros vídeos, com outras doenças, levantar os diversos problemas e as diversas limitações que existem no estudo que estamos fazendo - e isso é fundamental.

À medida em que fazemos essa fase de exploração dos nosso dados, o Exploratory Data Analysis, um termo cunhado, tem algumas dezenas de anos agora, se eu não me engano pelo Tucker, em 93, talvez.

Ou Tuckey, agora estou na dúvida. “John Tuckey”, está aqui. Um termo cunhado pelo John Tuckey, que está aqui, em 1961, realmente algumas décadas - onde estamos só levantando hipóteses para depois tentar comprová-las.

Então nessa fase de exploração nós levantamos hipóteses e tentamos mostrá-las visualmente através de texto, números, porcentagens ou seja o que for. Nessa fase que estamos aqui, levantando tudo isso e analisando os nossos dados.

Claro que vamos criar vários outros gráficos. Vamos analisar diversas outras informações, pegar vários dados de diversos outros lugares e levantar outras conclusões que vamos ter a respeito da epidemia de Coronavírus até esse instante. Vamos lá? Vamos estudar!

Boletins e explorações - Criando comparações em snapshots

Vamos começar então, mais um curso! Lembrando: no curso anterior nós pegamos uma fonte de dados, que trazem várias informações do Coronavírus, e nós carregamos e trabalhamos com diversas dessas informações.

Eu queria agora, começar aqui uma segunda parte em que vamos retomar esses dados, mas vamos cruzar esses dados com outras informações. Segunda parte.

Nessa minha segunda parte, o que eu quero fazer? Eu quero retomar os dados confirmados, por exemplo: você se lembra que os dados confirmados - aqui estão eles, e eu tenho aqui diversas províncias e diversos países ou regiões.

Mas, por exemplo, se eu quero comparar literalmente a China, eu tenho aqui “Mainland China”, em vários deles, e eu quero pegar todos os que são Mainland China. Nós vimos como fazer isso, nós pegamos o índice: “Country/Region” - é por esse índice. Está aqui e agora eu posso simplesmente falar: “loc[Mainland China]”. Maravilha! E aqui o que eu tenho agora? Só o que é Mainland China.

Se eu quiser agora, por exemplo, somar esses aqui, vou somar eles aqui. Esses são só os do Mainland China, dia a dia. Maravilha! Vou colocar aqui um “tail” para vermos os últimos e não os primeiros, “head” os cinco primeiros e “tail”, que é o rabo, os cinco últimos. Tenho aqui os últimos dados da China, Mainland China.

Mas se calme aí! Vamos dar uma olhada nos gráficos que fizemos antes? Um dos gráficos que fizemos foi esse de comparação, justo do Mainland China com os outros países. Tinha ficado inviável!

Aqui tinha ficado Mainland China e os outros países. Não dava para comparar porque tinha muito na China. Por quê? Porque a infecção começou muito antes. O espalhamento da infecção começou muito antes do vírus então fica difícil de comparar.

Então o que fizemos? Tiramos a China e comparamos só os outros. Aqui temos uma comparação dos 10 países com mais casos confirmados em uma data específica, exceto a China, que seria o primeiro de todos. Por causa dessa realidade nós preferimos separar em dois.

Aqui nós conseguimos entender mesmo como que está a situação pontual nesses países, um com o outro. Nós comparamos um com o outro. “Posso colocar aqui um ‘gridzinho’?” Pode! Dá para fazer várias coisas. Aqui, lembre-se que estamos usando o Matplotlib e dá para fazer várias coisas com o Matplotlib.

“E com o seaborn? Dá para fazer várias coisas?” Dá para fazer várias coisas com o seaborn. Os cursos de Data Visualization, vamos focar nessa área.

Mas o que eu quero fazer? Eu quero que misturemos as coisas! Que nós soframos ao misturar os dados com a visualização, eu quero que soframos. Eu não quero só aprender o “title”. “title” é fácil de aprender: chamo o “title”, coloco o valor e maravilha! Boa prática sempre ter “title”.

Agora, manipularmos os nossos dados para conseguirmos visualizar, isso que é o trabalhoso. Esse é o nosso trabalho como cientista de dados, seja na visualização ou seja onde for. É manipularmos para poder visualizar e então limparmos essa visualização.

Limpar a visualização também é super trabalhoso, não estou desrespeitando isso. Eu falei que só o “title” é fácil. Chamar o “title” é fácil, colocar um “title” que faça sentido já é mais difícil, tanto que aqui está escrito: “Confirmados por país” e eu não falei que eu restringi a China e que são os outros países.

Vou colocar: “amostra de 10 países”. Não são os 10 maiores e não são os 10 últimos. É uma amostra de 10 países que eu escolhi.

Você vê que eu comentei, “visualization” em si, é um universo importantíssimo e o outro universo importantíssimo é manipular esses dados para extrair as informações que fazem sentido, e o que eu quero, é juntar um pouco desses dois - então nós sofremos por quê? Porque estamos juntando os dois. É isso que vamos fazer.

Repare que eu tenho uma visualização que já descreve o comportamento nesse ponto do tempo do vírus em vários países, mas então ficou faltando a China. Como a China se compara com os outros países?

Porque os outros países daqui para frente não têm quase nada, comparado com a Coreia do Sul naquele instante. E a China? Como a China se compara com todos os outros? É fácil. Olhe o gráfico de torta.

Legal! Tem bastante na China aqui e não tem bastante aqui. O pessoal fala que esse é o “gráfico do Pac-Man”, aqui está o Pac-Man e aqui a boquinha do Pac-Man. É horripilante. Não dá, esse gráfico.

Mas o que eu quero é isso, eu quero separar Mainland China do resto. Eu quero um gráfico que me mostre quantos casos tinha no Mainland China nessa fotografia desse dia, e quantos tinham no resto do mundo. Vamos dar uma olhada nisso?

Para fazer isso não adianta eu pegar só o Mainland China, eu quero saber o resto também. Eu poderia pegar aqui “loc["Mainland China"]” e eu quero pegar o “loc” do resto. Dá para fazer? Dá! Super trabalhoso, tem que pegar todo o nome de todos os outros. Não parece ser esse o caminho.

O caminho vai ser diferente, vamos pegar o “I confirmed” e agora podemos pegar só a coluna “["Country/Region"]”. Olhe que maravilha! Está lá, só essa coluna. Será que esse valor é igual? Vamos verificar se o valor é igual à Maindland China.

E aqui no começo é igual, “True” (verdadeiro) e depois não. “False”, não é igual. Em alguns é igual, em outros não é igual. Isso daqui eu estou definindo se é Maindland China.

Vou só imprimir porque eu esqueci, obviamente. “is_mainland.head” para vermos só os primeiros, que são todos “True”, então tem alguns que são.

O que eu posso fazer é criar uma coluna nova no “confirmed” - que é, adivinha? “["is_mainland_china"] = is_mainland” e nós plotamos, “confirmed.head”. Está lá! Esses daqui são - aqui no final - Maindland China.

Podemos dar um “display” tanto no “head” quanto no “tail”, assim nós vemos os cinco primeiros. Como a China ainda está no começo, então Mainland China está aqui. “True”, e os outros que não são Maindland China, “False”. Adicionei uma coluna nova.

E agora é legal, por quê? Porque agora podemos usar aquela Query. Nós tínhamos usado Query no passado, eu falei: “confirmed.query("is_mainland_china==True")” e ele deve trazer para mim só os que são do Mainland China.

“==True” quer dizer verdadeiro. Será que se eu tirar o verdadeiro daqui ele pega? Pegou só os verdadeiros, também não precisa nem do “==”, então esse daqui é uma Query só de Mainland China, se eu quiser.

Só que mais legal ainda, o que eu posso fazer? Se eu tenho uma coluna que define se é Mainland China ou não, de acordo com essa classificação que está aqui, eu posso falar para ele assim: “Veja bem, o que eu gostaria de fazer é um pouco diferente. O que eu gostaria de fazer era agrupar por este valor!”

Então eu gostaria de falar “confirmed.groupby("mainland_china")” e eu agrupo e somo. Onde que eu errei aqui? “is_mainland_china”. Guilherme espertinho! Se é Mainland China é isso daqui, se não é, é isso daqui. Eu somei os dois grupinhos.

Percebe que é mais trabalhoso fazermos a coisa? É isso que eu estou dizendo. Eu tive um trabalho agora para chegar na informação que eu queria, e agora eu vou ter um trabalho para plotar essa informação.

E é por isso que eu falei que eu vou querer sofrer com vocês para mostrar o mundo real. Eu sofri para chegar nessa informação, agora eu vou tentar plotá-la, eu quero plotar esses gráficos.

[08:28 ] Lembra como nós plotamos? Vamos plotar só a última coluna? A última coluna é o “3/2/20”. Eu vou somar tudo e vou pegar só essa coluna. Somei só essa coluna e eu ploto. Vamos plotar e ver o que acontece. Plotou e ficou bizarro, ficou uma reta.

Lembra? A reta não faz sentido nessa situação porque verdadeiro e falso não tem maior e menor, então eu posso ir para o “(kind=’pie’)” - uma torta - ai meu coração! Olhe o Pac-Man aqui!

Isso daqui é Mainland China, isso daqui não é Mainland China. Já dá para ter uma ideia. Mas o quão maior? Chute, quantas vezes maior é esse daqui comparado com esse? Você fez seu chute? Eu iria chutar cinco e eu tenho certeza que eu estou errado.

De que forma que eu poderia mudar isso? “bar”. Se você quer comparar proporções, a barra vai ser melhor. Aqui está a barra, com ela eu consigo ver. Parece que é mais que cinco, e eu consigo acompanhar aqui, 10 mil e 80 mil. Oito vezes mais.

Então não era cinco, era oito. Meu chute aqui com certeza não era oito. Olhando até podia ser, se eu parasse com calma. Isso daqui parece ser metade disso daqui e isso daqui é um quarto do todo, total um oitava.

Mas percebeu? Se acalme! Repare aqui, ainda mais, se a mensagem que eu quero passar é simplesmente que daquele dia específico o total de casos em Mainland China é oito vezes maior do que o outro, é só eu colocar um número bem grande.

“# No dia” - vou colocar no formato brasileiro - “02/03/2020 mainland china tinha 8 vezes o número de casos que o resto.” - Seria essa a mensagem.

Vou diminuir um pouquinho a fonte Vou transformar isso daqui em texto e adicionar um textinho aqui para nós, então essa é a minha conclusão desse meu gráfico.

Boletins e explorações - Evolução em time series copy

Mas isso daqui é limitado, olhar uma fotografia é muito limitado - eu apertei onde não devia? Não! “Mas olhar uma fotografia é muito limitado, queremos ver também como anda esse crescimento.”

Porque - lembra? Nós já percebemos que na China tinha um crescimento que foi diminuindo, e no resto do mundo, como que está? Percebe? O “snapshot” é até injusto. “Mas isso é até injusto pois estamos resumindo as informações e com isso, perdendo elas.” - Estamos perdendo o crescimento.

Quer dizer, de novo, tome cuidado! Só um gráfico é complicado. Qual é o outro problema desse gráfico? “True” e “False”, que horror! Nós podemos mudar um pouquinho isso.

Podemos fazer assim: pegar o nosso “confirmed”, pegar a coluna “["is_mainland_china"]” - que é verdadeiro ou falso, ela é um [BOOLEANO], como nós chamamos. Vamos ver aqui, eu vou ter vários “Trues” e vários “Falses” e eu posso aplicar uma função nisso daqui.

Existe uma biblioteca chamada NumPy. Assim que ele imprimir para nós, nós vamos ver, mas é o “import numpy as np”, e no numpy eu posso falar assim: “np.where(confirmed"is_mainland_china"], ‘Mainland China’, ‘Others’)” É só eu fazer isso.

Eu faço isso daqui, então eu estou pegando a coluna - que aqui não apareceu, mas está mais para cima, o “is_mainland_china”, que está aqui, e utilizando-a para definir esse meu “where”.

Isso vai definir uma série de “mainland_china” e de “other”. Eu vou imprimir os cinco primeiros para vermos. Vou dar um “stop” porque parece que morreu o meu kernel, de alguma maneira. “Runtime” – aqui - “Factory reset runtime” - pode ser o “Restart runtime”. “Yes”.

Parece que matou, “Restart and run all”, vamos tentar! Agora parece que matou mesmo. Não era “confirmed”? Porque ele rodou, acho, que depois disso, não sei. Vamos ver! Agora estou rodando todo mundo e eu quero ver ele retornar para mim onde estava “True”: “Mainland China”, onde não estava “True”: “Others”.

Não tem o atributo “head” - só aplica essa função, então ele devolveu “Mainland China” várias vezes e “Others”, então eu crio um label para os dois. Eu vou aplicar isso no nosso “confirmed” e vou chamar de “is_mainland_china_label”.

É um label para esse meu - se é ou não é Mainland China. Nós podemos, de novo, fazer um display desses dois, que é o “head” desse aqui e o “tail” desse aqui. Vamos ver?

O NumPy é super utilizado quando vamos trabalhar com matrizes matemáticas, mas no nosso caso não é uma matriz matemática, é uma matriz de “True” e “False”. “True” e “False” é 0 e 1 ou 1 e 0, então ele funciona bem, também.

Aqui nós temos esses primeiros, que são “Mainland China” e esses outros, que são “Others”. Repare que eu agora fiz um pouquinho de processamento dos meus dados, para quê?

Para que o meu plot fique bonito. Qual é o plot bonito que eu quero então? É só esse plot aqui, mas eu vou agrupar pelo “is_mainland_china_label”. Vamos ver? Está lá!

Lembrando: esse daqui é o meu “last_date”, então podemos deixar o “last_date”, por quê? Porque depois, quando você atualizar e rodar para outro dia, etc., vai funcionar também como o último dia.

“last_date” aqui, inclusive, provavelmente o dia que você está rodando não é hoje e você terá mais dados do que eu, e provavelmente terá até outras informações. Se você quiser ter exatamente o mesmo resultado, você vai rodar com o mesmo dia que eu, claro.

Vamos ver. Rodei o NumPy, rodei o “confirmed” e nós vemos: “Mainland China” e “Others”. Bem melhor esse label, podemos ir refinando e colocar o título, “Casos confirmados acumulados até” (essa data).

Para colocar a data, que eu vou colocar um “f” - para que eu possa colocar a data aqui, assim: “{last_date}” - então aqui eu tenho nesses dois lugares e eu tenho essa comparação bem simples e um “plt.show”.

Mas lembrando que isso ainda é uma comparação que mostra um retrato muito simplificado da situação. Por quê? Porque ele está mostrando para nós só casos confirmados. E casos novos? E o crescimento? Como está o crescimento? Em vez de casos confirmados, vamos ver o crescimento.

O crescimento, você se lembra como nós fazíamos? Nós fazíamos a diferença do dia atual menos o dia anterior, que é o “sum”, mas não é isso que eu quero. Eu tenho aqui - esses são os somados, eu tenho que o dia atual é o somado no dia “last_date”.

No meu caso do “last_date”, agora sim eu vou deixar fixo, que é o meu dia - eu falei 2/20? Não, é 3. Deixe-me ver se eu falei certo. Não sei se eu tinha falado certo antes ou não, acho que eu tinha usado o dia errado. Dia 3/2/20, mas agora estou usando o “last_date”.

[05:56]“3/2/20”, esse é meu “last_date”. E o meu penúltimo é o 3/1/20, primeiro de março, então esse menos esse vai me dar o “delta”, a diferença, que são os novos casos nessa última mudança.

O que eu posso fazer? Pega esse “delta” e plota como “bar”. Só que agora não é mais “Casos confirmados”, isso daqui são “Novos casos confirmados em” (nesse dia). Vamos ver a mensagem que temos agora?

Agora a história é diferente. Agora em Mainland China nós percebemos que parece que o crescimento está bem menor do que o número de casos que estão fora da China.

Percebeu como nós precisamos dos dois gráficos para não gerar uma situação em que você fala: “Nossa, meu Deus do céu! O que é isso que está acontecendo na China? Não sei o quê...”, sendo que fora da China é onde a situação parece estar aumentando o número de casos, eu olho a comparação desses dois.

Então nós precisamos das duas coisas porque a realidade não é nem uma nem a outra, as duas são a realidade e as duas são resumos da realidade. Uma sozinha conta a realidade, mas ela abre espaço para uma interpretação que não é legal.

E nós, logo de cara, como responsáveis de Data Science e Visualization, precisamos pensar não só naquilo que queríamos dizer, mas também como aquilo será interpretado. Se eu mandar só isso vai parecer que é uma guerra entre China e não China, e que a China está perdendo essa guerra.

Agora, no momento em que eu mostro isso – por mais que não fosse essa mensagem que eu queria passar – junto com isso, eu estou passando mais informações. Eu estou dizendo: “O meu retrato nesse dia é que eu tenho mais casos na China e menos casos fora da China, porém, ao mesmo tempo, o que está acontecendo é que na China o número de casos novos está menor e fora da China, maior”.

E agora sim, nós continuamos com um espaço, onde as informações que nós não passamos para interpretação das pessoas. Se você achar que tem algum buraco em mostrar só essas duas visualizações, tampe esse buraco.

É melhor eu falar não só pontual, mas sim o crescimento. Em vez de eu mostrar só o pontual nos casos confirmados, eu quero mostrar o crescimento. Lembra do gráfico de linha inteiro? Poderíamos mostrar o gráfico de linha inteiro para cada um desses dois casos. Vamos dar uma olhadinha aqui!

Temos no “confirmed” os diversos casos confirmados e temos se é ou não é Mainland China. Quando fizemos o “summed”, nós somamos por cada um desses dois. Temos aqui o histórico, aumentando ou não, então o que podemos fazer? Podemos plotar esses dois.

Quando mandamos plotar, não faz sentido. Por quê? Porque ele usou as colunas e as linhas de forma trocada, ele usou “Mainland China” e não “Mainland China”, e nós trocamos as dimensões, o “X” e o “Y”.

O “summed” está aqui, vamos de novo. Poderíamos usar Seaborn, é uma das maneiras para falarmos quais são os dados, o data e falar qual é o “X” e qual é o “Y”.

Mas acho mais simples e mais legal nós vermos - eu quero transformar essa matriz assim. Ela é uma matriz assim eu quero transformá-la de tal forma. Quero rotacioná-la a 90 graus, eu quero fazer um “T” nela ou eu quero transladá-la.

Olhe só! As colunas viraram linhas e as linhas viraram colunas. Vou deixar aqui só cinco, só para vermos, então temos aqui uma coluna para o “Mainland China”, uma coluna para o “Others”. “summed.T.plot()” e nós plotamos agora tudo.

O que é esse número? Essa queda absurda que tem aqui? Cuidado, tem “Lat” e “Long”. Ele colocou a latitude e a longitude, que é a soma das latitudes e longitudes. Nós não queremos a soma da latitude e longitude, então vamos descartar os dois primeiros. Descartei, começa a partir do terceiro, 0, 1, 2. Vamos lá?

Desculpe, aqui ainda continuaram eles, talvez eu tenha feito alguma bobagem. Deixe-me ter certeza que eu não errei em alguma coisa. Talvez eles sejam realmente com algum número diferente, só ter certeza.

São aqueles outros dois. Tinha o latitude e longitude, mas tem esses outros dois últimos também, e que eu não os quero. Eu estava errando. Eu tenho também o “-2” e eu quero jogar fora os dois últimos. Perdão, eu tinha errado sim.

Joguei fora aqueles dois últimos e agora sim, “plt.title” - esse daqui é o “Desenvolvimento de casos confirmados com o passar do tempo”. Esse é o que está acontecendo. Nós colocamos o “plt.show()” no fim para ficar bonito. Pelo menos esses simples nós podemos colocar porque é simples, eu gostaria de colocar sim.

Agora sim, eu tenho uma visualização que não é pontual, essa daqui era pontual, essa daqui não é mais pontual. Ela tem mais informação, ela conta mais histórias e ela conta que, realmente, na China houve um grande crescimento e o que está acontecendo agora

Fora - no mundo - está começando a ter essa curva parecida com essa. É isso que está aparecendo agora. Começo a ter mais informações nessa nossa visualização.

Podemos ir além e fazer a mesma coisa para os casos novos. Vamos ver a evolução dos casos novos? Agora vamos precisar dos “deltas”, vamos de novo aqui, vou jogar esse aqui. Agora o “summed” nós já temos agrupado corretamente para nós, mas não queremos calcular só um “delta”. Vamos dar uma olhada no “summed”?

Eu quero calcular todas as diferenças aqui, então primeira coisa é: “transforme” e “transpõe”. Jogue fora essas duas primeiras linhas e jogue fora as duas últimas. Agora, é aquilo que falamos: calcule a diferença do dia próximo com o dia atual. Essas são as diferenças.

No primeiro dia, você se lembra? Vazio! Então 92 a mais do que no dia anterior, 277 a mais do que no dia anterior, 483 a mais que no dia anterior. Essas são as diferenças, ou “differences”.

Essas diferenças – meu inglês é horrível, agora ficou assim – eu posso jogar as linhas vazias, que é o “dropna()” - que tínhamos falado - e agora eu posso plotar. Olhe as diferenças, esses são os casos novos. Olhe os casos novos na China e os casos novos fora do mundo.

Claro, a população da China e a população de fora do mundo é muito diferente. Os casos ao redor do mundo estão espalhados no mundo inteiro, já os casos da China estão concentrados em uma região.

Existem muitas outras coisas que têm que ser consideradas aqui, mas repare como esses dois gráficos já estão com muito mais informação do que aqueles dois anteriores.

Esse nós vamos, de novo, colocar um “plt.show” e um “plt.title” - onde o nosso título é evolução de casos novos para ver se ele evoluiu para fatalidade ou não: “Casos novos com o decorrer do tempo”. Aqui temos o caso novo com o decorrer do tempo e perceba que fora da China começou a aumentar.

É claro que à medida em que, infelizmente, outros países possam ter um aumento substantivo nesses casos, cada um vai dar até para isolar e vê-los separadamente nesse gráfico e comparar.

Torcemos para que isso aconteça o mínimo possível, claro. Fazemos todo o possível. Infinitos profissionais correndo atrás para segurar esse crescimento e manter a letalidade baixa.

Mas à medida em que isso aumenta nos outros países, nós conseguimos, infelizmente, abrir, ver e comparar os outros países e o crescimento nos outros países também. Agora esses dois gráficos já nos trazem muito mais informações.

Repare que sempre dá para avançarmos e repare como andam unidas as duas coisas. Para eu ser capaz de gerar uma visualização que vai passar a informação e a mensagem que acreditamos que seja justa e honesta, eu preciso não só refinar o gráfico.

Aqui tem várias outras coisas, como eu falei, da linha e da coluna – a linha que eu digo, o “grid” – a legenda, será que vale a pena colocar: “is_mainland_china_label” ou arranco fora essa palavra? Tudo isso são customizações do Matplolib e do Seaborn, documentação API está disponível para nós.

Mas ao mesmo que temos esse trabalho para montar essa visualização da maneira que montamos aqui, nós também tivemos o trabalho de calculá-la, e o cálculo dela foram diversos passos, então agora estamos usando o Data Science como um todo, processando e fazendo várias coisas.

Claro, tem muitas outras áreas de Data Science, como estatística e entre outras que vamos discutindo e conversando com o passar do tempo, mas temos mais coisas e cada vez envolvemos tudo o que estudamos até agora. É claro, tudo isso está legal, mas nós ainda não usamos outras fontes de dados que não sejam a da Johns Hopkins. Vamos fazer isso daqui a pouco.

Sobre o curso Data Science: visualização de dados para saúde e medicina

O curso Data Science: visualização de dados para saúde e medicina possui 161 minutos de vídeos, em um total de 22 atividades. Gostou? Conheça nossos outros cursos de Data Science 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:

Aprenda Data Science acessando integralmente esse e outros cursos, comece hoje!

Plus

De
R$ 1.800
12X
R$109
à vista R$1.308
  • Acesso a TODOS os cursos da Alura

    Mais de 1500 cursos completamente atualizados, com novos lançamentos todas as semanas, emProgramação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

Matricule-se

Pro

De
R$ 2.400
12X
R$149
à vista R$1.788
  • Acesso a TODOS os cursos da Alura

    Mais de 1500 cursos completamente atualizados, com novos lançamentos todas as semanas, emProgramação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Luri powered by ChatGPT

    Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com Luri até 100 mensagens por semana.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas