<jupyter_start><jupyter_text>Projeto Ligação 911 Projeto de conclusão de fase do curso 'Python para Data Science e Machine Learning'.Ministrado pelo professor <NAME>.<jupyter_code>import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

%matplotlib inline
df = pd.read_csv('dataset/911.csv')
df.info()<jupyter_output><class 'pandas.core.frame.DataFrame'>
RangeIndex: 663522 entries, 0 to 663521
Data columns (total 9 columns):
 #   Column     Non-Null Count   Dtype  
---  ------     --------------   -----  
 0   lat        663522 non-null  float64
 1   lng        663522 non-null  float64
 2   desc       663522 non-null  object 
 3   zip        583323 non-null  float64
 4   title      663522 non-null  object 
 5   timeStamp  663522 non-null  object 
 6   twp        663229 non-null  object 
 7   addr       663522 non-null  object 
 8   e          663522 non-null  int64  
dtypes: float64(3), int64(1), object(5)
memory usage: 45.6+ MB<jupyter_text>Descrição * lat: Latitude* lng: Longitude* desc: Descrição da Chamada de Emergência* zip: CEP* title: Título* timeStamp: Hora (AAAA-MM-DD HH: MM: SS)* twp: Cidade* addr: Endereço* e: Variável Dummy (sempre 1)<jupyter_code>df.head()<jupyter_output><empty_output><jupyter_text>Perguntas básicas * Quais os tops 5 CEPs da chamada 911?<jupyter_code>df['zip'].value_counts().head()<jupyter_output><empty_output><jupyter_text>* Quais são os 5 principais municípios nas chamadas 911?<jupyter_code>df['twp'].value_counts().head()<jupyter_output><empty_output><jupyter_text>* Quantos códigos de título exclusivos existem na coluna 'title'?<jupyter_code>df['title'].nunique()<jupyter_output><empty_output><jupyter_text>Criando novos recursos * Na coluna "title" existem "Razões / Departamentos", vamos fazer a contagem de cada um.<jupyter_code>df['Reason'] = df['title'].apply(lambda x: x.split(':')[0])
df['Reason'].value_counts()<jupyter_output><empty_output><jupyter_text>* Countplot baseada nessa noda coluna<jupyter_code>sns.countplot(x='Reason',data=df, palette='Oranges')<jupyter_output><empty_output><jupyter_text>* Agora vamos começar a focar em informações de tempo. Qual é o tipo de dados dos objetos na coluna timeStamp?<jupyter_code>type(df['timeStamp'].iloc[0])<jupyter_output><empty_output><jupyter_text>* Precisamos converter essa coluna de 'str' para 'DateTime'<jupyter_code>df['timeStamp'] = pd.to_datetime(df['timeStamp'])
type(df['timeStamp'].iloc[0])<jupyter_output><empty_output><jupyter_text>* Agora vamos crias três novas colunas chamadas de 'Hour , Month e Day of Week'.<jupyter_code>df['Hour'] = df['timeStamp'].apply(lambda x: x.hour)
df['Month'] = df['timeStamp'].apply(lambda x: x.month)
df['Day of Week'] = df['timeStamp'].apply(lambda x: x.dayofweek)<jupyter_output><empty_output><jupyter_text>* Tranformando os números obtidos na função 'dayofweek' em str.<jupyter_code>dmap = {0:'Mon',1:'Tue',2:'Wed',3:'Thu',4:'Fri',5:'Sat',6:'Sun'}

df['Day of Week'] = df['Day of Week'].map(dmap)<jupyter_output><empty_output><jupyter_text>* Verificando...<jupyter_code>df['Day of Week'].value_counts()<jupyter_output><empty_output><jupyter_text>* Gráfico 'Countplot' da coluna Day of Week em relação a coluna 'Reason'<jupyter_code>sns.countplot(x='Day of Week', data=df, palette='Oranges', hue='Reason')
plt.legend(bbox_to_anchor=(1,1), loc=2, borderaxespad=0)<jupyter_output><empty_output><jupyter_text>* Mesmo gráfico para a coluna 'Month'<jupyter_code>sns.countplot(x='Month', data=df, palette='Oranges', hue='Reason')
plt.legend(bbox_to_anchor=(1,1), loc=2, borderaxespad=0)<jupyter_output><empty_output><jupyter_text>* Contagem de chamadas por mês<jupyter_code>byMonth = df.groupby('Month').count()
byMonth.head()
byMonth['zip'].plot(grid=True)<jupyter_output><empty_output><jupyter_text>* Modelo linear do número de chamadas por mês.<jupyter_code>byMonth.reset_index()
sns.lmplot(x='Month', y='twp', data=byMonth.reset_index())<jupyter_output><empty_output><jupyter_text>* Criando uma nova coluna chamda 'Date' para verificar as chamadas feitas ao decorrer dos anos.<jupyter_code>df['Date'] = df['timeStamp'].apply(lambda x: x.date())
df.groupby('Date').count()<jupyter_output><empty_output><jupyter_text>* Gráfico que mostra as chamadas em decorrer do anos.<jupyter_code>df.groupby('Date').count()['twp'].plot(grid=True)<jupyter_output><empty_output><jupyter_text>* Gráfico diferentes repesentando uma 'Reason'.<jupyter_code>df[df['Reason']=='Traffic'].groupby('Date').count()['twp'].plot(grid=True)
plt.title('Traffic')
df[df['Reason']=='Fire'].groupby('Date').count()['twp'].plot(grid=True)
plt.title('Fire')
df[df['Reason']=='EMS'].groupby('Date').count()['twp'].plot(grid=True)
plt.title('EMS')<jupyter_output><empty_output><jupyter_text>Mapa de Calor  * Vamos reestruturar os dados da coluna. Em primeiro lugar, devemos reestruturar o quadro de dados para que as colunas se tornem horas e o Índice se torne o Dia da Semana.<jupyter_code>dayHour = df.groupby(by=['Day of Week','Hour']).count()['Reason'].unstack()
dayHour.head()
plt.figure(figsize=(12,6))
sns.heatmap(dayHour, cmap='Oranges')<jupyter_output><empty_output><jupyter_text>Clustermap<jupyter_code>sns.clustermap(dayHour, cmap='Oranges')<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.15283342873497424, 'fraction_numerical': 0.024995229917954588, 'mean_word_length': 6.918429003021148, 'pattern_counts': {'":': 0, '<': 86, '<?xml version=': 0, '>': 86, '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': '21', 'dir': 'jupyter-structured-clean-dedup', 'id': '275497', 'license': 'MIT', 'n_tokens_mistral': 2121, 'n_tokens_neox': 2005, 'n_words': 396, 'path': 'Emergency - 911 Calls.ipynb', 'repo_name': 'isabellylopes/Projeto-de-Dados', 'size': '5258'}