<jupyter_start><jupyter_text><jupyter_code>#Importando o Pandas
import pandas as pd
#Importando o Dataframe a ser usado google cloud

df = pd.read_csv("/content/drive/MyDrive/DADOS/Dados mini_projeto/marketing_campaign.csv.csv", sep=",")
df.head(1)
#Fazendo uma Copia do Dataframe 
df_copy = df.copy()
df1 = df
#Analisando os Tipos existentes no dataframe
df1.dtypes
#Renomeando as Colunas para o Português
df1.rename(columns={'ID': 'ID_Clientes', 'Year_Birth': 'Ano_Nacimento' , 'Education' : 'Educacao', 'Marital_Status': 'Estado_Civil' , 'Income' : 'Renda_Anual', 'Kidhome': 'Qts_Criancas' , 'Teenhome' : 'Qts_Adolecentes', 'Dt_Customer': 'Data_Cadastro' , 'Recency' : 'Dias_desde_ultima_compra', 'MntWines': 'Qt_Vinho_Comprado' , 'MntFruits' : 'Qt_Fruta_Comprada', 'MntMeatProducts': 'Qt_Carne_comprada' , 'MntFishProducts' : 'Qt_Produto_pesca_comprada', 'MntSweetProducts': 'Qt_Doce_comprado' , 'MntGoldProds' : 'Qt_Produto_premiun_comprado', 'NumDealsPurchases': 'Qt_Compra_desconto' , 'NumWebPurchases' : 'Qt_Compra_site', 'NumCatalogPurchases' : 'Qt_Compra_Catálogo', 'NumStorePurchases': 'Qt_Compra_Loja' , 'NumWebVisitsMonth' : 'Qt_Visita_site_mês', 'AcceptedCmp3' : 'Aceitou_campanha_3', 'AcceptedCmp4': 'Aceitou_campanha_4' , 'AcceptedCmp5' : 'Aceitou_campanha_5', 'AcceptedCmp1' : 'Aceitou_campanha_1', 'AcceptedCmp2': 'Aceitou_campanha_2' , 'Complain' : 'Reclamação', 'Z_CostContact' : 'Custo_Contato_Cliente', 'Z_Revenue' : 'Receita_Campanha', 'Response' : 'Resposta'}, inplace=True)
df1.head(1)
#Descobrir se a Coluna ID_Clientes é única
df1["ID_Clientes"].is_unique
#Achar Colunas com Na
df1.isna().sum()
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Ano_Nacimento"])
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Educacao"])
#Alterando as linhas de dados da coluna Educação para o Português - BR
df1["Educacao"].replace("2n Cycle", "Ensino Médio", inplace=True)
df1["Educacao"].replace("Graduation", "Ensino Superior", inplace=True)
df1["Educacao"].replace("Master", "Mestrado", inplace=True)
df1["Educacao"].replace("PhD", "Doutorado", inplace=True) 
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Estado_Civil"])
#Alterando as linhas de dados para o Português - BR e mudando valores inconsistêntes para NA
df1["Estado_Civil"].replace("Single", "Solteiro(a)", inplace=True)
df1["Estado_Civil"].replace("Together", "União Estável", inplace=True)
df1["Estado_Civil"].replace("Married", "Casado(a)", inplace=True)
df1["Estado_Civil"].replace("Divorced", "Divorciado(a)", inplace=True)
df1["Estado_Civil"].replace("Widow", "Viúvo(a)", inplace=True)
df1["Estado_Civil"].replace("Alone", "Solteiro(a)", inplace=True)
df1["Estado_Civil"].replace("Divorced", "Divorciado(a)", inplace=True)
df1.replace(["Absurd", "YOLO"], pd.NA, inplace = True)
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Renda_Anual"])
#Utilizo o Sorted com for quando a coluna tem muitas linhas que não se repetem, assim consigo analisar item por item para achar alguma inconsistência
x =  sorted(pd.unique(df1["Renda_Anual"]))
for i in range(len(x)):
  if i % 20 == 0:
        print()
  print(x[i], end=', ')
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Qts_Criancas"])
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Qts_Adolecentes"])
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Data_Cadastro"])
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Dias_desde_ultima_compra"])
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Qt_Vinho_Comprado"])
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Qt_Fruta_Comprada"])
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Qt_Carne_comprada"])
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Qt_Produto_pesca_comprada"])
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Qt_Doce_comprado"])
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Qt_Produto_premiun_comprado"])
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Qt_Compra_desconto"])
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Qt_Compra_site"])
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Qt_Compra_Catálogo"])
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Qt_Compra_Loja"])
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Qt_Visita_site_mês"])
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Aceitou_campanha_3"])
#Alteração para string, para facilitar a leitura
df1["Aceitou_campanha_3"].replace(0, "Não", inplace=True)
df1["Aceitou_campanha_3"].replace(1, "Sim", inplace=True)
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Aceitou_campanha_4"])
#Alteração para string, para facilitar a leitura
df1["Aceitou_campanha_4"].replace(0, "Não", inplace=True)
df1["Aceitou_campanha_4"].replace(1, "Sim", inplace=True)
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Aceitou_campanha_5"])
#Alteração para string, para facilitar a leitura
df1["Aceitou_campanha_5"].replace(0, "Não", inplace=True)
df1["Aceitou_campanha_5"].replace(1, "Sim", inplace=True)
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Aceitou_campanha_1"])
#Alteração para string, para facilitar a leitura
df1["Aceitou_campanha_1"].replace(0, "Não", inplace=True)
df1["Aceitou_campanha_1"].replace(1, "Sim", inplace=True)
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Aceitou_campanha_2"])
#Alteração para string, para facilitar a leitura
df1["Aceitou_campanha_2"].replace(0, "Não", inplace=True)
df1["Aceitou_campanha_2"].replace(1, "Sim", inplace=True)
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Reclamação"])
#Alteração para string, para facilitar a leitura
df1["Reclamação"].replace(0, "Sem reclamação", inplace=True)
df1["Reclamação"].replace(1, "Com reclamação", inplace=True)
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Custo_Contato_Cliente"])
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Receita_Campanha"])
#Utilizando o unique para buscar inconsistências em cada Coluna
pd.unique(df1["Resposta"])
#Alteração para string, para facilitar a leitura
df1["Resposta"].replace(0, "Não", inplace=True)
df1["Resposta"].replace(1, "Sim", inplace=True)
# Retirada da coluna
df1.drop(['Receita_Campanha', 'Resposta', 'Custo_Contato_Cliente'], axis = 1, inplace= True)
#Visualizando o dataframe
df1.head(1)
#Salvando meu Dataframe
df1.to_csv('marketing.csv', index=False)
df1.dtypes<jupyter_output><empty_output><jupyter_text>**PYSPARK**<jupyter_code>#Instalar Pyspark
!pip install pyspark
#Importanto Bibliotecas para utilização do Pyspark
from pyspark.sql import SparkSession
import pyspark.sql.functions as F
from pyspark.sql.window import Window 
from pyspark.sql.types import StructType, StructField, StringType, IntegerType, DoubleType
spark = (SparkSession.builder.
         master('local').
         appName('dataframe_withcolumn').
         config('spark.ui.port', '4050').
         getOrCreate())
df2 = (spark.read.
       format("csv").
       option("header", "true").
       option("inferschema", "true").
       option("delimiter", ",").
       load('/content/drive/MyDrive/DADOS/Dados mini_projeto/marketing.csv'))
df2.printSchema()
#Renomeando novas colunas
df2 = df2.withColumnRenamed('ID_Clientes', 'ID_Cliente').withColumnRenamed('Qt_Compra_desconto', 'Qtd_Compra_desconto').withColumnRenamed('Qt_Compra_site', 'Qtd_Compra_site').withColumnRenamed('Qt_Compra_Catálogo', 'Qtd_Compra_Catálogo').withColumnRenamed('Qt_Compra_Loja', 'Qtd_Compra_Loja').withColumnRenamed('Qt_Visita_site_mês', 'Qtd_Visita_site_mes').withColumnRenamed('Reclamação', 'Reclamacoes')
df2.show(5)
#Criando novas colunas
df2 = df2.withColumn("Filhos", F.col("Qts_Criancas") + F.col("Qts_Adolecentes"))
df2 = df2.withColumn("Valor das Compras", F.col("Qt_Vinho_Comprado") + F.col("Qt_Fruta_Comprada") + F.col("Qt_Carne_comprada") + F.col("Qt_Produto_pesca_comprada") + F.col("Qt_Doce_comprado") + F.col("Qt_Produto_premiun_comprado"))

df2.show(1)
#Filtrando os gastos de uma família com filhos ou sem filhos
filtro = F.col("Estado_Civil") == "Casado(a)"
df2.select(F.col("Estado_Civil"), F.col("Filhos"), F.col("Valor das Compras")).filter(filtro).show(10)
#Filtrando os gastos de pais solteiros com filhos
df2.select(F.col("Estado_Civil"), F.col("Filhos"), F.col("Qt_Doce_comprado"))\
                .filter(F.col("Filhos") > 0)\
                .filter(F.col("Estado_Civil") == "Solteiro(a)")\
                .filter(F.col("Qt_Doce_comprado") < 10)\
                .show(100)
#Ordenando a Tabela de acordo com o Valor das compras com o cadastro do cliente
df2.orderBy("valor das Compras","Data_Cadastro").show(truncate=False)
#Média de Gastos dde clientes ordenado por estado civil 
df2.groupby(F.col("Estado_Civil")).mean("Renda_Anual").show()
#Particionando Estado Civil por ordem de Educação usando rank
w0 = Window.partitionBy(F.col("Estado_Civil")).orderBy("Educacao")
df2.withColumn("rank", F.rank().over(w0)).show()
#Ordenando Ano de Nascimento usando row_number
w0 = Window.orderBy("Ano_Nacimento")
df2.withColumn("row_number", F.row_number().over(w0)).show()
#Mostrar como está o dataframe depois de todas as alterações
df2.show()
#Salvando o arquivo no drive
#Marketing_pyspark1 = df2.write.format("csv").option("header", "true").option("inferschema", "true").option("delimiter", ",").save("/content/drive/MyDrive/Marketing_pyspark1.csv")<jupyter_output><empty_output><jupyter_text>**SparkSQL**<jupyter_code>#Importando um dataframe já limpo do Pyspark e Pandas
df3 = spark.read.format("csv") \
  .option("inferSchema", "true") \
  .option("header", "true") \
  .option("sep", ",") \
  .load("/content/drive/MyDrive/Marketing_pyspark1.csv/Marketing_pyspark1.csv") \
  .createOrReplaceTempView("Marketing")
#Visualizando o dataframe com a função Select do sql.
spark.sql("SELECT * FROM Marketing").show(1)
#Retora qual tipo de tabela posso melhor trabalhar, ajudando assim a fazer as filtragens
spark.sql("DESCRIBE Marketing ").show(30)
#Verificando a quantidade de Filhos por Estado Civil utilizando a função "count", cotando todos os filhos listados em cada estado civil.
spark.sql("SELECT Estado_Civil, COUNT(Filhos) AS Filhos FROM Marketing GROUP BY Estado_Civil").show(10)
#Verificando quais os clientes que aceitaram Campanha 5, utilizando a função "where" onde identificamos cada cliente que disse sim.
spark.sql("SELECT * FROM Marketing WHERE Aceitou_campanha_5 == 'Sim'").show(10)
#Continuando com a função "Where" lozalizamos quais os clientes que compraram vinho e quantas vezes eles foram até a loja física.
spark.sql("SELECT * FROM Marketing WHERE Qt_Vinho_Comprado > 0 AND Qtd_Compra_Loja > 0").show()
#Com a função "Where" e "Like", encontramos todos os nossos clientes Solteiros, assim podemos saber quanto e como compram.
spark.sql("SELECT * FROM Marketing WHERE Estado_Civil LIKE  'S%'").show()
# Sabemos a data de cadastro dos clientes sem repetições, a empresa pode enviar cartões ou descontros especiais  de aniversário fidelidade, utilo a função "Distinct" para realizar essa filtragem. 
spark.sql("SELECT DISTINCT Data_Cadastro FROM Marketing").show()
#Utilizamo a fução "Count" "Where" "GroupBy" para para saber qual o melhor consumo de um cliente, selecionamos os divorciados com filhos e podemos fazer comparações com outros clientes.
spark.sql("SELECT Estado_Civil, COUNT(Filhos) AS QTS_FILHOS FROM Marketing WHERE Estado_Civil == 'Divorciado(a)' GROUP BY Estado_Civil").show()
#Utilizando a Educaçao como parametro, verifico a Soma da renda, a Renda mínima, a Máxima e a média de cada cliente pela sua educação, dessa forma pode-se melhor ofertar para cada tipo de cliente.
spark.sql("SELECT Educacao, SUM(Renda_Anual) AS SOMA_RENDA, MIN(Renda_Anual) AS MIN_RENDA, MAX(Renda_Anual) AS MAX_RENDA, ROUND(MEAN(Renda_Anual), 2) AS MEDIA_RENDA FROM Marketing GROUP BY Educacao ORDER BY Educacao").show()
#Utilizando a função "Count" "Where" "GoupBy"para termos um parametro de quantos clientes aceitaram a campanha 4 e compraram pelo site.
spark.sql("SELECT Aceitou_campanha_4, COUNT(Qtd_Compra_site) AS QTD_COMPRA_SITE FROM Marketing WHERE Aceitou_campanha_4 == 'Sim' GROUP BY Aceitou_campanha_4").show()
#Utilizando o "Where" descobrimos quantas visitas no site geraram vendas com descontos.
spark.sql("SELECT Qtd_Compra_desconto FROM Marketing WHERE Qtd_Visita_site_mes > 0").show()<jupyter_output><empty_output>
StarcoderdataJupyterStructuredCleanDedup