<jupyter_start><jupyter_text>1.0. - SOLICITAÇÕES  PRIMEIRA RODADA DE PERGUNTAS DO CEO1. Quantas casas estão disponíveis para compra?2. Quantos atributos as casas possuem?3. Quais são os atributos das casas?4. Qual a casa mais cara ( casa com o maior valor de venda )?5. Qual a casa com o maior número de quartos?6. Qual a soma total de quartos do conjunto de dados?7. Quantas casas possuem 2 banheiros?8. Qual o preço médio de todas as casas no conjunto de dados?9. Qual o preço médio de casas com 2 banheiros?10. Qual o preço mínimo entre as casas com 3 quartos?11. Quantas casas possuem mais de 300 metros quadrados na sala de estar?12. Quantas casas tem mais de 2 andares?13. Quantas casas tem vista para o mar?14. Das casas com vista para o mar, quantas tem 3 quartos?15. Das casas com mais de 300 metros quadrados de sala de estar, quantas tem mais de 2 banheiros?  SEGUNDA RODADA DE PERGUNTAS DO CEO1. Qual a data do imóvel mais antigo no portfólio?2. Quantos imóveis possuem o número máximo de andares?3. Criar uma classificação para os imóveis, separando-os em baixo e alto padrão, de acordo com preço    - Acima de R$ 540.000 >> alto padrão    - Abaixo de R$ 540.000 >> baixo padrão4. Gostaria de um relatório ordenado pelo preço e contendo as seguintes informações:    - id do imóvel    - data que o imóvel ficou disponível para compra    - número de quartos    - tamanho total do terreno    - preço do imovel    - classificação do imóvel (alto e baixo padrão)5. Gostaria de um mapa indicando onde as casas estão localizadas geograficamente.  2.0. - PLANEJAMENTO DE SOLUÇÃO  2.1. PRODUTO FINAL ( O que vou entregar? Planilha, gráfico, modelo de ML, ... )- Email + 2 anexos:- Email:- Text: Perguntas | Respostas- Anexo:- Um relatório em .csv- A foto de um mapa em .html  2.2. FERRAMENTA ( Qual ferramenta usar? )  - Python 3.8.0  - Jupyter notebook  2.3. PROCESSO ( Como fazer? ) 1. Qual a data do imóvel mais antigo no portfólio?  - Ordenar o conjunto de dados pela menor data     2. Quantos imóveis possuem o número máximo de andares?  - Encontrar os números de andares e determinar o maior  - Contar quantos imóveis eu tenho por andar     3. Criar uma classificação para os imóveis, separando-os em baixo e alto padrão, de acordo com preço  - Acima de R$ 540.000 >> alto padrão (high_standard)    - Abaixo de R$ 540.000 >> baixo padrão (low_standard)    - Criar uma nova coluna no conjunto de dados chamados de "standard"    - Se "price" for MAIOR que 540.000, eu vou escrever "high_standard" na coluna "standard"    - Se "price" for MENOR que 540.000, eu vou escrever "low_standard" na coluna "standard"             4. Gostaria de um relatório ordenado pelo preço e contendo as seguintes informações:  - id do imóvel  - data que o imóvel ficou disponível para compra  - número de quartos  - tamanho total do terreno  - preço do imovel  - classificação do imóvel (alto e baixo padrão)    - selecionar as colunas desejadas/demandadas    - deletar as colunas não desejadas/demandadas         5. Gostaria de um mapa indicando onde as casas estão localizadas geograficamente.  - procurar uma biblioteca em python que armazene uma função que desenha mapa.  - aprender a usar a função que desenha mapas.  3.0. RESPOSTAS<jupyter_code>import pandas as pd
import numpy as np
from matplotlib import pyplot as plt

# Retirar notações científicas
pd.set_option('display.float_format', lambda x: '%.2f' % x)
# carrega um arquivo do disco rigido para a memoria
# função: Sequencia de comandos
    # recebe uma entrada:
    # devolve uma saída: ( parametros de entrada -> um resultado )

data = pd.read_csv( '/content/drive/MyDrive/repos/house_sales_prediction/data/kc_house_data.csv' )

# mostra na tela as primeiras 06 linhas
data.head()
# mostrar na tela os tipo de variaveis em cada coluna
data.dtypes
# funcao que converte de object (string ) -> date
data['date'] = pd.to_datetime( data ['date'] )
# df1.dtypes
# Como converter os tipos de variáveis

# inteiro -> float
#     data['bedrooms'] = data['bedrooms'].astype( float )

# float -> inteiro
#     data['bedrooms'] = data['bedrooms'].astype( int64 )
    
#     int32 - 32 bits para representar o tipo
#     int64 - 64 bits para representar o tipo ( lib numpy )
    
#     colocar todos os dados para um único tipo

# inteiro -> string
#     data['bedrooms'] = data['bedrooms'].astype( str )
    
# string -> inteiro
#     data['bedrooms'] = data['bedrooms'].astype( int64 )
    
# string -> data
#     data['date'] = pd.to_datetime( data ['date'] )<jupyter_output><empty_output><jupyter_text>2.1.1. - Manipulando colunas<jupyter_code># # criando novas colunas
    # data['nome_do_diego'] = "diego"
    # data['Comunidade_ds'] = 80
    # data['data_hoje'] = pd.to_datetime( '2021-04-20')

# #visualizar nome das colunas
    # data.columns
# deletando coluna do dataset
    # 1 -   data = data.drop( 'nome_do_diego', axis=1 )
            # axis = transforma ao longo das colunas
        
# deletar umas LISTA de colunas do dataset
    # 2 - cols[nome_do_diego', 'Comunidade_ds', 'data_hoje']
    #     data = data.drop( cols, axis=1 )<jupyter_output><empty_output><jupyter_text>2.1.2. - Selecionando dados<jupyter_code># SELECIONAR DIRETO PELO NOME DAS COLUNAS
# 1 - Direto pelo nome das colunas
# cols = ['price', 'id', 'date']
# data[ cols ]

# 2
# Duplo [[ ]]
# data[['price', 'id', 'date']]

# 3 - Pelos índices das colunas
# Pelos índices das linhas e colunas
    # DADOS[ Linhas, Colunas ]

# data.iloc[0:10, 0:3]
    # iloc = busca as linhas e colunas a partir do INDEX do DataSet
    
# 4 - Pelos índices das linhas e pelo nome da coluna
    # data.loc[0:10, 'price']
        # loc = busca as linhas e colunas a partir do index do DataSet
        # localize para mim pelo NOME DAS COLUNAS
        
        # cols ['price', 'id', 'date']
        # data.loc[0:10, cols ]
        
# 5 - Indices Booleanos
# Boleanos
# 1, 0
# True, False

# cols = [True, False, True, False, False, True, False, True, False, False,True, False, True, False, False, True, False, False, True, False, True]
# data.loc[0:10, cols ]

#         'id', 'date', 'price', 'bedrooms', 'bathrooms', 'sqft_living',
#         'sqft_lot', 'floors', 'waterfront', 'view', 'condition', 'grade',
#         'sqft_above', 'sqft_basement', 'yr_built', 'yr_renovated', 'zipcode',
#         'lat', 'long', 'sqft_living15', 'sqft_lot15', 'nome_do_diego',
#         'Comunidade_ds', 'data_hoje'<jupyter_output><empty_output><jupyter_text>4.0. - RESPONDENDO AS PERGUNTAS DE NEGÓCIO<jupyter_code>data.head()
# 1. Qual a data do imóvel mais antigo no portfólio?
    # Ordenar o conjunto de dados pela menor data
    
data.sort_values( 'date', ascending = True )
#2. Quantos imóveis possuem o número máximo de andares?
    # Encontrar os números de andares e determinar o maior
    # Contar quantos imóveis eu tenho por andar
    
data['floors'].unique()
data[data['floors'] == 3.5].shape
# 3. Criar uma classificação para os imóveis, separando-os em baixo e alto padrão, de acordo com preço
    # Acima de R$ 540.000 >> alto padrão (high_standard)
    # Abaixo de R$ 540.000 >> baixo padrão (low_standard)
        # - Criar uma nova coluna no conjunto de dados chamados de "standard"
            # - Se "price" for MAIOR que 540.000, eu vou escrever "high_standard" na coluna "standard"
            # - Se "price" for MENOR que 540.000, eu vou escrever "low_standard" na coluna "standard"

# Criar nova Coluna
data['level'] = 'standart'

# Selecionar coluna price
# Verifica todas as linhas acima de 540000 >>> Retorna booleano True/False
# especifica a coluna level, com o .loc >>> substitui o valor das linha por 'high_level'
data.loc[data['price'] > 540000, 'level'] = 'high_level'
data.loc[data['price'] < 540000, 'level'] = 'low_level'
data.head()
# 4 - Pelos índices das linhas e pelo nome da coluna
    # data.loc[0:10, 'price']
        # loc = busca as linhas e colunas a partir do index do DataSet
        # localize para mim pelo NOME DAS COLUNAS
        
        # cols ['price', 'id', 'date']
        # data.loc[0:10, cols ]
        
report = data[[ 'id', 'date', 'price', 'bedrooms','sqft_lot', 'level']].sort_values( 'price', ascending = False )
report.head()
# CRIANDO RELATÓRIO
# report.to_csv( 'kaggle/working/report_aula2.csv', index=False )
# 5. Gostaria de um mapa indicando onde as casas estão localizadas geograficamente.
    # procurar uma biblioteca em python que armazene uma função que desenha mapa.
    # aprender a usar a função que desenha mapas.
    
# Plotly - Biblioteca que armazena uma função que desenha mapa
import plotly.express as px

# Função: Scatter MapBox - Função que desenha mapa
    # data_mapa = data[['id', 'lat', 'long','price']]

    # mapa = px.scatter_mapbox( data_mapa, lat='lat', lon='long',
    #                           color_discrete_sequence=['fuchsia'],
    #                           hover_name='id',
    #                           hover_data=['price'],
    #                           zoom=3,
    #                           height=300 )

    # mapa.update_layout( mapbox_style='open-street-map' )
    # mapa.update_layout( height=600, margin={'r':0, 't':0, 'l':0, 'b':0} )
    # mapa.show()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.10283726492010001, 'fraction_numerical': 0.024459180345689748, 'mean_word_length': 3.2513863216266174, 'pattern_counts': {'":': 0, '<': 18, '<?xml version=': 0, '>': 43, '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': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '525477', 'license': 'MIT', 'n_tokens_mistral': 3466, 'n_tokens_neox': 3329, 'n_words': 1114, 'path': 'notebooks/c01_house_sales_prediction.ipynb', 'repo_name': 'DiegoFreitasDS/house_sales_prediction', 'size': '9199'}