<jupyter_start><jupyter_text>Novas perguntas de negócios1. Crie uma nova coluna chamada: “house_age”- Se o valor da coluna “date” for maior que 2014-06-1 => ‘new_house’- Se o valor da coluna “date” for menor ou igual a 2014-06-1 => ‘old_house’2. Crie uma nova coluna chamada: “dormitory_type”- Se o valor da coluna “bedrooms” for igual à 1 => ‘studio’- Se o valor da coluna “bedrooms” for igual a 2 => ‘apartament’- Se o valor da coluna “bedrooms” for maior que 2 => ‘house’3. Crie uma nova coluna chamada: “condition_type”- Se o valor da coluna “condition” for menor ou igual à 2 => ‘bad’- Se o valor da coluna “condition” for igual à 3 ou 4 => ‘regular’- Se o valor da coluna “condition” for igual à 5 => ‘good’4. Modifique o TIPO a Coluna “condition” para STRING5. Delete as colunas: “sqft_living15” e “sqft_lot15”6. Modifique o TIPO a Coluna “yr_build” para DATE7. Modifique o TIPO a Coluna “yr_renovated” para DATE8. Qual a data mais antiga de construção de um imóvel?9. Qual a data mais antiga de renovação de um imóvel?10. Quantos imóveis tem 2 andares?11. Quantos imóveis estão com a condição igual a “regular” ?12. Quantos imóveis estão com a condição igual a “bad”e possuem “vista para água” ?13. Quantos imóveis estão com a condição igual a “good” e são “new_house”?14. Qual o valor do imóvel mais caro do tipo “studio” ?15. Quantos imóveis do tipo “apartment” foram reformados em 2015 ?16. Qual o maior número de quartos que um imóvel do tipo “house” possui ?17. Quantos imóveis “new_house” foram reformados no ano de 2014?18. Selecione as colunas: “id”, “date”, “price”, “floors”, “zipcode” pelo método:- 10.1. Direto pelo nome das colunas.- 10.2. Pelos Índices.- 10.3. Pelos Índices das linhas e o nome das colunas- 10.4. Índices Booleanos19. Salve um arquivo .csv com somente as colunas do item 10 ao 17.Os dados para análise são encontrados em: https://www.kaggle.com/harlfoxem/housesalesprediction/version/1?select=kc_house_data.csv  Análise de dados<jupyter_code>import pandas as pd
data = pd.read_csv('datasets/kc_house_data.csv')
data.head()<jupyter_output><empty_output><jupyter_text>1. Crie uma nova coluna chamada: “house_age”- Se o valor da coluna “date” for maior que 2014-06-1 => ‘new_house’- Se o valor da coluna “date” for menor ou igual a 2014-06-1 => ‘old_house’<jupyter_code># A coluna date não está na forma de datetime e sim de object, então tem que transformar para datetime para conseguir colocar em ordem.
data['date'] = pd.to_datetime(data['date'])
#criação da variavel date_before para fazer a comparação das datas
date_before = datetime.datetime(2014, 6, 1)
type(date_before)
#criando uma nova coluna chamada 'house_age'
data['house_age'] = 'house_age'

#linhas em que a data é maior que 2014-06-1
maior = data['date'] > date_before

#localização na linha que é maior na coluna 'house_age' e substituição do valor para 'new_house'
data.loc[maior,'house_age'] = 'new_house'
#linhas em que a data é menor ou igual que 2014-06-1
menor = data['date'] <= date_before

#localização na linha que é menor na coluna 'house_age' e substituição do valor para 'old_house'
data.loc[menor,'house_age'] = 'old_house'
data.sort_values('date')<jupyter_output><empty_output><jupyter_text>2. Crie uma nova coluna chamada: “dormitory_type”- Se o valor da coluna “bedrooms” for igual à 1 => ‘studio’- Se o valor da coluna “bedrooms” for igual a 2 => ‘apartament’- Se o valor da coluna “bedrooms” for maior que 2 => ‘house’<jupyter_code>#vou usar a função apply, a função apply aplica uma função especificada linha por linha no DataFrame
#a função que eu vou criar vai se chamar func

#lambda <arguments> : <Return Value if condition is True> if <condition> else <Return Value if condition is False>

func = (lambda x: 'studio' if x == 1 
                 else 'apartament' if x == 2 
                 else 'house' if x > 2 
                 else 'NA')
#cria a coluna adicionando nela os valores correspondes da função apply aplicada na coluna bedrooms
data['dormitory_type'] = data['bedrooms'].apply(func)
data<jupyter_output><empty_output><jupyter_text>3. Crie uma nova coluna chamada: “condition_type”- Se o valor da coluna “condition” for menor ou igual à 2 => ‘bad’- Se o valor da coluna “condition” for igual à 3 ou 4 => ‘regular’- Se o valor da coluna “condition” for igual à 5 => ‘good’<jupyter_code>#vou usar a função apply, a função apply aplica uma função especificada linha por linha no DataFrame
#a função que eu vou criar vai se chamar func_2

#lambda <arguments> : <Return Value if condition is True> if <condition> else <Return Value if condition is False>

func_2 = ( lambda x: 'bad' if x <= 2 
          else 'regular' if (x == 3 or x == 4)
          else 'good' if x == 5 
          else 'NA')
#cria a coluna adicionando nela os valores correspondes da função apply aplicada na coluna condition
data['condition_type'] = data['condition'].apply(func_2)
data<jupyter_output><empty_output><jupyter_text>4. Modifique o TIPO a Coluna “condition” para STRING<jupyter_code>#inteiro para string

data['condition'] = data['condition'].astype(str)
data.dtypes<jupyter_output><empty_output><jupyter_text>5. Delete as colunas: “sqft_living15” e “sqft_lot15”<jupyter_code>col = ['sqft_living15', 'sqft_lot15']
data = data.drop(columns=col)<jupyter_output><empty_output><jupyter_text>6. Modifique o TIPO a Coluna “yr_built” para DATE<jupyter_code>data.dtypes
#int para datetime
data['yr_built'] = pd.to_datetime(data['yr_built'], format='%Y')
data.dtypes<jupyter_output><empty_output><jupyter_text>7. Modifique o TIPO a Coluna “yr_renovated” para DATE<jupyter_code>#no caso existem valores nulos então tem que criar uma função e usar o apply
##lambda <arguments> : <Return Value if condition is True> if <condition> else <Return Value if condition is False>

func_4 = (lambda x: pd.to_datetime('1970-01-01') if x == 0
                else pd.to_datetime(x))

#data['yr_renovated'] = data['yr_renovated'].apply(func = func_4)<jupyter_output><empty_output><jupyter_text>8. Qual a data mais antiga de construção de um imóvel?<jupyter_code>#colocando o dataframe em ordem e zerando o index
data_1 = data.sort_values('yr_built').reset_index()
data_1
e1 = data_1.loc[0,'yr_built']

print(f'O imóvel mais antigo do DataFrame é de {e1}')<jupyter_output>O imóvel mais antigo do DataFrame é de 1900-01-01 00:00:00<jupyter_text>9. Qual a data mais antiga de renovação de um imóvel?<jupyter_code>#colocando o dataframe em ordem e zerando o index
data_2 = data.sort_values('yr_renovated').reset_index()
data_2
#nota-se que existem valores nulos do dataframe então os apaguei para chegar no ano mais antigo e resetei o index
data_3 = data_2[data_2.yr_renovated != 0].reset_index()

#pegando o primeiro elemento
e9 = data_3['yr_renovated'][0]
print(f'A data mais antiga de renovação de um imóvel é {e9}.')<jupyter_output>A data mais antiga de renovação de um imóvel é 1934.<jupyter_text>10. Quantos imóveis tem 2 andares?<jupyter_code>#encontrando quais linhas tem o valor da coluna floors igual a 2
data_4 = data[data['floors'] == 2]
tam = len(data_4)
print(f'Existem {tam} imóveis com 2 andares.')<jupyter_output>Existem 8241 imóveis com 2 andares.<jupyter_text>11. Quantos imóveis estão com a condição igual a “regular” ?<jupyter_code>#encontrando quais linhas tem o valor da coluna condition_type igual a regular
data_5 = data[data['condition_type'] == 'regular']
tam2 = len(data_5)
print(f'Existem {tam2} imóveis com a condição igual a “regular.')<jupyter_output>Existem 19710 imóveis com a condição igual a “regular.<jupyter_text>12. Quantos imóveis estão com a condição igual a “bad” e possuem “vista para água” ?<jupyter_code>#encontrando quais linhas tem:
#o valor da coluna condition_type igual a bad
#o valor da coluna waterfront diferente de zero

data_6 = data[(data['condition_type'] == 'bad') & (data['waterfront'] != 0)]

tam3 = len(data_6)
print(f'Existem {tam3} imóveis que estão com a condição igual a “bad” e possuem “vista para água”.')<jupyter_output>Existem 2 imóveis que estão com a condição igual a “bad” e possuem “vista para água”.<jupyter_text>13. Quantos imóveis estão com a condição igual a “good” e são “new_house”?<jupyter_code>#encontrando quais linhas tem:
#o valor da coluna condition_type igual a good
#o valor da coluna house_age igual a new_house

data_7 = data[(data['condition_type'] == 'good') & (data['house_age'] == 'new_house')]

tam4 = len(data_7)
print(f'Existem {tam4} imóveis que estão com a condição igual a “good” e são “new_house”.')<jupyter_output>Existem 1545 imóveis que estão com a condição igual a “good” e são “new_house”.<jupyter_text>14. Qual o valor do imóvel mais caro do tipo “studio” ?<jupyter_code>#encontrando quais linhas são do tipo studio, ordenando elas em relação a coluna preço e resetando o index
data_8 = data[data['dormitory_type'] == 'studio'].sort_values('price', ascending=False).reset_index()
#selecionando o primeiro imovel da lista
e14 = data_8['price'][0]
print(f'O imóvel mais caro do tipo "studio" tem o valor de {e14:.2f}')<jupyter_output>O imóvel mais caro do tipo "studio" tem o valor de 1247000.00<jupyter_text>15. Quantos imóveis do tipo “apartment” foram reformados em 2015 ?<jupyter_code>#encontrando quais linhas tem:
#o valor da coluna dormitory_type igual a apartment
#o valor da coluna yr_renovated igual a 2015

data_9 = data[((data['yr_renovated'] == 2015) & (data['dormitory_type'] == 'apartament'))]

tam5 = len(data_9)
print(f'Existem {tam5} imóveis que são do tipo apartament e foram reformados em 2015.')<jupyter_output>Existem 0 imóveis que são do tipo apartament e foram reformados em 2015”.<jupyter_text>16. Qual o maior número de quartos que um imóvel do tipo “house” possui ?<jupyter_code>#localiza o valor maximo da coluna bedrooms que tem como dormitory_type o valor house
e16 = data.loc[data['dormitory_type'] == 'house', 'bedrooms'].max()

print(f'O maior número de quartos que um imóvel do tipo “house” possui é de {e16} quartos.')<jupyter_output>O maior número de quartos que um imóvel do tipo “house” possui é de 33 quartos.<jupyter_text>17. Quantos imóveis “new_house” foram reformados no ano de 2014?<jupyter_code>#encontrando quais linhas tem:
#o valor da coluna house_age igual a new_house
#o valor da coluna yr_renovated igual a 2014

data_10 = data[((data['yr_renovated'] == 2014) & (data['house_age'] == 'new_house'))]

tam6 = len(data_10)
print(f'Existem {tam6} imóveis que são do tipo new_house e foram reformados em 2014.')<jupyter_output>Existem 79 imóveis que são do tipo new_house e foram reformados em 2014.<jupyter_text>18. Selecione as colunas: “id”, “date”, “price”, “floors”, “zipcode” pelo método:- 10.1. Direto pelo nome das colunas.- 10.2. Pelos Índices.- 10.3. Pelos Índices das linhas e o nome das colunas- 10.4. Índices Booleanos<jupyter_code>#- 10.1. Direto pelo nome das colunas.
data[['id','date','price','floors','zipcode']]
#- 10.2. Pelos Índices.
data.iloc[:,[0,1,2,7,-6]]
#- 10.3. Pelos Índices das linhas e o nome das colunas
data.loc[:,['id','date','price','floors','zipcode']]
#- 10.4. Índices Booleanos
data.iloc[:,[True, True, True, False, False, False,
       False, True, False, False, False, False,
       False, False, False, False, True,
        False, False, False, False, False]]<jupyter_output><empty_output><jupyter_text>19. Salve um arquivo .csv com somente as colunas do item 10 ao 17.<jupyter_code>data[['house_age','dormitory_type','condition_type']].to_csv('exercicio_19.csv')<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.10639595677936563, 'fraction_numerical': 0.031195538515162078, 'mean_word_length': 5.153887399463807, 'pattern_counts': {'":': 0, '<': 85, '<?xml version=': 0, '>': 101, 'https://': 1, 'lorem ipsum': 0, 'www.': 1, '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': '20', 'dir': 'jupyter-structured-clean-dedup', 'id': '251406', 'license': 'MIT', 'n_tokens_mistral': 4466, 'n_tokens_neox': 4168, 'n_words': 1448, 'path': 'cursoDS/Parte 3 - Tratando e analisando os dados.ipynb', 'repo_name': 'laaisfmaia/Curso-Python-Zero-ao-DS-', 'size': '11476'}