Boas-vindas! Meu nome é Pedro Moura e irei te acompanhar ao longo deste curso de Privacidade e Proteção de Dados.
Audiodescrição: Pedro se descreve como um homem de pele clara, olhos castanho-escuros, e cabelos castanho-escuros lisos e curtos. Ele usa óculos de armação retangular preta, veste uma camiseta verde-escura, e está sentado em um cenário iluminado em gradiente verde com alguns móveis, quadros e enfeites ao fundo.
Neste curso, vamos aprender sobre a disciplina de governança de dados e como ela se relaciona com a Lei Geral de Proteção de Dados Pessoais, a LGPD.
Vamos discutir a questão da conformidade, entender como identificar dados pessoais em uma organização, e como executar as ações para chegar à conformidade, protegendo os dados pessoais.
Para acompanhar melhor este curso, é importante que você tenha conhecimento básico em governança de dados.
Vamos aprender sobre Privacidade e Proteção de Dados?
Imagine que trabalhamos em uma clínica médica. Essa clínica busca desenvolver um novo sistema baseado em informações para diagnóstico.
A ideia é que, quando a pessoa médica for analisar os dados do paciente, ela tenha a maior quantidade possível de informações para tomar a melhor decisão.
Precisamos de todos os exames que essa pessoa paciente já realizou na clínica, se na família dela há algum histórico de doença, qual é o peso dela, a idade, e as demais informações que podem ser passadas para a pessoa médica, de modo a ajudá-la a tomar a melhor decisão possível na hora de entender o diagnóstico ou indicar um tratamento.
Entretanto, os dados dos pacientes da clínica estão espalhados em diversas bases, a ponto de ser difícil indicar quais têm ou não dados sobre pacientes.
Nesse caso, nossa função na clínica como pessoas especialistas em governança de dados se divide em duas etapas:
- A primeira é entender quais bases possuem dados sobre os clientes, isto é, as pessoas pacientes da clínica;
- E a segunda é entender se essa disponibilização de dados está em conformidade com a Lei Geral de Proteção de Dados Pessoais (LGPD) e não fere a privacidade dos dados dos pacientes.
Sendo assim, vamos por partes: a primeira tarefa que vamos realizar será identificar quais bases da clínica têm dados pessoais sobre os pacientes. Como podemos fazer isso?
Poderíamos, por exemplo, abrir uma ou mais bases, analisá-las, e tentar identificar quais possuem dados pessoais. Porém, a clínica tem mais de 200 bases e não conhecemos todas tão bem para entender a informação contida em cada uma delas. Será que existe uma forma mais eficiente de fazer isso?
A verdade é que sim, e conseguimos até utilizar métodos mais automatizados para entender quais bases contêm ou não dados pessoais. É exatamente o que vamos fazer a partir do próximo vídeo com a biblioteca Data Profiler!
No último vídeo, recebemos a tarefa de preparar o ambiente de dados de uma clínica médica para que um novo sistema de informações seja estabelecido.
A ideia é que, ao dar o diagnóstico de alguma doença ou prescrever algum tratamento, a pessoa médica tenha o máximo possível de informações sobre a pessoa paciente para tomar a decisão correta.
Agora, nossa tarefa é identificar quais bases da clínica possuem dados de pacientes, ou seja, quais delas possuem dados pessoais.
Já discutimos anteriormente que realizar isso de forma manual é ineficiente. Sendo assim, para ganhar eficiência nessa tarefa, usaremos uma biblioteca chamada Data Profiler da Capital One.
Essa biblioteca funciona com código Python, então para termos um ambiente de desenvolvimento também eficiente, usaremos o Google Colaboratory.
O Google Colaboratory é um ambiente de desenvolvimento vinculado a uma conta do Google e é gratuito. Além disso, ele facilita um pouco a configuração, pois não precisamos nos preocupar em baixar o Python e configurar alguns pacotes. Ele já vem pronto para que possamos interagir com os dados a partir de um notebook muito similar ao Jupyter.
Com o ambiente de desenvolvimento aberto, você terá acesso a uma cópia do notebook Curso de privacidade.ipynb
do instrutor. É nele que vamos trabalhar ao longo do curso.
A primeira coisa que precisamos fazer no nosso ambiente de desenvolvimento é importar as bases de dados que serão usadas ao longo do curso.
Para isso, vamos acessar o menu lateral à esquerda, onde temos alguns ícones. O quinto ícone é o de arquivos ("Arquivos"). Podemos clicar sobre ele.
Uma vez inicializado o ambiente de execução, ficam disponíveis mais alguns ícones na parte superior à esquerda, na aba "Arquivos", com os quais podemos manipular arquivos no ambiente de desenvolvimento.
Nesse caso, queremos colocar os arquivos do projeto dentro do ambiente de desenvolvimento. Para isso, clicaremos no primeiro ícone: "Fazer upload para armazenamento da sessão".
Adicionaremos as 3 bases de dados que serão importantes:
autoridades_navais.csv
;nomes_comuns.txt
;- E
sobrenomes_comuns.txt
.
Ao clicar em "Abrir", recebemos um aviso muito importante na tela: que todas as bases usadas dentro do ambiente de desenvolvimento não ficam permanentemente nele, apenas temporariamente.
Aviso! Confira se os arquivos foram salvos em outro lugar. Os arquivos deste ambiente de execução vão ser excluídos quando ele for encerrado.
Quando usamos o Google Colab, o Google fornece um pouco de espaço de armazenamento em nuvem. Para que isso não fique muito pesado ou custoso para o Google, esses dados são apagados após algum tempo.
Portanto, caso o seu ambiente de desenvolvimento seja desconectado ou você o feche por algum motivo, será necessário realizar novamente o upload dos dados.
Uma vez realizado o upload dos dados, podemos voltar ao código. A primeira coisa que vamos fazer em código é realizar a instalação da biblioteca que será utilizada neste curso: a Data Profiler.
Para fazer a instalação de uma biblioteca no ambiente do Colab, basta usar exclamação (!
) para criar o comando como um prompt. Nesse caso, o comando de instalação de pacotes do Python é o pip
, então vamos escrever !pip install DataProfiler[ml]
.
!pip install DataProfiler[ml]
Com "Ctrl + Enter", conseguimos executar a célula. Alternativamente, podemos clicar no botão de play à esquerda da célula. Esse passo de instalação pode demorar um pouco.
No caso do instrutor, o comando demorou 1 minuto e meio para ser realizado, mas não se preocupe se ele demorar um pouco mais ou um pouco menos do que isso.
Agora precisamos importar para o ambiente de desenvolvimento algumas bibliotecas que serão importantes durante o curso.
Para isso, em uma nova célula, vamos começar com a linha de comando from dataprofiler import Data, Profiler
. Na linha abaixo, importaremos a biblioteca Pandas com import pandas as pd
. Por fim, vamos importar a biblioteca JSON utilizando import json
.
from dataprofiler import Data, Profiler
import pandas as pd
import json
Para finalizar, precisamos executar a célula.
Essas são as três bibliotecas principais que vamos usar durante o curso. Vamos entender um pouco melhor o que cada uma delas faz?
A dataprofiler
é justamente a biblioteca que conseguirá gerar dados estatísticos, inclusive dados que indicam se aqueles são dados pessoais ou não.
A pandas
é a biblioteca padrão para trabalharmos com dados e datasets no Python, enquanto a biblioteca json
nos ajudará a trabalhar com arquivos JSON.
Arquivos JSON também são muito importantes quando trabalhamos com dados de maneira geral.
Agora precisamos criar um dataset para podermos interagir com os dados. Para isso, vamos usar a biblioteca pandas
e também os dados que subimos anteriormente.
De volta à aba "Arquivos", temos três bases principais: autoridades_navais.csv
, nosso conjunto de dados; nomes_comuns.txt
; e sobrenomes_comuns.txt
, que usaremos um pouco mais adiante no curso.
Para facilitar nosso trabalho, vamos clicar no ícone ⁝
à direita de autoridades_navais.csv
e copiar o caminho do arquivo ("Copiar caminho"), para que possamos manipulá-lo de maneira mais fácil.
Feito isso, precisamos criar a variável que receberá esses dados. Em uma nova célula, vamos declarar dados
igual a pd.read_csv()
. Entre parênteses e aspas simples, basta colar o que acabamos de copiar da aba "Arquivos", que é a localização do arquivo CSV no ambiente de desenvolvimento.
Além disso, precisamos passar uma configuração de encoding
. Nesse caso, ela será igual a windows-1252
.
dados = pd.read_csv('/content/autoridades_navais.csv', encoding='windows-1252')
Ao executar a célula, criamos a variável (dados
) que tem o dataset.
Vamos analisar como esse dataset se comporta? Começaremos executando o comando dados.shape
em uma nova célula, para mostrar a quantidade de linhas e colunas do conjunto de dados.
dados.shape
Retorno da célula
(9, 8)
Depois, executaremos dados.head()
para verificar como os dados se comportam.
dados.head()
# | CARGO | NOME | OM | ATRIBUIÇÕES DA OM | ENDEREÇO | TELEFONE | ASSISTENTE | |
---|---|---|---|---|---|---|---|---|
0 | Comandante da Marinha | Almirante de Esquadra Marcos Sampaio OLSEN | GABINETE DO COMANDANTE DA MARINHA (GCM) | O GCM tem o propósito de assistir ao Comandant… | Esplanada dos Ministérios, Bloco "N", 2º, 3º e… | (61) 3429-1001 | NaN | NaN |
1 | Chefe do Estado-Maior da Armada | Almirante de Esquadra André Luiz SILVA LIMA de… | ESTADO-MAIOR DA ARMADA (EMA) | O EMA tem o propósito de assessorar o Comandan… | Esplanada dos Ministérios, Bloco “N”. 5º andar… | (61) 3429–1045 | CC (AA) Alessandra | alessandra.hypolito@marinha.mil.br |
2 | Diretor-Geral de Desenvolvimento Nuclear e Tec… | Almirante de Esquadra PETRONIO Augusto Siqueir… | DIRETORIA-GERAL DE DESENVOLVIMENTO NUCLEAR E T… | A DGDNTM, como um Órgão de Direção Setorial, t… | Rua da Ponte - Ilha das Cobras S/Nº - Ed. 23 -… | (21) 2197-7561 | CC (AA) Peixoto | ricardo.peixoto@marinha.mil.br |
3 | Comandante de Operações Navais | Almirante de Esquadra Wladmilson BORGES de Agu… | COMANDO DE OPERAÇÕES NAVAIS (ComOpNav) | O ComOpNav tem o propósito de aprestar as Forç… | Endereço: Praça Barão de Ladário, s/nº , Ed. A… | (21) 2104-6037 | CF (T) Mendes | mendes.oliveira@marinha.mil.br |
4 | Diretor-Geral de Navegação | Almirante de Esquadra Wladmilson BORGES de Agu… | DIRETORIA-GERAL DE NAVEGAÇÃO (DGN) | A DGN tem o propósito de contribuir para o pre… | Praça Barão de Ladário, s/nº , Edifício Almira… | (21) 2104-7292 | CF (T) Mendes | mendes.oliveira@marinha.mil.br |
Quais tipos de dados existem na tabela? Temos uma base de dados com informações sobre oficiais de alto escalão da marinha. Se trabalhamos com uma clínica médica, por que pegamos uma base tão diferente?
Achamos que seria muito importante trazer para o curso um exemplo de dados do mundo real, que existem de fato e são dados pessoais.
Entretanto, como você deve imaginar, por uma questão de proteção de dados, que é justamente o tema do curso, não é muito comum que dados pessoais estejam amplamente disponíveis.
Justamente por isso, procuramos uma base que fosse liberada para uso, pois são informações públicas sobre pessoas servidoras públicas, então não há problema em usá-las no nosso curso.
Usaremos essa base de dados apenas para exemplificar o que a biblioteca Data Profiler consegue fazer ao tentar encontrar dados pessoais de forma mais automatizada.
Analisando melhor as informações da tabela, na primeira coluna temos o cargo que a pessoa ocupa na marinha. Na sequência, temos o nome, a OM (ou organização militar), as atribuições da OM, o endereço, o telefone, o nome da pessoa assistente, e o e-mail.
A partir disso, entendemos que algumas informações são dados pessoais.
profile
a partir dos dadosAgora precisamos criar primeiro um perfil a partir desses dados, para entendermos melhor como eles se comportam. Em uma nova célula, a variável profile
será igual a Profiler(dados)
.
profile = Profiler(dados)
Com isso, criamos um profile
, que é um perfil estatístico com várias informações sobre os dados.
profile
O próximo passo é gerar um relatório a partir desse profile
, para que possamos visualizar com mais facilidade o que essa base de dados tem como informações estatísticas.
Para isso, vamos criar um relatório chamado report
em uma nova célula, que será igual a profile.report()
. Entre parênteses, na linha abaixo, report_options
será igual a {"output_format":"compact"}
. Feito isso, podemos executar a célula de comando.
report = profile.report(
report_options={"output_format":"compact"}
)
Dessa forma, criamos o relatório de uma forma mais legível. Agora que o relatório está criado, precisamos olhar para ele. Para isso, basta executar report
em uma nova célula.
report
Como retorno, temos que, para cada coluna do dataset, foi criada uma série de informações estatísticas que podem nos ajudar a conhecer os dados de maneira mais eficiente. Vamos analisar as informações?
No topo do relatório, encontramos primeiro as informações globais da base como um todo.
{'global_stats': {'samples_used': 9,
'column_count': 8,
'row_count': 9,
'row_has_null_ratio': 0.1111,
'row_is_null_ratio': 0.0,
'unique_row_ratio': 1.0,
'duplicate_row_count': 0,
'file_type': "<class 'pandas.core.frame.DataFrame'>",
'encoding': None,
'correlation_matrix': None,
'chi2_matrix': '[[1. , 0.32389696, 0.38884088, 0.38884088, 0.38884088, 0.38884088,\n 0.31886441, 0.31886441], ... , [0.31886441, 0.25617786, 0.31886441, 0.31886441, 0.31886441, 0.31886441,\n 0.24912985, 1. ]]',
'profile_schema': {'CARGO': [0],
'NOME': [1],
'OM': [2],
'ATRIBUIÇÕES DA OM': [3],
'ENDEREÇO': [4],
'TELEFONE': [5],
'ASSISTENTE': [6],
'E-MAIL': [7]},
'times': {'row_stats': 0.0058}},
// retorno omitido
Depois encontramos algumas informações mais específicas sobre cada uma das colunas:
// retorno omitido
'data_stats': [{'column_name': 'CARGO',
'data_type': 'string',
'data_label': 'UNKNOWN',
'categorical': True,
'order': 'random',
'samples': "['Chefe do Estado-Maior da Armada',\n 'Diretor-Geral de Desenvolvimento Nuclear e Tecnológico da Marinha',\n 'Comandante da Marinha', 'Secretário-Geral da Marinha',\n 'Diretor-Geral do Pessoal da Marinha']",
// retorno omitido
Por exemplo: na coluna "CARGO", o tipo do dado (data_type
) é uma string
, o rótulo (data_label
) é UNKNOWN
, ele é um dado categórico ('categorical': True
), tem uma ordem aleatória ('order': 'random'
), e temos algumas amostras (samples
) do que o dado poderia ser.
Um pouco mais adiante, na coluna "TELEFONE", podemos conferir se ela se comporta de uma forma muito diferente. Nessa coluna, temos algumas informações que diferem das anteriores.
// retorno omitido
{'column_name': 'TELEFONE',
'data_type': 'string',
'data_label': 'PHONE_NUMBER',
// retorno omitido
Primeiramente, o nome da coluna (column_name
) é outro, e o rótulo do dado (data_label
) é definido como PHONE_NUMBER
, em outras palavras, é um número de telefone. Essa é a principal característica que justifica o uso da biblioteca Data Profiler para esse tipo de atividade.
O Data Profiler tem um modelo pré-treinado que consegue identificar padrões de dados pessoais. Nesse caso, ele já identificou que a coluna chamada "TELEFONE" é um número de telefone, pela maneira com que ela se comporta.
Entretanto, será que isso é o bastante para fazer a classificação se essa base tem dados pessoais ou não? Discutiremos melhor no próximo vídeo!
O curso Governança de dados: garantindo privacidade e proteção de dados para um futuro seguro possui 82 minutos de vídeos, em um total de 39 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:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
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.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
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.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
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.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.