<jupyter_start><jupyter_text>Importando dados<jupyter_code>import pandas as pd
path="drive/My Drive/DadosAlura/"

data = pd.read_csv('drive/My Drive/DadosAlura/aluguel.csv', sep=';')
data.head()
data.tail()<jupyter_output><empty_output><jupyter_text>Informações gerais sobre o banco de dados<jupyter_code>data.dtypes
tipo_dados= pd.DataFrame(data.dtypes, columns=['Tipos de dados'])
tipo_dados
tipo_dados.columns.name='Variaveis'
tipo_dados
print('A base de dados apresenta {} registros imóveis e {} variáveis'.format(data.shape[0], data.shape[1]))<jupyter_output>A base de dados apresenta 32960 registros imóveis e 9 variáveis<jupyter_text>Extras Lendo arquivos JSON<jupyter_code>df_json= pd.read_json('drive/My Drive/DadosAlura/aluguel.json')
df_json.head()<jupyter_output><empty_output><jupyter_text>Lendo arquivos HTML<jupyter_code>path = 'drive/My Drive/DadosAlura/'
html = pd.read_html(path+'dados_html_1.html')
df_html=html[0]
df_html<jupyter_output><empty_output><jupyter_text>Lendo arquivos Excel<jupyter_code>df_xlsx = pd.read_excel(path+'aluguel.xlsx')
df_xlsx<jupyter_output><empty_output><jupyter_text>Lendo arquivos txt<jupyter_code>df_txt = pd.read_table(path+'aluguel.txt')
df_txt<jupyter_output><empty_output><jupyter_text>Relatório de Análise II  Tipos de Imóveis<jupyter_code>tipo_de_imoveis  = data['Tipo']
tipo_de_imoveis.dtype
tipo_de_imoveis
tipo_de_imoveis.drop_duplicates(inplace=True)
tipo_de_imoveis<jupyter_output><empty_output><jupyter_text>Organizando Visualização<jupyter_code>tipo_de_imovel = pd.DataFrame(tipo_de_imoveis)
tipo_de_imovel
tipo_de_imovel.index = range(tipo_de_imovel.shape[0])
tipo_de_imovel.columns.name = 'id'
tipo_de_imovel<jupyter_output><empty_output><jupyter_text>Relatorio de analise III<jupyter_code>dados = pd.read_csv('drive/My Drive/DadosAlura/aluguel.csv', sep=';')
dados
list(dados['Tipo'].drop_duplicates())
residencial = ['Quitinete', 
'Casa',
'Apartamento',
'Casa de Condomínio',
'Casa de Vila']

residencial
dados
selecao = dados['Tipo'].isin(residencial)
selecao
dados_residencial = dados[selecao]
dados_residencial.head(10)
dados_residencial.shape[0]
dados.shape[0]
data.shape[0]
dados_residencial.index = range(dados_residencial.shape[0])
dados_residencial.head(10)<jupyter_output><empty_output><jupyter_text>Exportando base de dados<jupyter_code>dados_residencial.to_csv('drive/My Drive/DadosAlura/aluguel_residencial.csv', sep=';',index=False)<jupyter_output><empty_output><jupyter_text>Relatorio  de  Analise IV<jupyter_code>csv = path+'aluguel_residencial.csv'
dados_residencia = pd.read_csv(csv, sep=';')
dados_residencia<jupyter_output><empty_output><jupyter_text>querys a ser feitasSelecione somente os imóveis classificados com tipo 'Apartamento'.Selecione os imóveis classificados com tipos 'Casa', 'Casa de Condomínio' e 'Casa de Vila'.Selecione os imóveis com área entre 60 e 100 metros quadrados, incluindo os limites.Selecione os imóveis que tenham pelo menos 4 quartos e aluguel menor que R$ 2.000,00.<jupyter_code>#Selecione somente os imóveis classificados com tipo 'Apartamento'.
selection = dados_residencia['Tipo']=='Apartamento'
apartamento = dados_residencia[selection]
numApartamento=apartamento.shape[0]
numApartamento
#Selecione os imóveis classificados com tipos 'Casa', 'Casa de Condomínio' e 'Casa de Vila'
selectionHouse = ((dados_residencia['Tipo']=='Casa')|(dados_residencia['Tipo']=='Casa de Condomínio')|(dados_residencia['Tipo']=='Casa de Vila'))
casas = dados_residencia[selectionHouse]
numCasas=casas.shape[0]
numCasas
#Selecione os imóveis com área entre 60 e 100 metros quadrados, incluindo os limites.
selectionArea = ((dados_residencia['Area']>=60) & (dados_residencia['Area']>=60))
area=dados_residencia[selectionArea]
numArea=area.shape[0]
numArea
#Selecione os imóveis que tenham pelo menos 4 quartos e aluguel menor que R$ 2.000,00.
selectionEconomica = ((dados_residencia['Quartos']>=4)& (dados_residencia['Valor']<2000))
economia = dados_residencia[selectionEconomica]
numEconomicos=economia.shape[0]
numEconomicos<jupyter_output><empty_output><jupyter_text>Relatorio de Analise VTratamento de dados faltantes.<jupyter_code>import pandas as pd
path = 'drive/My Drive/DadosAlura/'

df = pd.read_csv(path+'aluguel_residencial.csv',sep=';')
df.head(6)
df.isnull()
df.info()
df.isnull().sum()
dfValorNulo=df[df['Valor'].isnull()]
dfValorNulo
dfIPTUNulo=df[df['IPTU'].isnull()]
dfIPTUNulo.head(10)
dfCondominioNulo=df[df['Condominio'].isnull()]
dfCondominioNulo.head(10)
selecao = (dados['Tipo'] == 'Apartamento') & (dados['Condominio'].isnull())
selecao.shape[0]
A = df.shape[0]
df = df[~selecao]
B = df.shape[0]
A - B
df[df['Condominio'].isnull()]
selectionCondominio = (df['Tipo'] == 'Apartamento') & (df['Condominio'].isnull())
selectionCondominio.shape[0]
df = df.fillna({'Condominio': 0, 'IPTU': 0})
df.isnull()
df.info()
df.to_csv(path+'aluguel_residencial.csv',sep=';',index=False)<jupyter_output><empty_output><jupyter_text>Tudo q foi usado no relatorio VTratamento de dados faltantesComo identificar valores nulos (missing values)O método isnull() indica se os valores são nulosO método notnull() retorna o contrário do método isnull()O método info() também é uma forma de se verificar a presença de valores faltantesComo remover valores nulos com o método dropna()Tratamento condicionalInversão de valores booleanos com ~Como substituir os missing values com o método fillna()Métodos de interpolação: ffill, bfill e mean()<jupyter_code><jupyter_output><empty_output><jupyter_text>Relatorio de Analises VI> Criação de variaveis<jupyter_code>dados = pd.read_csv(path+'aluguel_residencial.csv', sep=';')
dados.head()
dados['Valor_Bruto'] = dados['Valor'] + dados['Condominio'] + dados['IPTU']
dados.head(10)
dados['Valor_m²'] = dados['Valor'] / dados['Area']
dados.head(10)
dados['Valor_m²'] = dados['Valor_m²'].round(2)
dados.head(10)
dados['Valor_m²_Bruto'] = (dados['Valor_Bruto'] / dados['Area']).round(2)
dados.head(10)
casa = ['Casa','Casa de Condomínio', 'Casa de Vila']
dados['Tipo Agregado'] = dados['Tipo'].apply(lambda x : 'Casa' if x in casa else 'Apartamento')
dados.head(20)
dados.drop(['Valor_Bruto', 'Valor_m²_Bruto'], axis = 1, inplace = True)
dados.head(10)
dados.to_csv(path+'aluguel_residencial.csv', sep = ';', index = False)<jupyter_output><empty_output><jupyter_text>Relatorio de Analises VII> Estatistica descritiva.> Agrupamento de dados Agrupamento de dados<jupyter_code>dados = pd.read_csv(path+'aluguel_residencial.csv', sep = ';')

dados.head(10)
bairros = ['Barra da Tijuca', 'Copacabana', 'Ipanema', 'Leblon', 'Botafogo', 'Flamengo', 'Tijuca']
selecao = dados['Bairro'].isin(bairros)
dados = dados[selecao]
dados['Bairro'].drop_duplicates()
grupo_bairro = dados.groupby('Bairro')
grupo_bairro.groups
for bairro, dados in grupo_bairro:
    print(dados)
for bairro, data in grupo_bairro: 
    print('{} -> {}'.format(bairro, data.Valor.mean()))
grupo_bairro['Valor','Condominio'].mean().round(2)
grupo_bairro['Valor'].describe().round(2)<jupyter_output><empty_output><jupyter_text>Estatista Descritiva<jupyter_code>grupo_bairro['Valor'].aggregate(['min', 'max']).rename(columns = {'min': 'Mínimo', 'max': 'Máximo'})
%matplotlib inline
import matplotlib.pyplot as plt
plt.rc('figure', figsize = (20,10))
fig = grupo_bairro['Valor'].std().plot.bar(color = 'blue')
fig = grupo_bairro['Valor'].max().plot.bar(color = 'blue')
fig = grupo_bairro['Valor'].min().plot.bar(color = 'blue')<jupyter_output><empty_output><jupyter_text>Relatorio de Analises VII>Removendo Outliers<jupyter_code>dados = pd.read_csv(path+'aluguel_residencial.csv', sep = ';')

%matplotlib inline
import matplotlib.pyplot as plt
plt.rc('figure', figsize = (14,6))
dados.boxplot(['Valor'])
dados[dados['Valor']>=500000]
valor = dados['Valor']
Q1 = valor.quantile(.25) #primeiro Quartil
Q3 = valor.quantile(.75) #terceiro Quartil
IIQ = Q3 - Q1 #intervalo entre o 1º e o 3º quartil
limiteSuperior = Q3 + 1.5* IIQ
limiteInferior = Q1 - 1.5 * IIQ 

#Q1 = valor.quantile(.25)
#Q3 = valor.quantile(.75)
#IIQ = Q3 - Q1
#limite_inferior = Q1 - 1.5 * IIQ
#limite_superior = Q3 + 1.5 * IIQ
selecao = (valor >= limiteInferior) & (valor<=limiteSuperior)
dadosNew = dados[selecao]
dadosNew.boxplot(['Valor'])
dados.hist(['Valor'])
dadosNew.hist(['Valor'])
dados.boxplot(['Valor'], by = ['Tipo'])
grupo_tipo = dados.groupby('Tipo')['Valor']
Q1 =  grupo_tipo.quantile(.25)
Q3 =  grupo_tipo.quantile(.75)
IIQ = Q3 - Q1
limite_inferior = Q1 - 1.5 * IIQ
limite_superior = Q3 + 1.5 * IIQ
limite_superior['Apartamento']
for tipo in grupo_tipo.groups.keys():
    print(tipo)
for tipo in grupo_tipo.groups.keys():
    eh_tipo = dados['Tipo'] == tipo
    eh_dentro_limite = (dados['Valor'] >= limite_inferior[tipo]) & (dados['Valor'] <= limite_superior[tipo])
    selecao = eh_tipo & eh_dentro_limite
    dados[selecao]
dados_new = pd.DataFrame()
for tipo in grupo_tipo.groups.keys():
    eh_tipo = dados['Tipo'] == tipo
    eh_dentro_limite = (dados['Valor'] >= limite_inferior[tipo]) & (dados['Valor'] <= limite_superior[tipo])
    selecao = eh_tipo & eh_dentro_limite
    dados_selecao = dados[selecao]
    dados_new = pd.concat([dados_new, dados_selecao])
dados_new.boxplot(['Valor'], by = ['Tipo'])
dados_new.to_csv(path+'aluguel_residencial_sem_outliers.csv', sep = ';', index = False)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1479372582724538, 'fraction_numerical': 0.015363128491620111, 'mean_word_length': 7.916666666666667, 'pattern_counts': {'":': 0, '<': 76, '<?xml version=': 0, '>': 84, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '18', 'dir': 'jupyter-structured-clean-dedup', 'id': '95115', 'license': 'MIT', 'n_tokens_mistral': 3962, 'n_tokens_neox': 3815, 'n_words': 652, 'path': 'DS_Project2.ipynb', 'repo_name': 'DuplamenteH/Ds', 'size': '9308'}