image

Acesse bootcamps ilimitados e +650 cursos pra sempre

60
%OFF
Article image
Janaina Leite
Janaina Leite30/06/2023 20:01
Compartilhe

Ciência /Análise de dados com Python — expansão do AirAnb em NY

  • #Python

1. O problema de negócio

Depois de uma boa preparação, você prestou o processo seletivo para trabalhar na renomada empresa de aluguel de espaços, chamada AirAnb.

Após a primeira semana de recepção, você se junta ao time de Cientistas de Dados da empresa com foco em expansão da empresa, na cidade de Nova York, Estados Unidos.

Esse projeto de expansão é muito importante para o AirAnb, mas também é muito arriscado. Qualquer decisão errada por parte do CEO pode levar a empresa a ter um prejuízo enorme.

Para diminuir o risco desse projeto, o seu chefe pediu para você auxiliar o CEO da empresa, utilizando dados para responder algumas perguntas, que o ajudarão a tomar melhores decisões comerciais e de marketing.

As primeiras perguntas que você recebeu são as seguintes:

2. As perguntas do CEO

Qual o valor médio do aluguel na cidade de Nova York?
Quais os nomes das regiões que existem na cidade de Nova York?
Qual o valor do aluguel diário mais caro da cidade de Nova York?

3. Planejamento da Solução

3.1. Planejamento do Produto Final

Como vamos entregar as respostas das perguntas de negócio?

Vamos escrever em e-mail?
Vamos mandar um planilha?
Vamos enviar um gráfico ou mapa dentro de alguma ferramenta?
Vamos enviar um algoritmo de Machine Learning?

3.2 Solução escolhida

E-mail com as respostas, seria algo mais ou menos assim:

“Olá CEO, espero que esse e-mail o encontre bem.
Meu nome é Janaina, sou Cientista de Dados do time de expansão. Segue abaixo as respostas das perguntas de negócio solicitadas, referente a expansão de Nova York.
Qual o valor médio do aluguel na cidade de Nova York?
R: O valor médio do aluguel é de U$ 1.100,00
Quais os nomes das regiões que existem na cidade de Nova York?
R: Brooklin, Bronx e Manhattan
Qual o valor do aluguel diário mais caro da cidade de Nova York?
R: O valor do aluguel diária mais cara é de U$ 5.000,00.”

3.3. Planejamento do Processo

Quais são os passos para encontrar as respostas?

Coletar um conjunto de dados ( planilha de dados )
Manipular esses dados
a. Calcular a média de todos os valores de aluguel da cidade de Nova York.
b. Contar todos os nomes distintos que aparecem na coluna região.
c. Encontrar o valor máximo da coluna que contém os valores dos aluguéis.

3.4. Planejamento do Ferramenta

Quais as ferramentas que precisamos usar para encontrar as respostas?

3.4.1. Linguagem de programação

Python.

3.4.2. Ferramentas da Estatística

O cálculo da média

3.4.3. IDE ( Ambiente de Desenvolvimento Integrado )

Ferramenta de programação em Python.

4. Resolução

4.1. Planejamento do Processo

Quais são os passos para encontrar as respostas?
Coletar um conjunto de dados ( planilha de dados )
Manipular esses dados
a. Calcular a média de todos os valores de aluguel da cidade de Nova York.
b. Contar todos os nomes distintos que aparecem na coluna região.
c. Encontrar o valor máximo da coluna que contém os valores dos aluguéis.

4.2. Coleta do conjunto de dados

Para solucionar nosso problema de negíocio vamos utilizar o Kaggle.

O que é o Kaggle?
É uma plataforma para aprendizado de ciência de dados.
É também uma comunidade, a maior da internet, para assuntos relacionados com Data Science.
Hoje, contém mais de 536 mil membros ativos, com novas entradas todos os dias.
O Kaggle se destaca por ser uma comunidade, mas também por apresentar competições premiadas, o que profissionaliza um pouco as práticas no site.
Em geral, apresenta tutoriais, competições, rankings, cursos, dicas, fóruns, datasets e muito mais.
É um grande site com uma variedade de informações para quem precisa mergulhar de cabeça nesse mundo.
fonte: hashtag-treinamentos

Base de dados

Acesse aqui — New York City Airbnb Open Data

4.3 Python

4.3.1. Comando para ler uma planilha de dados

import pandas as pd
data = pd.read_csv( '/content/AB_NYC_2019.csv' )

4.3.2. Pergunta #1

Calcular a média de todos os valores de aluguel da cidade de Nova York.

4.3.2.1 Selecionar colunas

import pandas as pd
import numpy as np
# selecionar a coluna price
price = data.loc[:, 'price']

4.3.2.1 Calcular a média

# calcular o valor medio do preco
valor_medio = np.mean( price )
# mostrar os valores
print( 'O valor medio eh:' )
print( valor_medio )
Resposta: U$ 152.72

4.3.3. Pergunta #2

Contar todos os nomes distintos que aparecem na coluna região.

4.3.3.1. Selecionar colunas

import pandas as pd
import numpy as np
# selecionar a coluna região
regioes = data.loc[:, 'neighbourhood_group']

4.3.3.2. Contar valores distintos

import pandas as pd
import numpy as np
# selecionar a coluna neighbourhood_group
regioes_unicas = pd.unique( regioes )
regioes_unicas
R: 'Brooklyn', 'Manhattan', 'Queens', 'Staten Island', 'Bronx'

4.3.4 Pergunta #3

Encontrar o valor máximo da coluna que contém os valores dos aluguéis.

4.3.4.1. Selecionar colunas

import pandas as pd
import numpy as np
# selecionar a coluna price
price = data.loc[:, 'price']

4.3.4.2. Encontrar o valor máximo

import pandas as pd
import numpy as np
# selecionar a coluna região
price = np.max( price )
R: U$ 10.000

5. Produto Final

E-mail com as respostas

Lá em cima fizemos apenas um esboço do que íamos entregar como Produto Final para o CEO da AirnAnb.

Agora, vamos reescrever o e-mail com as respostas encontradas por meio da analise de dados do dataset.

“Olá CEO, espero que esse e-mail o encontre bem.
Meu nome é Janaina, sou Cientista de Dados do time de expansão.
Segue abaixo as respostas das perguntas de negócio solicitadas, referente a expansão de Nova York.
Qual o valor médio do aluguel na cidade de Nova York?
R: O valor médio do aluguel é de U$ 152.72.
Quais os nomes das regiões que existem na cidade de Nova York?
R: Brooklyn, Manhattan, Queens, Staten Island, Bronx.
Qual o valor do aluguel diário mais caro da cidade de Nova York?
R: O valor do aluguel diária mais cara é de U$ 10.000,00.

6. Novas perguntas do CEO

Baseadas nas respostas das primeiras perguntas o CEO já conseguiu entender o cenário mas agora ele precisa de mais informações e coloca novas perguntas:

  1. Quais são as categorias de imóveis que estão cadastradas dentro da base de dados da cidade de Nova York?
  2. Quantos usuários (Hosts) únicos cadastrados existem dentro da base de dados da cidade de Nova York?
  3. Como é a variação do preços dos imóveis em NY?
  4. Existem mais imóveis baratos ou caros?
  5. Qual a distribuição do número de Reviews? Existem imóveis com muitos e outro com poucos reviews?

7. Respondendo as novas perguntas do CEO

7.1. Recapitulando o problema de negócio

7.1.1 As perguntas do CEO

1. Quais são as categorias de imóveis que estão cadastradas dentro da base de dados da cidade de Nova York?
2. Quantos usuários (Hosts) únicos cadastrados existem dentro da base de dados da cidade de Nova York?
3. Como é a variação do preços dos imóveis em NY?
4. Existem mais imóveis baratos ou caros?
5. Qual a distribuição do número de Reviews? Existem imóveis com muitos e outro com poucos reviews?

8. Resolução

8.1. Planejamento do Processo

Quais são os passos para encontrar as respostas?

Contar todos os nomes distintos que aparecem na coluna “room_type”
Contar os cadastros únicos da coluna “host_id”.
Calcular o desvio padrão em torno da média de preços dos imóveis.
Desenhar um histograma para mostrar o número de apartamentos dentro da faixa do valor do aluguel.
Desenhar um histograma para mostrar o número de apartamentos dentro de uma faixa de avaliação.

8.2. Coleta do conjunto de dados

Como já mencionado vamos usar a mesma base de dados do Kaggle.

dataset:New York City Airbnb Open Data

8.2.1 Comando para ler uma planilha de dados

import pandas as pd
data = pd.read_csv( '/content/AB_NYC_2019.csv' )

8.3. Pergunta #1

Quais são as categorias de imóveis que estão cadastradas dentro da base de dados da cidade de Nova York?

8.3.1 Selecionar colunas

import pandas as pd
import numpy as np
data = pd.read_csv( '/content/AB_NYC_2019.csv' )
# selecionar o tipo de sala
room_type = data.loc[:, 'room_type']

8.3.2 Contar valores distintos

# mostrar os valores únicos
room_type_unique = np.unique( room_type )
# mostrar os valores
print( 'As categorias são:' )
print( room_type_unique )
Resposta: 'Entire home/apt', 'Private room', 'Shared room'

8.4. Pergunta #2

Quantos usuários (Hosts) únicos cadastrados existem dentro da base de dados da cidade de Nova York?

8.4.1 Selecionar colunas

import pandas as pd
import numpy as np
# selecionar a coluna host id
host_id = data.loc[:, 'host_id']

8.4.2 Contar valores distintos

import pandas as pd
import numpy as np
# selecionar a coluna neighbourhood_group
host_id_unique = np.unique( host_id )regioes_unicas
len( host_id_unique )
R: 37.457 hosts únicos

8.5. Pergunta #3

Como é a variação do preços dos imóveis em NY?

8.5.1 Selecionar colunas

import pandas as pd
import numpy as np
# selecionar a coluna price
price = data.loc[:, 'price']

8.5.2 Encontrar o valor do desvio padrão

import pandas as pd
import numpy as np
# calcular o desvio padrão
desvio_padrao = np.std( price )
desvio_padrao
R: Os preços estão disperson em U$ 240.15 em torno da média

8.6. Pergunta #4

Existem mais imóveis baratos ou caros?

8.6.1 Selecionar colunas

import pandas as pd
import numpy as np
# selecionar a coluna price e filtrar linhas
linhas = data.loc[:, 'price'] < 1250
price = data.loc[linhas, 'price']

8.6.2 Desenhar o histograma

from matplotlib import pyplot as plt
# desenhar o histograma
plt.hist( price, bins=12);
R: Existem mais de 20.000 imóveis com valor de aluguel
de até U$ 100,00

image

8.7. Pergunta #5

Qual a distribuição do número de Reviews? Existem imóveis com muitos e outro com poucos reviews?

8.7.1 Selecionar colunas

import pandas as pd
import numpy as np
# selecionar a coluna price e filtrar linhas
linhas = data.loc[:, 'number_of_reviews'] < 300
number_reviews = data.loc[linhas, 'number_of_reviews']

8.7.2 Desenhar a distribuição de avaliações

from matplotlib import pyplot as plt
# desenhar o histograma
plt.hist( price, bins=12);
R: Existem quase 30.000 imóveis com até 10 avaliações.

image

9. Produto Final

E-mail com as respostas

Olá CEO, espero que esse e-mail o encontre bem.

Meu nome é Janaina, sou Cientista de Dados do time de expansão. Segue abaixo as respostas das novas perguntas de negócio solicitadas, referente a expansão de Nova York.

1 - Quais são as categorias de imóveis que estão cadastradas dentro da base de dados da cidade de Nova York?

R: Entire home/apt, Private room, Shared room.

2 - Quantos usuários (Hosts) únicos cadastrados existem dentro da base de dados da cidade de Nova York?

R: 37.457 hosts únicos cadastrados dentro da base de dados.

3 - Como é a variação do preços dos imóveis em NY?

R: A variação média dos preços é média de U$ 152.72 com desvio padrão de U$ 240.15

4 - Existem mais imóveis baratos ou caros?

R: Existem mais de 2.000 imóveis com o valor de aluguel até U$ 100 dólares. Ou seja, existe uma concentração de imóveis nos valores baixos de aluguel que caracteriza a maioria como sendo imóveis mais baratos. Veja o histograma abaixo:

image

5 - Qual a distribuição do número de Reviews? Existem imóveis com muitos e outro com poucos reviews?

R: Existem quase 30.000 imóveis com até 10 avaliações. Ou seja, existem muitos imóveis com poucas avaliações. Veja o histograma abaixo:

image

10 . Novas perguntas do CEO — 3° rodada

O CEO gostou tanto dos insights que a gente trouxe pra ele que nos convidou para ingressar em um novo desafio.

10.1. As novas perguntas do CEO

  1. Qual é o valor do aluguel (diária) mais caro de cada região da base de dados da cidade de Nova York, apenas para os imóveis disponível para alugar?
  2. Conseguimos saber onde estão localizados os imóveis com o valor do aluguel mais caro, na cidade de Nova York, apenas para os imóveis disponível para alugar?
  3. Conseguimos saber onde estão localizados os imóveis pelo seu tipo, apenas para os imóveis disponível para alugar?

10.2. Planejamento da solução

Novamente como ja fizemos na 1° rodada de perguntas do CEO, nós vamos pensar no produto que iremos entregar.

10.2.1.1 Solução escolhida:

Um painel com gráficos.

Olá CEO, tudo bom?

Segue em anexo, um painel com os gráficos que respondem as perguntas de negócio.

1 - Qual é o valor do aluguel (diária) mais caro de cada região da base de dados da cidade de Nova York?

R: Gráfico de barras mostrando o aluguel mais caro por cada região de Nova York.

2 - Conseguimos saber onde estão localizados os imóveis com o valor do aluguel mais caro, na cidade de Nova York?

R: Desenhar um mapa com pinos indicando os imóveis mais caros por região

3 - Conseguimos saber onde estão localizados os imóveis pelo seu tipo?

R: Desenhar um mapa com pinos indicando os primeiro 50 imóveis por tipo.

10.3. Planejamento do Processo

Quais são os passos para encontrar as respostas?

  1. Encontrar o maior valor da diária de aluguel para cada região.
  2. Desenhar um mapa da cidade de Nova York e colocar os pontos dos imóveis mais caros.
  3. Desenhar um mapa da cidade de Nova York e colocar pontos com cores diferentes, baseado no tipo do imóvel.

10.4. Planejamento da solução

10.4.1 Planejamento do Produto Final

Olá CEO, tudo bom?

Segue em anexo, um painel com os gráficos que respondem as perguntas de negócio.

A1.Qual é o valor do aluguel (diária) mais caro de cada região da base de dados da cidade de Nova York?

a. Código em Python

# Importando as bibliotecas
import pandas as pd
import plotly.express as px
import folium
# Carregando o arquivo
data = pd.read_csv( '/content/AB_NYC_2019.csv' )
# Selecionando as linhas e colunas
colunas = ['price', 'neighbourhood_group']
colunas_groupby = ['neighbourhood_group']
# Criando os segmentos
data_plot = data.loc[:, colunas].groupby(colunas_groupby).max().reset_index()
# Desenhando o gráfico
px.bar( data_plot, x='neighbourhood_group', y='price' )

b. Gráfico

image

A2. Conseguimos saber onde estão localizados os imóveis com o valor do aluguel mais caro, na cidade de Nova York?

a. Código em Python

# Importando as bibliotecas
import pandas as pd
import plotly.express as px
import folium
# Carregando o conjunto de dados
data = pd.read_csv( '/content/AB_NYC_2019.csv' )
# Selecionando linhas e colunas
colunas = ['price', 'neighbourhood_group', 'latitude', 'longitude']
colunas_groupby = ['neighbourhood_group']
# Criando os segmentos
data_plot = data.loc[:, colunas].groupby(colunas_groupby).max().reset_index()
# Criando a área do mapa
f = folium.Figure( width=1024, height=768 )
# Desenhando o mapa
map = folium.Map(
location=[data_plot['latitude'].mean(),
data_plot['longitude'].mean()],
zoom_start=14,
control_scale=True
)
# Adicionando os pinos nos mapas
for index, location_info in data_plot.iterrows():
folium.Marker( [location_info['latitude'],
location_info['longitude']],
popup=location_info['neighbourhood_group'] ).add_to( map )
# Mostrando o mapa
map

b. Gráfico

image

A3. Conseguimos saber onde estão localizados os imóveis pelo seu tipo?

a. Código em Python

# Importando as bibliotecas
import pandas as pd
import plotly.express as px
import folium
# Carregando o arquivo
data = pd.read_csv( '/content/AB_NYC_2019.csv' )
# Selecionando linhas aleatoriamente e colunas
colunas = ['neighbourhood_group', 'room_type', 'latitude', 'longitude']
data_plot = data.loc[:, colunas].sample( 100 )
# Criando uma nova coluna chamada 'color'
data_plot.loc[:, 'color'] = 'NA'
# Selecionando as linhas do segmento
linhas_private_room = data_plot.loc[:, 'room_type'] == 'Private room'
linhas_entire_apt = data_plot.loc[:, 'room_type'] == 'Entire home/apt'
linhas_shared_room = data_plot.loc[:, 'room_type'] == 'Shared room'
# Colocando as cores para cada segmento
data_plot.loc[linhas_private_room, 'color'] = 'darkgreen'
data_plot.loc[linhas_entire_apt, 'color'] = 'darkred'
data_plot.loc[linhas_shared_room, 'color'] = 'purple'
# Criando a área do mapa
map = folium.Map()
# Adicionando os pins nos mapas
for index, location_info in data_plot.iterrows():
folium.Marker(
[location_info['latitude'], location_info['longitude']],
popup=location_info[['neighbourhood_group', 'room_type']],
icon=folium.Icon( color=location_info['color'] )
).add_to( map )
# Exibindo o mapa
map

b. Gráfico/Mapa

Figura 1 — Mapa geral dos tipos de imóveis.

image

Na figura acima observamos um mapa com os pins marcando os imóveis por tipos, ou seja, ‘Entire home/apt = darkred’, ‘Private Room = darkgreen’, ou ‘Shared room = purple” classificados por cores.

Figura 2 — Mapa mostrando zoom para o tipo ‘Entire home/apt’ na cor vermelho escuro.

image

Figura 3— Mapa mostrando zoom para o tipo ‘Private room’ na cor verde escuro.

image

Figura 4— Mapa mostrando zoom para o tipo ‘Shared room’ na cor roxa.

image

Mas as análises não acabam aqui, podem surgir novas perguntas tanto minha como Analsita de Dados como do CEO e ai faremos todo o processo novamente.

Compartilhe
Comentários (1)
Alex Aleluia
Alex Aleluia - 30/06/2023 21:28

Muito bom.

Eu já tinhou visto essa kaggle