Analisando os dados do Airbnb - 리우데자네이루 #5

Para o post de hoje resolvi trazer um projeto de análise de dados utilizando os dados do Airbnb - 리우데자네이루.Nesse post,quero mostrar um pouco comoéfeita uma análise de dados.Espero que goste:)
Claro que como boa carioca escolhi os dados do meu RJ rs

Se vocèainda nèo conhece o Airbnb,saiba que essa empresa sóvem ganhando coraèo dos viajantes,mas caso vocènèo conheèa trago uma breve explicaèo do que o Airbnb of erece.
Airbnbéum serviço online comunitário para as pessoas anunciarem,descobrirem e reservarrem acomodaçes e meios de hospedagem.
O Airbnb permite aos indivíduos alugar todo ou parte de sua própria casa,assim os anfitriões conseguem transformar um cômodo extra ou uma casa extra em uma graninha.Ouma plataforma de busca e reservas entre a pessoa que oferece a acomoda o e a pessoa que busca pela loca çO. 사이트.

Vamos para as análises?



Vamos começar pelo nosso clássico import de bibliotecas,aqui como Vamos fazer apenas uma análise,acaba que não temos muitas bibliotecas para importar,mas espera sóvir posts de projetos de Machine Learning para vocês verem o quão cheia essa célula vai ficar rs
!pip install missingno 

# importar os pacotes necessários
%matplotlib inline
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import missingno as msno  

# configurar as visualizações
sns.set_style('darkgrid')
sns.set_palette('Accent')
Ali em cima também fiz o!pip deuma bibliotecaque iremos utilizar para visualizar,através deum grá fico,colunascom dados faltantes do nosso 데이터 집합으로. 
O próximo passoécarregador os nossos dados para dentro de um DataFrame.
Como temos um arquivo csv,vamos utilizar o pd.csv, como mostro abaixo 읽기:
# obtendo os dados
data_path = 'http://data.insideairbnb.com/brazil/rj/rio-de-janeiro/2020-04-20/visualisations/listings.csv'

df = pd.read_csv(data_path)
df.head()
Além disso,como a funão.head()conseguimos mostras as 5 primeiras linhas do nosso DataFrame.Caso vocèqueira mostrar maisque 5 linhas,basta colocar a quantidade de linhas dentro dos par ènteses:) O 기본 da funè O é mostra apenas 5 linhas.

Algo que gosto de acrescentar nos projetoséo Dicionário de Variáveis.Ele nos diz o queécada variável.Issoétimo para conhecermos melhor os nossos dados e com certeza vai nos ajudar nas análises.

Análise Exploratória de Dados


Nesse projeto eu fiz uma série de perguntas e fui respondendo com os códigos.Naépoca,eu estava iniciando os estudos e fazer isso me ajudou bastante a entender um pouco como uma análise deve ser feito,quais respostas eu devo trazer ao projeto.

Quantos atributos/variáveis/colunas e quantas entradas/linhas possui o nosso dataframe?


print('DIMENSÕES DO DATAFRAME:')
print(f'Linhas:  {df.shape[0]}')
print(f'Colunas:  {df.shape[1]}')
O.형상은 하나의 차원 데이터 상자를 대표한다.(linhas,colunas)
Para acessar o primeiro elemento dessa tupla eu utilizei o[0]e Para acessar o segundo elemento utilizei o[1]junto do.모양

Quais sãos tipos de dados(dtypes)das nossas variáveis?


df.dtypes
df.dtypes.value_counts()
주인님데이터 형식 Returnauma série com o tipos de dado de cada coluna.

Se voc êquiser saber quantas colunas de cada tipo de dados esse dataframe possui e n ão quer ficar contando na m ão, o mé todo를 이용합니다.value_counts()

Nosso 데이터 세트 possui valores ausentes?


df.isna().any()
df.isna().sum() 

# visualização das entradas de cada coluna
msno.bar (df, figsize = (10,5));

#eliminando a colunaneighbourhood_group
df.drop('neighbourhood_group', axis=1, inplace=True)
Para“perguntar”ao dataframe se existe alguma coluna com valor NaN,utilizamos o.isna().임의().Ele iráreturnar True ou False para cada coluna.

E para saber quantos valores ausentes cada coluna possui,utilizamos.isna().총 ()

Lembra da biblioteca missingno que importamos?Então,ela nos traz mais uma forma de visualizer os dados faltantes de cada coluna.

Comovimosanteriormente,nosso 데이터 집합possui35.870entradas.E analisando os valores ausentes no comando front notamas que a variável neighborhood_group não tem dados.Sendo assim,ela não acrescentaráem nada na nossa análise,com o.drop ()eliminei essa variáveldo 데이터 프레임워크.

Variáveis 조직선충


Vocèsabe o queéum histograma?
O Historograma,tambéméconhecido como distribuiçO de frequeuências,éa representaçO gráfica em colunas ou em barras de um concento de dados.Se vocêquer entender melhor sobre,clique aqui.
# análise visual das variáveis númericas através de um gráfico de frequências (histogramas)
df.hist(bins=15, figsize=(15,10));

Notamos que hándicios da presença de outliers nos nossos dados,como vemos nas colunas price,minimum_nights e calculated_host_listing_count.Um dos indícioséo fato de não conseguirmos visualizar uma distribuião porque possivelmente os outliers,se presents,estão distorcento a representação gráfica.

감지 예외 값


# visualizando um resumo estatístico das variáveis númericas
df[['price', 'minimum_nights', 'number_of_reviews',      'reviews_per_month', 'calculated_host_listings_count', 'availability_365']].describe().round(2)
Esse método traz muitas informaçãoes relevants para a análise exploratória.Como média das colunas,o valor mínimo e máximo,seus quartis e também o valor do desvio padrão.Muitas vezes conseguimos visualizar Possiveis outliers por aqui.

Pontos principais da an álise feita através do método 설명:
  • O valor mínimo da variável priceé0
  • O valor máximo da variável priceé131.727
  • O valor máximo da variável minimum_nightsé1.123
  • O valor máximo da variável calculated\u host\u listinings\u counté200
  • 상자선 그림das variáveisque possivelmente apresentam 이상값


    Em estatística descriptiva,diagrama de caixa,diagrama de extremos e quartis,box plot ou box plotéuma ferramenta gráfica para representar a variaão de dados observados de uma variável numérica por meio de quartis.Wikipédia

    상자선 그림 da variável minimum_nights


    plt.figure(figsize=(15,3))
    sns.boxplot(data=df, x='minimum_nights')
    plt.title('Boxplot minimum_nights')
    plt.show() 
    
    # ver quantidade de valores acima de 30 dias para minimum_nights
    print(f'[minimun_nights]\nValores acima de 30:{len(df[df.minimum_nights > 30])} entradas')
    
    print('Porcentagem: {:.4f}%'.format(len(df[df.minimum_nights > 30])/ len(df.minimum_nights)* 100))
    

    Temos 224 entradas com minimum_nights acima de 30, oque는 0.62%의dos 벽판에 대응합니다.

    상자 그림


    plt.figure(figsize=(15,3))
    sns.boxplot(data=df, x='price')
    plt.title('Boxplot price')
    plt.show() 
    
    # ver quantidade de valores acima de 1500 para price
    print(f'[price]\nValores acima de 1500: {len(df[df.price > 1500])} entradas')
    print('Porcentagem: {:.4f}%'.format(len(df[df.price > 1500])/ len(df.price) * 100)
    

    Temos 3.360 entradascom Price acima de 1.500, oque는 9.36%의dos 벽판에 대응한다.

    조직 절편 스캐너 렌즈 이상값


    deposis de identificar os outliers,vamos plotar novatement o histograma para visualizearmos dados limpos.
    # histogramas com valores de minimum_nights menor que 30 e price menor que 1500
    df_clean = df.copy()
    df_clean = df_clean.query('minimum_nights < 30 & price < 1500')
    df_clean.hist(bins=15, figsize=(15,10));
    

    Correlaçao existent entre as variáveis


    Correlaçãoéa relaço estatística entre duas variáveis.coeficientes de correlaço são métodos estatísticos para se medir as relaçes entre variáveis.
    Calculamos o coeficiente de correlaço com a funço.corr()
    Irei apresentar essa correlaço através de uma matriz e de uma forma mais visual através de um heatmap(mapa de calor).
    corr = df_clean[['price', 'minimum_nights', 'number_of_reviews', 'reviews_per_month',
    'calculated_host_listings_count', 'availability_365']].corr() 
    
    #plotando a matriz de correlação
    sns.set_context("notebook", font_scale=1.0, rc={"lines.linewidth": 2.5})
    plt.figure(figsize=(10,5))
    
    #criando uma máscara para ver apenas os valores de correlação uma vez
    mask = np.zeros_like(corr)
    mask[np.triu_indices_from(mask, 1)] = True
    a = sns.heatmap(corr, mask=mask, annot=True, fmt='.2f')
    rotx = a.set_xticklabels(a.get_xticklabels(), rotation=90)
    roty = a.set_yticklabels(a.get_yticklabels(), rotation=30)
    

    알루가도?


    # a quantidade de cada tipo de imóvel disponível
    df_clean['room_type'].value_counts() 
    
    # porcentagem de cada tipo de imóvel disponível
    df_clean['room_type'].value_counts() / len(df_clean)
    


    Qualéa localidade mais cara?


    # média de preço do top 10 localidades mais caras
    df_clean.groupby('neighbourhood')['price'].mean().sort_values(ascending=False)[:10] 
    
    # contagem de imóveis por localidade
    df_clean['neighbourhood'].value_counts()
    

    관찰: Como podemos ver existem bairroscommais imóveis alugados, oque pode influenciar diretamente na média de pre ços por localidade.

    Plotando os imóveis pela 위도 경도


    df_clean.plot(kind='scatter', x='longitude', y='latitude',
    
    alpha=0.4, c=df_clean['price'], s=8, cmap=plt.get_cmap('jet'),
    
    figsize=(12,8));
    

    결론:

  • Aqui foi feita uma análise surface sobre os dados disponíveis no arquivo citado anteriormente.Para uma análise mais completa recomendo que seja utilizado o dataset que contém mais variáveis/atributos.
  • Conseguimos identificar valores ausentes e outliers,fazer seu tratamento,plotamos alguns gráficos para análise e e no final Conseguimos responder algumas perguntas.
  • Link do projeto no GitHub:https://bit.ly/3fHgAzX
  • Link do projeto no Google Colab:https://bit.ly/3hQ18Da
  • 콘타토스:

  • [LinkedIn]:
  • [GitHub]:https://github.com/beatrizmaiads
  • [Instagram]:
  • [발전 목표]:
  • [중]: https://medium.com/@beatrizmaiads
  • [이메일]: [email protected]
  • 좋은 웹페이지 즐겨찾기