Na aula de hoje eu quero falar sobre a importância da limpeza de dados no Python para projetos de ciência de dados!
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:
Você sabe o que é o Data Cleaning em Python e qual o motivo para usar em projetos de ciência de dados?
Hoje eu vou te mostrar isso limpando os dados da nossa base, então vou te mostrar isso em um projeto de análise de dados para que fique mais fácil de entender.
Você vai notar que o data cleaning ou limpeza de dados é muito importante, principalmente no tratamento de dados no Python, pois é com essa limpeza que vamos conseguir entender melhor esses dados.
Dessa forma vamos conseguir saber melhor do que se trata, vamos conseguir classificar e até tirar algumas conclusões dessas informações que temos.
Dá só uma olhada nesse nosso exemplo, aqui estamos utilizando a biblioteca pandas para fazer a importação da nossa base de dados.
Só com essa base de dados você vai notar que as informações não estão muito claras e não conseguimos separá-las para facilitar a nossa análise.
Podemos até fazer um agrupamento dessas informações para que você veja a quantidade que temos de cada um para verificar se conseguimos separá-las.
base.groupby(["Pagamento","ChaveSituacao"])["Pagamento"].count()
Veja que o número máximo que temos de uma informação é 2. Esse número é muito pequeno para fazer uma classificação, então vamos ter que fazer isso de outra maneira.
Aqui é possível verificar que temos uma alta cardinalidade entre as informações e precisamos fazer esse tratamento.
Veja que temos uma descrição do que é cada informação da nossa base de dados, e isso é muito importante para que você consiga fazer essa separação.
Podemos iniciar pela separação da ChaveSituacao do cliente para podermos separar em Idade, Genero e EstadoCivil.
texto = '32FC'
texto[2:3]
base['Idade'] = base.ChaveSituacao.str[:2]
base['Genero'] = base.ChaveSituacao.str[2:3]
base['EstadoCivil'] = base.ChaveSituacao.str[-1]
base.head()
base.groupby(["Pagamento","EstadoCivil"])["Pagamento"].count()
Podemos utilizar os métodos de string para pegar uma parte de um texto para poder fazer essa separação.
OBS: Essa separação foi feita dessa forma, pois temos um padrão. Isso quer dizer que as duas primeiras informações são idade, a terceira é o gênero do cliente e por fim temos o estado civil do cliente.
Então já conseguimos criar 3 colunas com essas informações que já facilitam mais a nossa análise.
Veja que ao fazer o agrupamento de pagamento e estado civil é possível notar que todos os viúvos (clientes) pagaram. Então é possível que os clientes viúvos sejam clientes melhores para essa empresa.
texto = 'Basic-Alpha'
texto.split('-')
base['Categoria'] = base.CatCliente.str.splot('-').str.get(0)
base['CatVIP'] = base.CatCliente.str.splot('-').str.get(1)
base.head()
Para as informações de CatCliente (que é a categoria do cliente) nós podemos utilizar o método split (divisão).
Isso vai fazer com que você consiga separar as informações dessa coluna sem considerar uma quantidade específica de caracteres, dessa forma vamos poder separar independente do tamanho da palavra.
Se com esses métodos você ainda não conseguir separar suas informações pode utilizar o Regex (regular expressions) para isso.
import re
re.findall('Lucas','meu nome é Lucas')
# Buscando Lucas no texto abaixo
re.findall('Lu*cas','meu nome é Lcas')
# Verificando se começa ou termina com um caracter (usando ^, $)
re.findall('^Lucas','meu nome é Lucas')
# Verificando se existe parte da palavra Lucas (usando *, +, ?)
re.findall('Lu+cas','meu nome é Lucas)
# Buscando por Letra maiúsculas
re.findall('[A-Z]+\w{4}','meu nome é Lucas')
Aqui não vamos entrar em detalhes sobre esse assunto, mas nós temos uma publicação falando desse assunto, então caso queira entrar mais a fundo pode clicar aqui.
base.head()
# Buscando agora a classificação do cliente dentro da coluna "ClassRisco"
re.findall('^[A-Z][^A-Za-z]?','AAmarelo')
base['Risco'] = base.ClassRisco.apply(lambda x: re.findall('^[A-Z][^A-Za-z]?',x)[0])
base.head()
Então utilizando o regex nós vamos conseguir fazer a separação do Risco do cliente, pois aqui temos letras e os sinais de menos e mais, então só a separação que já fizemos não seria suficiente para essa classificação.
Para finalizar é importante verificar as informações da nossa base para garantir que o tipo das informações está correto.
base.info()
Veja que a nossa coluna de idade está como objeto e na nossa categoria VIP temos 12 informações vazias, então vamos fazer esses tratamentos.
base['Idade'] = pd.to_numeric(base['Idade'])
base.info()
base.loc[base.CatVIP.isnull(),"CatVIP"] = "Comum"
base.info()
Pronto, com os tipos e os valores vazios tratados nós podemos começar com nossas análises.
Podemos por exemplo criar uma base apenas com as colunas que acabamos de criar para verificar uma análise de risco.
base.groupby(["Pagamento","Risco"])["Pagamento"].count()
Você deve ter notado que é importante não só entender os dados como fazer essa limpeza de dados para que fique tudo mais fácil e você consiga fazer suas análises de forma correta.
Nessa aula eu te mostrei como fazer uma limpeza de dados no Python para que você consiga fazer o seu tratamento de dados de forma correta e fazer sua análise!
Essa parte é muito importante, pois as vezes com os dados iniciais você não consegue identificar as informações que precisa, então é preciso separar e classificá-las para que possa fazer as análises!
Para acessar outras publicações de Ciência de Dados, clique aqui!
Expert em conteúdos da Hashtag Treinamentos. Auxilia na criação de conteúdos de variados temas voltados para aqueles que acompanham nossos canais.