Skip to content

Latest commit

 

History

History
170 lines (131 loc) · 4.5 KB

cp5.md

File metadata and controls

170 lines (131 loc) · 4.5 KB
jupytext kernelspec
formats text_representation
md:myst
extension format_name format_version jupytext_version
.md
myst
0.13
1.11.5
display_name language name
Python 3
python
python3

Transformação de Dados

:class: tip
Para execução dos códigos, é necessário instalar as seguintes bibliotecas: 

 - *!pip install AnonymizeDF*

Anonimização de Dados

:tags: [remove-output]
# Importando as bibliotecas
import pandas as pd
from anonymizedf.anonymizedf import anonymize

# Criando um DataFrame com as 3 primeiras amostras do exemplo anterior
dados = {'Nome': ['Ana', 'Bárbara', 'Cláudia'],
        'Altura': [175, 162, 161],
        'Idade': [25, 37, 45],
        'Pressão': [132, 90, 140],
        'Temperatura': [38, 37, 39],
        'Sexo': ['Feminino', 'Feminino', 'Feminino'],
        'Escolaridade': ['Superior', 'Nenhuma', 'Superior'],
        'Diagnóstico': ['Doente', 'Saudável', 'Saudável']}

df = pd.DataFrame(dados)
        
# Anonimizando os dados
an = anonymize(df)
an.fake_names('Nome')
an.fake_whole_numbers('Altura')
an.fake_whole_numbers('Idade')
an.fake_whole_numbers('Pressão')
an.fake_whole_numbers('Temperatura')
an.fake_categories('Sexo')
an.fake_categories('Escolaridade')
an.fake_categories('Diagnóstico')

# an.fake_dates('Coluna') 
# an.fake_decimal_numbers('Coluna')

# Dados anonimizados
df.iloc[:, 8:16]

Conversão de Valores entre Diferentes Tipos

cidades = pd.DataFrame(
    [
        ['Paraná', 'Londrina', 575377, 1356.00, 'Quinto', 'Não'],
        ['São Paulo', 'São Carlos', 254484, 1508.00, 'Quarto', 'Não'],
        ['Santa Catarina', 'Florianópolis', 508826, 1798.00, 'Segundo', 'Sim'],
        ['Paraná', 'Curitiba', 1963726, 2293.00, 'Primeiro', 'Sim'],
        ['São Paulo', 'Campinas', 1223237, 1710.00, 'Terceiro', 'Não']
    ], columns=['Estado', 'Cidade', 'Habitantes', 'Salário-Médio', 'Classificação', 'Capital'])
# Importando a função de transformação ordinal do scikit-learn
from sklearn.preprocessing import OrdinalEncoder

ordem = ['Primeiro', 'Segundo', 'Terceiro', 'Quarto', 'Quinto']
codificador = OrdinalEncoder(categories=[ordem])
cidades['Classificação'] = codificador.fit_transform(cidades[['Classificação']])
# Importando a função de transformação binária do scikit-learn
from sklearn.preprocessing import OneHotEncoder

encoder = OneHotEncoder()

estados = encoder.fit_transform(cidades[['Estado']]).toarray()
estados = pd.DataFrame(estados, columns=encoder.categories_[0])
cidades = pd.concat([cidades, estados], axis=1)

# Removendo a coluna original com os dados nominais
cidades.drop('Estado', axis=1, inplace=True)
estados = pd.get_dummies(cidades['Estado'])
cidades = pd.concat([cidades, estados], axis=1)

# Removendo a coluna original com os dados nominais
cidades.drop('Estado', axis=1, inplace=True)
# Importando a função de transformação de scikit-learn
from sklearn.preprocessing import LabelEncoder

encoder = LabelEncoder()
cidades['Capital'] = encoder.fit_transform(cidades[['Capital']])
# Criando o DataFrame de idade
df = pd.DataFrame({'Idade': [42, 15, 67, 55, 
                             1, 29, 75, 89, 4,
                             10, 15, 38, 22, 77]})
                        
df['Label'] = pd.cut(x=df['Idade'], bins=[0, 3, 17, 70, 99],
                     labels=['Bebê', 'Criança', 
                             'Adulto', 'Idoso'])
df

Transformação de Valores Numéricos

# Importando a biblioteca numpy
import numpy as np

#Criando um atributo randômico usando distribuição beta para teste 
dados = np.random.beta(a=4, b=15, size=300)

#Transformação logarítmica
dados_log = np.log(dados)
dados_log 

#Transformação de raiz quadrada
dados_sqrt = np.sqrt(dados)
dados_sqrt

#Transformação Módulo (valor absoluto)
dados_absoluto = np.absolute(dados_log )
dados_absoluto
# Importando a função MinMaxScaler
from sklearn.preprocessing import MinMaxScaler

df = pd.DataFrame({'Valores': [1, 18, 0.5, 20, 10, 0.1, 15]})
                        
scaler = MinMaxScaler(feature_range=[0, 1])
df_minmax = scaler.fit_transform(df)
# Importando a função  StanderScaler
from sklearn.preprocessing import StandardScaler

df = pd.DataFrame({'Valores': [1, 18, 0.5, 20, 10, 0.1, 15]})
                        
scaler = StandardScaler()
df_normal = scaler.fit_transform(df)
df_normal