Skip to content

Instantly share code, notes, and snippets.

@WittmannF
Last active June 1, 2020 02:19
Show Gist options
  • Save WittmannF/367ced99488d59049cfa6019e480b941 to your computer and use it in GitHub Desktop.
Save WittmannF/367ced99488d59049cfa6019e480b941 to your computer and use it in GitHub Desktop.
BI-wp-familia.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "BI-wp-familia.ipynb",
"provenance": [],
"collapsed_sections": [],
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/WittmannF/367ced99488d59049cfa6019e480b941/bi-wp-familia.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "nsypOT_6o1-S",
"colab_type": "text"
},
"source": [
"# Análise de Dados das Mensagens de Bom Dia do WhatsApp da Família\n",
"> **OBS:** Antes de executar o código, certifique-se de baixar a base de dados de conversa do grupo que deseja analizar e salvar no Google Drive em uma pasta chamada `familia-grupo-whatsapp`.\n",
"\n",
"Como um bom cientista de dados decidi entreter o grupo de minha família com informações sobre a movimentação no grupo. Em especial, decidi focar nos bom dias, ação praticamente religiosa tomada diariamente por muitos dos membros. Neste post estarei descrevendo passo a passo como estarei fazendo esta análise e pode servir como tutorial para quem quiser replicar para o grupo de sua família. Aliás estou escrevendo este post em paralelo à realização da análise, portanto, ainda não sei quais serão os resultados. E para deixar claro: minha intenção aqui não é desincentivar tal pratica. Afinal, a mesma é um sinal de um laço presente e contiamente reforçado entre os familiares. Por hora, meu plano de ação é:\n",
"- Baixar o log de dados de conversa do grupo\n",
"- Usando Python, extrair a partir do log de conversas e criar uma base de dados com as seguintes colunas: Data, Hora, Quem deu bom dia\n",
"\n",
"A partir dessa base de dados quero extrair algumas informações, talvez usando pivots do google sheets ou o pacote pandas do Python, como por exemplo:\n",
"- Número total de bom dias\n",
"- Média do horário que os bom dias são dados\n",
"- Os madrugadores da família (quem dá bom dia mais cedo em média)\n",
"- Os tardões da família (quem dá bom dia mais tarde em média)\n",
"- Os top 10 bom dias mais cedos já dados no grupo\n",
"- Os top 10 bom dias mais tardes já dados\n",
"- Quem deu mais bom dias no grupo\n",
"- **ATUALIZAÇÃO:** Anonimizei os contatos para evitar encrencas com os familiares por tornar público os dorminhocos 😅\n",
"\n",
"E por aí vai. Por simplificação, estarei frequentemente me referindo à sigla BD para bom dia. Sem mais delongas, vamos começar.\n",
"\n",
"## Baixando o log de conversas do grupo\n",
"Esta parte é bem simples, basta ir no menu do grupo > mais > exportar chat. A base de dados (juntamente com outros arquivos) estará salva em um arquivo .txt.\n",
"\n",
"Em seguida salvei o log em uma pasta do Google Drive pela qual estarei acessando aqui. Primeiramente vou montar o Google Drive:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "0PChTVT2rJ-y",
"colab_type": "code",
"outputId": "6ad25059-9cb6-4c64-dd25-de95201d5fb6",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 104
}
},
"source": [
"# Montar o Google Drive\n",
"!pip install easycolab\n",
"import easycolab as ec\n",
"ec.mount()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Requirement already satisfied: easycolab in /usr/local/lib/python3.6/dist-packages (0.1b29)\n",
"Drive already mounted at /content/gdrive; to attempt to forcibly remount, call drive.mount(\"/content/gdrive\", force_remount=True).\n",
"Opening directory /content/gdrive/My Drive/\n",
"Done!\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "gh6e0Az0Hw2m",
"colab_type": "text"
},
"source": [
"Agora vou acessar a pasta que salvei as mensagens e dar uma olhada no arquivo:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "cogJzi6FHdNj",
"colab_type": "code",
"outputId": "61ba39ce-a3e9-4121-b65c-b0101182af78",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"cd familia-grupo-whatsapp"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"/content/gdrive/My Drive/familia-grupo-whatsapp\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "KmS7U2OEUrAg",
"colab_type": "code",
"colab": {}
},
"source": [
"FILENAME = 'WhatsApp Chat with Família Wittmann & CIA.txt'\n",
"with open(FILENAME) as f:\n",
" txt = ''.join(f.readlines())"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "A7mDeM3J9B1v",
"colab_type": "text"
},
"source": [
"Vamos dar uma olhada nos últimos 200 caracteres do arquivo (anonimizei os nomes):"
]
},
{
"cell_type": "code",
"metadata": {
"id": "ZZ7rE1cJ7nE9",
"colab_type": "code",
"outputId": "c3859fe3-5743-4cf3-a7b6-32fb6d934ca9",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 118
}
},
"source": [
"import re\n",
"print(re.sub(\"- (.*):\", \"xxxx\", txt[-200:]))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"xxxx Bom dia\n",
"10/27/19, 8:50 AM xxxx Bom dia feliz domingo\n",
"10/27/19, 8:52 AM xxxx Bom dia\n",
"10/27/19, 10:25 AM xxxx Bom dia\n",
"10/27/19, 10:28 AM xxxx Bom dia\n",
"\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "TY1Z3XEQ9Glq",
"colab_type": "text"
},
"source": [
"Agora vamos extrair todos os bom dias utilizando regex:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "ARjUW_8IUrv6",
"colab_type": "code",
"colab": {}
},
"source": [
"import re\n",
"PATTERN = '(.*), (.*) - (.*): [bB]om dia'\n",
"\n",
"db = re.findall(PATTERN, txt)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "KQZVLbqa9NYC",
"colab_type": "text"
},
"source": [
"Uma lista de tuplas contendo data, horário e contato de quem deu bom dia foi criado. O padrão regex para extração destas informações foi criado utilizando o [regexr.com](https://regexr.com/). De forma a fazer algumas análises, vamos converter esta lista para um DataFrame do Pandas. "
]
},
{
"cell_type": "code",
"metadata": {
"id": "PosnSygN9qxv",
"colab_type": "code",
"colab": {}
},
"source": [
"import pandas as pd\n",
"\n",
"df = pd.DataFrame(db, columns=['Data', 'Hora', 'Deu BD'])"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "ggbfVC8h9xWj",
"colab_type": "text"
},
"source": [
"Em seguida, vou criar baixar um gerador aleatório de nomes para anonimizar os contatos:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "i_4DjfPu9NQ1",
"colab_type": "code",
"outputId": "b152e284-f023-4aa5-e876-cfb421671843",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 50
}
},
"source": [
"!pip install names\n",
"import names\n",
"nome_aleatorio=names.get_full_name()\n",
"print(f\"Gerando nome aleatório: {nome_aleatorio}\")"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Requirement already satisfied: names in /usr/local/lib/python3.6/dist-packages (0.3.0)\n",
"Gerando nome aleatório: Paul Shelby\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "q2mdOOtF9Sdg",
"colab_type": "code",
"colab": {}
},
"source": [
"contatos = df['Deu BD'].unique()\n",
"\n",
"contatos_anonimizados = {}\n",
"for c in contatos:\n",
" contatos_anonimizados[c]=names.get_full_name()"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "q4woqyIz-dpQ",
"colab_type": "text"
},
"source": [
"Por exemplo, vamos ver para qual nome o meu pai foi anonimizado:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "slmVoTxZ-hW5",
"colab_type": "code",
"outputId": "b3f44e47-eb16-465d-ab18-5bb5dd2a58df",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"contatos_anonimizados['Pai']"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'Frederick Elio'"
]
},
"metadata": {
"tags": []
},
"execution_count": 9
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "p3egS1Eg2Ofb",
"colab_type": "text"
},
"source": [
"Infelizmente, o gênero do nome acabará não sendo preservado. É o melhor que temos para o momento. Por fim, vou aplicar a função aos contatos:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "yn9rviNvVDD8",
"colab_type": "code",
"outputId": "e7432bff-ca41-48d7-e31a-0ff86a56773c",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 195
}
},
"source": [
"df['Deu BD'] = df['Deu BD'].apply(lambda x: contatos_anonimizados[x])\n",
"df.head()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Data</th>\n",
" <th>Hora</th>\n",
" <th>Deu BD</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>9/1/16</td>\n",
" <td>6:38 AM</td>\n",
" <td>Byron Gibson</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>9/1/16</td>\n",
" <td>6:48 AM</td>\n",
" <td>Lucila Daniels</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>9/1/16</td>\n",
" <td>6:51 AM</td>\n",
" <td>Roy Dejong</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>9/1/16</td>\n",
" <td>7:01 AM</td>\n",
" <td>Maria Toth</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>9/1/16</td>\n",
" <td>7:05 AM</td>\n",
" <td>Ronald Ramsey</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Data Hora Deu BD\n",
"0 9/1/16 6:38 AM Byron Gibson\n",
"1 9/1/16 6:48 AM Lucila Daniels\n",
"2 9/1/16 6:51 AM Roy Dejong\n",
"3 9/1/16 7:01 AM Maria Toth\n",
"4 9/1/16 7:05 AM Ronald Ramsey"
]
},
"metadata": {
"tags": []
},
"execution_count": 10
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "QtLcSK6x9pXx",
"colab_type": "text"
},
"source": [
"Vamos agora para algumas análises, primeiramente algumas estatísticas iniciais:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "W8cEtf3uY_Rm",
"colab_type": "code",
"outputId": "dc2dc308-1cc1-4a8f-e830-3f31119f65f9",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 166
}
},
"source": [
"df.describe()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Data</th>\n",
" <th>Hora</th>\n",
" <th>Deu BD</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>10350</td>\n",
" <td>10350</td>\n",
" <td>10350</td>\n",
" </tr>\n",
" <tr>\n",
" <th>unique</th>\n",
" <td>1129</td>\n",
" <td>538</td>\n",
" <td>66</td>\n",
" </tr>\n",
" <tr>\n",
" <th>top</th>\n",
" <td>12/26/16</td>\n",
" <td>6:55 AM</td>\n",
" <td>Donya Waddill</td>\n",
" </tr>\n",
" <tr>\n",
" <th>freq</th>\n",
" <td>18</td>\n",
" <td>89</td>\n",
" <td>993</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Data Hora Deu BD\n",
"count 10350 10350 10350\n",
"unique 1129 538 66\n",
"top 12/26/16 6:55 AM Donya Waddill\n",
"freq 18 89 993"
]
},
"metadata": {
"tags": []
},
"execution_count": 11
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "vilH8IEv9tnK",
"colab_type": "text"
},
"source": [
"O número de bom dias dados foi 10mil. Nesta base estão contidos os últimos 3 anos (mais precisamente 1129 dias, como podemos conferir no elemento **unique** da coluna **Data**). O número de pessoas que deram BDs é 66. Vamos agora ver quem deu mais bom dia na família:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "4J0TS0MqZ9sq",
"colab_type": "code",
"outputId": "40556eb9-dec0-43ea-c6e7-416b92481bb0",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 202
}
},
"source": [
"df['Deu BD'].value_counts().head(10)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Donya Waddill 993\n",
"Ladonna Duvall 912\n",
"Roy Dejong 891\n",
"Lucila Daniels 856\n",
"Frederick Elio 770\n",
"Vicki Main 695\n",
"Sammy Ludgate 526\n",
"Maria Toth 525\n",
"Oscar Miller 440\n",
"Kathleen Sanders 362\n",
"Name: Deu BD, dtype: int64"
]
},
"metadata": {
"tags": []
},
"execution_count": 12
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "kp5t4MvEEPyM",
"colab_type": "text"
},
"source": [
"Tio Waddill é o campeão com 993 BDs. Em segundo lugar vem o primo Duvall com 912 BDs. Vamos plotar em um gráfico estes resultados:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "BmUknw7W4g4f",
"colab_type": "code",
"outputId": "a4f357be-048b-44ce-82db-7a463dc84b23",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 360
}
},
"source": [
"df['Deu BD'].value_counts()[:10].plot.bar()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f0c57adf630>"
]
},
"metadata": {
"tags": []
},
"execution_count": 13
},
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAFGCAYAAACGxE8/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3deZjkVXn28e/NILvsE2JYHCSIUSNK\nRkRRIxKNCAgGVIgGQlBMohHFaPDVK7gkRlyCSyIGRQQXFAUDIkIQRRQDMuDINi4TlE3QQREVFAHv\n949zarq6p7tHprtOFfW7P9fVV1f9qmrOMzPdT506y3Nkm4iI6Ia1hh1ARES0k6QfEdEhSfoRER2S\npB8R0SFJ+hERHbL2sAOYzZZbbulFixYNO4yIiAeUyy+//DbbC6d7bKST/qJFi1iyZMmww4iIeECR\ndP1Mj2V4JyKiQ5L0IyI6JEk/IqJDkvQjIjpktUlf0ocl/VjS1X3XNpd0vqTv1e+b1euS9F5JyyVd\nKWmXvtccWp//PUmHDuavExERs/ldevofAZ415drRwAW2dwQuqPcB9gJ2rF9HAMdDeZMAjgGeAOwK\nHNN7o4iIiHZWm/RtXwT8dMrl/YCT6+2Tgf37rp/i4hJgU0kPAf4cON/2T23fDpzPqm8kERExYGs6\npr+V7Vvq7VuBrertrYEb+553U7020/VVSDpC0hJJS1asWLGG4UVExHTmPJHrUpB/3ory2z7B9mLb\nixcunHZDWURErKE13ZH7I0kPsX1LHb75cb1+M7Bt3/O2qdduBp425fqFa9j2JIuO/vycXv+Dt+09\nH2FERDwgrGlP/yygtwLnUODMvuuH1FU8uwF31GGg84BnStqsTuA+s16LiIiGVtvTl3QqpZe+paSb\nKKtw3gacJulw4Hrg+fXp5wDPBpYDdwGHAdj+qaS3AJfV573Z9tTJ4YiIGLDVJn3bB8/w0J7TPNfA\ny2b4cz4MfPh+RRcREfMqO3IjIjokST8iokOS9CMiOiRJPyKiQ5L0IyI6JEk/IqJDkvQjIjokST8i\nokOS9CMiOiRJPyKiQ5L0IyI6JEk/IqJD1rSefvSZa01/SF3/iGgjPf2IiA5J0o+I6JAk/YiIDknS\nj4jokEzkjpEcEh8Rq5OefkREhyTpR0R0SJJ+RESHJOlHRHRIkn5ERIck6UdEdEiWbMa8Sh2iiNGW\nnn5ERIck6UdEdEiSfkREhyTpR0R0SJJ+RESHJOlHRHRIkn5ERIck6UdEdMickr6kV0m6RtLVkk6V\ntJ6k7SVdKmm5pE9JWqc+d916f3l9fNF8/AUiIuJ3t8ZJX9LWwCuAxbYfDSwADgKOBY6z/YfA7cDh\n9SWHA7fX68fV50VERENzHd5ZG1hf0trABsAtwNOBz9THTwb2r7f3q/epj+8pSXNsPyIi7oc1Tvq2\nbwbeCdxASfZ3AJcDP7N9b33aTcDW9fbWwI31tffW528x9c+VdISkJZKWrFixYk3Di4iIacxleGcz\nSu99e+APgA2BZ801INsn2F5se/HChQvn+sdFRESfuQzv/BnwfdsrbN8DnAHsDmxah3sAtgFurrdv\nBrYFqI9vAvxkDu1HRMT9NJekfwOwm6QN6tj8nsC1wJeBA+tzDgXOrLfPqvepj3/JtufQfkRE3E9z\nGdO/lDIhewVwVf2zTgD+CThK0nLKmP2J9SUnAlvU60cBR88h7oiIWANzOkTF9jHAMVMuXwfsOs1z\nfw08by7tRUTE3OTkrBhLcz3BK6d3xbhKGYaIiA5J0o+I6JAk/YiIDknSj4jokCT9iIgOSdKPiOiQ\nJP2IiA5J0o+I6JAk/YiIDknSj4jokCT9iIgOSdKPiOiQJP2IiA5J0o+I6JAk/YiIDkk9/YgBmWtN\nf0hd/5h/6elHRHRIkn5ERIck6UdEdEiSfkREhyTpR0R0SJJ+RESHJOlHRHRIkn5ERIck6UdEdEiS\nfkREhyTpR0R0SJJ+RESHJOlHRHRIkn5ERIck6UdEdEiSfkREh8wp6UvaVNJnJH1b0jJJT5S0uaTz\nJX2vft+sPleS3itpuaQrJe0yP3+FiIj4Xc21p/8e4FzbjwB2BpYBRwMX2N4RuKDeB9gL2LF+HQEc\nP8e2IyLiflrjpC9pE+CpwIkAtn9j+2fAfsDJ9WknA/vX2/sBp7i4BNhU0kPWOPKIiLjf5tLT3x5Y\nAZwk6ZuSPiRpQ2Ar27fU59wKbFVvbw3c2Pf6m+q1SSQdIWmJpCUrVqyYQ3gRETHVXJL+2sAuwPG2\nHwfcycRQDgC2Dfj+/KG2T7C92PbihQsXziG8iIiYai5J/ybgJtuX1vufobwJ/Kg3bFO//7g+fjOw\nbd/rt6nXIiKikTVO+rZvBW6UtFO9tCdwLXAWcGi9dihwZr19FnBIXcWzG3BH3zBQREQ0sPYcX/8P\nwMclrQNcBxxGeSM5TdLhwPXA8+tzzwGeDSwH7qrPjYiIhuaU9G0vBRZP89Ce0zzXwMvm0l5ERMxN\nduRGRHRIkn5ERIck6UdEdEiSfkREhyTpR0R0SJJ+RESHJOlHRHRIkn5ERIck6UdEdMhcyzBExIhb\ndPTn5/T6H7xt76HHMF9xRHr6ERGdkqQfEdEhSfoRER2SpB8R0SFJ+hERHZKkHxHRIUn6EREdkqQf\nEdEhSfoRER2SpB8R0SFJ+hERHZKkHxHRIUn6EREdkqQfEdEhSfoRER2SpB8R0SFJ+hERHZKTsyKi\nM0bhFLFhS08/IqJDkvQjIjokST8iokOS9CMiOmTOSV/SAknflHR2vb+9pEslLZf0KUnr1Ovr1vvL\n6+OL5tp2RETcP/PR0z8SWNZ3/1jgONt/CNwOHF6vHw7cXq8fV58XERENzSnpS9oG2Bv4UL0v4OnA\nZ+pTTgb2r7f3q/epj+9Znx8REY3Mtaf/buC1wG/r/S2An9m+t96/Cdi63t4auBGgPn5Hff4kko6Q\ntETSkhUrVswxvIiI6LfGSV/SPsCPbV8+j/Fg+wTbi20vXrhw4Xz+0RERnTeXHbm7A8+R9GxgPWBj\n4D3AppLWrr35bYCb6/NvBrYFbpK0NrAJ8JM5tB8REffTGvf0bb/O9ja2FwEHAV+y/ULgy8CB9WmH\nAmfW22fV+9THv2Tba9p+RETcf4NYp/9PwFGSllPG7E+s108EtqjXjwKOHkDbERExi3kpuGb7QuDC\nevs6YNdpnvNr4Hnz0V5ERKyZ7MiNiOiQJP2IiA5JPf2IiIbmWtMf5lbXPz39iIgOSdKPiOiQJP2I\niA5J0o+I6JAk/YiIDknSj4jokCT9iIgOSdKPiOiQJP2IiA5J0o+I6JAk/YiIDknSj4jokCT9iIgO\nSdKPiOiQJP2IiA5J0o+I6JAk/YiIDknSj4jokCT9iIgOSdKPiOiQJP2IiA5J0o+I6JAk/YiIDknS\nj4jokCT9iIgOSdKPiOiQJP2IiA5J0o+I6JAk/YiIDknSj4jokDVO+pK2lfRlSddKukbSkfX65pLO\nl/S9+n2zel2S3itpuaQrJe0yX3+JiIj43cylp38v8GrbjwR2A14m6ZHA0cAFtncELqj3AfYCdqxf\nRwDHz6HtiIhYA2uc9G3fYvuKevsXwDJga2A/4OT6tJOB/evt/YBTXFwCbCrpIWsceURE3G/zMqYv\naRHwOOBSYCvbt9SHbgW2qre3Bm7se9lN9drUP+sISUskLVmxYsV8hBcREdWck76kjYDTgVfa/nn/\nY7YN+P78ebZPsL3Y9uKFCxfONbyIiOgzp6Qv6UGUhP9x22fUyz/qDdvU7z+u128Gtu17+Tb1WkRE\nNDKX1TsCTgSW2f73vofOAg6ttw8Fzuy7fkhdxbMbcEffMFBERDSw9hxeuzvwV8BVkpbWa/8PeBtw\nmqTDgeuB59fHzgGeDSwH7gIOm0PbERGxBtY46dv+GqAZHt5zmucbeNmathcREXOXHbkRER2SpB8R\n0SFJ+hERHZKkHxHRIUn6EREdkqQfEdEhSfoRER2SpB8R0SFJ+hERHZKkHxHRIUn6EREdkqQfEdEh\nSfoRER2SpB8R0SFJ+hERHZKkHxHRIUn6EREdkqQfEdEhSfoRER2SpB8R0SFJ+hERHZKkHxHRIUn6\nEREdkqQfEdEhSfoRER2SpB8R0SFJ+hERHZKkHxHRIUn6EREdkqQfEdEhSfoRER2SpB8R0SFJ+hER\nHdI86Ut6lqTvSFou6ejW7UdEdFnTpC9pAfCfwF7AI4GDJT2yZQwREV3Wuqe/K7Dc9nW2fwN8Etiv\ncQwREZ0l2+0akw4EnmX7xfX+XwFPsP3yvuccARxR7+4EfGeOzW4J3DbHP2M+jEIcoxADjEYciWHC\nKMQxCjHAaMQxHzE81PbC6R5Ye45/8LyzfQJwwnz9eZKW2F48X3/eAzmOUYhhVOJIDKMVxyjEMCpx\nDDqG1sM7NwPb9t3fpl6LiIgGWif9y4AdJW0vaR3gIOCsxjFERHRW0+Ed2/dKejlwHrAA+LDtawbc\n7LwNFc3RKMQxCjHAaMSRGCaMQhyjEAOMRhwDjaHpRG5ERAxXduRGRHRIkn5ERIck6UdTkjaT9Jhh\nxxEhaS1Jzx92HK2NzZi+pM8BM/5lbD+nYTgjQdJR01y+A7jc9tKGcVwIPIeycOBy4MfAxbani2+Q\ncWwFPL7e/YbtH7dsv8awANiKvkUUtm9oHMNWwFuBP7C9Vy2F8kTbJzaOY1dgEZP/LT7ROIZRWJe/\nO7DU9p2SXgTsArzH9vUDaW+Mkv6fzva47a80iuMXTP/moxKGN24RR43lE8Bi4HP10j7AlZRftE/b\nfnujOL5p+3GSXgxsa/sYSVfabtbjrz26dwAXUv4vngK8xvZnGsbwD8AxwI+A39bLbvnvUOP4AnAS\n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\nAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Ceo_O--R0Cqi",
"colab_type": "text"
},
"source": [
"Para ficar mais fácil tirar informações referentes aos horários dos BDs, vamos adicionar uma coluna com o horário convertido para um número fracionário (por exemplo 6:30AM tornaria-se 6.5). Precisarei adicionar algumas condicionais para corretamente converter 12:30AM (meia noite e meia) para 0.5 e 12:30 PM (meio dia e meia) para 12.5:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "vMJvQkSYK3f1",
"colab_type": "code",
"colab": {}
},
"source": [
"def convert_para_frac(horario):\n",
" hora = int(re.findall(\"(.*):\", horario)[0])\n",
" minuto = float(re.findall(\":(.*) \", horario)[0])\n",
" minuto_frac = minuto/60\n",
" if \"AM\" in horario:\n",
" if hora==12:\n",
" return minuto_frac\n",
" else:\n",
" return hora+minuto_frac\n",
" else:\n",
" if hora==12:\n",
" return hora+minuto_frac\n",
" else:\n",
" return hora+minuto_frac+12"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "v57ae3U0O0Ok",
"colab_type": "text"
},
"source": [
"Vamos testar a conversão de alguns horários:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "_q9c9fiUK30a",
"colab_type": "code",
"outputId": "c5c074be-14e3-40e8-e0de-0ce57b687d78",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 84
}
},
"source": [
"lista_de_horarios=['12:30 AM', '12:30 PM', '6:45 AM', '2:15 PM']\n",
"\n",
"for h in lista_de_horarios:\n",
" print(f'{h} foi convertido para {convert_para_frac(h)}')"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"12:30 AM foi convertido para 0.5\n",
"12:30 PM foi convertido para 12.5\n",
"6:45 AM foi convertido para 6.75\n",
"2:15 PM foi convertido para 14.25\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Q3h2VYokyV_t",
"colab_type": "text"
},
"source": [
"Vamos agora adicionar uma nova coluna com o horário fracionado."
]
},
{
"cell_type": "code",
"metadata": {
"id": "pPx-5rJbaoz0",
"colab_type": "code",
"colab": {}
},
"source": [
"df['Hora Frac'] = df['Hora'].apply(convert_para_frac)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "-U8AIgOj1Gou",
"colab_type": "code",
"outputId": "6f32b5d8-5bc8-46ed-bf76-9c927f61485f",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 195
}
},
"source": [
"df.head()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Data</th>\n",
" <th>Hora</th>\n",
" <th>Deu BD</th>\n",
" <th>Hora Frac</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>9/1/16</td>\n",
" <td>6:38 AM</td>\n",
" <td>Byron Gibson</td>\n",
" <td>6.633333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>9/1/16</td>\n",
" <td>6:48 AM</td>\n",
" <td>Lucila Daniels</td>\n",
" <td>6.800000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>9/1/16</td>\n",
" <td>6:51 AM</td>\n",
" <td>Roy Dejong</td>\n",
" <td>6.850000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>9/1/16</td>\n",
" <td>7:01 AM</td>\n",
" <td>Maria Toth</td>\n",
" <td>7.016667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>9/1/16</td>\n",
" <td>7:05 AM</td>\n",
" <td>Ronald Ramsey</td>\n",
" <td>7.083333</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Data Hora Deu BD Hora Frac\n",
"0 9/1/16 6:38 AM Byron Gibson 6.633333\n",
"1 9/1/16 6:48 AM Lucila Daniels 6.800000\n",
"2 9/1/16 6:51 AM Roy Dejong 6.850000\n",
"3 9/1/16 7:01 AM Maria Toth 7.016667\n",
"4 9/1/16 7:05 AM Ronald Ramsey 7.083333"
]
},
"metadata": {
"tags": []
},
"execution_count": 17
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "m3220vH-yeVp",
"colab_type": "text"
},
"source": [
"Vou também criar uma função para converter horários fracionados para normal. Será útil posteriormente:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "ppczK4axykZa",
"colab_type": "code",
"outputId": "fb6f730e-da45-4597-92f4-953f8bd1f584",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 84
}
},
"source": [
"def frac_para_normal(horario):\n",
" hora = int(horario)\n",
" minuto = int((horario-hora)*60)\n",
" return f'{hora}:{minuto}'\n",
"\n",
"horarios_fracionados=[0.5, 12.62, 7.76, 14.9]\n",
"\n",
"for h in horarios_fracionados:\n",
" print(f'{h} foi convertido para {frac_para_normal(h)}')"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"0.5 foi convertido para 0:30\n",
"12.62 foi convertido para 12:37\n",
"7.76 foi convertido para 7:45\n",
"14.9 foi convertido para 14:54\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "MX1JPoav5hIw",
"colab_type": "text"
},
"source": [
"## Análise dos horários\n",
"Vamos para algumas análises utilizando os horários. Primeiramente os recordes de quem deu bom dia mais cedo e mais tarde:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "zoMw5h2G5fL-",
"colab_type": "code",
"outputId": "9e5cf4e3-cc06-404e-f0f7-fde5efd2697f",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 343
}
},
"source": [
"df.sort_values('Hora Frac').head(10)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Data</th>\n",
" <th>Hora</th>\n",
" <th>Deu BD</th>\n",
" <th>Hora Frac</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>177</th>\n",
" <td>9/18/16</td>\n",
" <td>1:01 AM</td>\n",
" <td>Daniel Tucker</td>\n",
" <td>1.016667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1067</th>\n",
" <td>12/11/16</td>\n",
" <td>1:25 AM</td>\n",
" <td>Daniel Tucker</td>\n",
" <td>1.416667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1068</th>\n",
" <td>12/11/16</td>\n",
" <td>1:29 AM</td>\n",
" <td>Derick Markowitz</td>\n",
" <td>1.483333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4806</th>\n",
" <td>12/24/17</td>\n",
" <td>1:33 AM</td>\n",
" <td>Kathleen Sanders</td>\n",
" <td>1.550000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1069</th>\n",
" <td>12/11/16</td>\n",
" <td>1:56 AM</td>\n",
" <td>Michael Maillet</td>\n",
" <td>1.933333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1673</th>\n",
" <td>2/10/17</td>\n",
" <td>1:57 AM</td>\n",
" <td>Mary Birge</td>\n",
" <td>1.950000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1070</th>\n",
" <td>12/11/16</td>\n",
" <td>1:57 AM</td>\n",
" <td>Oscar Miller</td>\n",
" <td>1.950000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9752</th>\n",
" <td>8/11/19</td>\n",
" <td>1:59 AM</td>\n",
" <td>Donya Waddill</td>\n",
" <td>1.983333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1286</th>\n",
" <td>1/1/17</td>\n",
" <td>3:21 AM</td>\n",
" <td>Kathleen Sanders</td>\n",
" <td>3.350000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1287</th>\n",
" <td>1/1/17</td>\n",
" <td>3:22 AM</td>\n",
" <td>Raul Medina</td>\n",
" <td>3.366667</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Data Hora Deu BD Hora Frac\n",
"177 9/18/16 1:01 AM Daniel Tucker 1.016667\n",
"1067 12/11/16 1:25 AM Daniel Tucker 1.416667\n",
"1068 12/11/16 1:29 AM Derick Markowitz 1.483333\n",
"4806 12/24/17 1:33 AM Kathleen Sanders 1.550000\n",
"1069 12/11/16 1:56 AM Michael Maillet 1.933333\n",
"1673 2/10/17 1:57 AM Mary Birge 1.950000\n",
"1070 12/11/16 1:57 AM Oscar Miller 1.950000\n",
"9752 8/11/19 1:59 AM Donya Waddill 1.983333\n",
"1286 1/1/17 3:21 AM Kathleen Sanders 3.350000\n",
"1287 1/1/17 3:22 AM Raul Medina 3.366667"
]
},
"metadata": {
"tags": []
},
"execution_count": 19
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "VqhphVmqmK7c",
"colab_type": "text"
},
"source": [
"O campeão deu bom dia 1 da manhã! E os top 10 deram bom dias antes das 3 e meia da manhã. Vamos ver agora quem deu BD mais tarde:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "Qyrk1Aca6tXJ",
"colab_type": "code",
"outputId": "e24d5ec7-83cb-44fa-d0a8-a7a25985f744",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 343
}
},
"source": [
"df.sort_values('Hora Frac', ascending=False).head(10)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Data</th>\n",
" <th>Hora</th>\n",
" <th>Deu BD</th>\n",
" <th>Hora Frac</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>176</th>\n",
" <td>9/17/16</td>\n",
" <td>9:35 PM</td>\n",
" <td>Barbara Mestad</td>\n",
" <td>21.583333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5939</th>\n",
" <td>4/29/18</td>\n",
" <td>9:34 PM</td>\n",
" <td>Roy Dejong</td>\n",
" <td>21.566667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4331</th>\n",
" <td>10/30/17</td>\n",
" <td>8:28 PM</td>\n",
" <td>Lucila Daniels</td>\n",
" <td>20.466667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2698</th>\n",
" <td>5/23/17</td>\n",
" <td>7:34 PM</td>\n",
" <td>Lucila Daniels</td>\n",
" <td>19.566667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1702</th>\n",
" <td>2/12/17</td>\n",
" <td>5:43 PM</td>\n",
" <td>Ronald Young</td>\n",
" <td>17.716667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1186</th>\n",
" <td>12/23/16</td>\n",
" <td>5:39 PM</td>\n",
" <td>Cesar Stokes</td>\n",
" <td>17.650000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1370</th>\n",
" <td>1/9/17</td>\n",
" <td>5:26 PM</td>\n",
" <td>Ladonna Duvall</td>\n",
" <td>17.433333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>660</th>\n",
" <td>10/29/16</td>\n",
" <td>5:23 PM</td>\n",
" <td>Sammy Ludgate</td>\n",
" <td>17.383333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2836</th>\n",
" <td>6/4/17</td>\n",
" <td>5:00 PM</td>\n",
" <td>Lucila Daniels</td>\n",
" <td>17.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2131</th>\n",
" <td>3/26/17</td>\n",
" <td>4:16 PM</td>\n",
" <td>Sammy Ludgate</td>\n",
" <td>16.266667</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Data Hora Deu BD Hora Frac\n",
"176 9/17/16 9:35 PM Barbara Mestad 21.583333\n",
"5939 4/29/18 9:34 PM Roy Dejong 21.566667\n",
"4331 10/30/17 8:28 PM Lucila Daniels 20.466667\n",
"2698 5/23/17 7:34 PM Lucila Daniels 19.566667\n",
"1702 2/12/17 5:43 PM Ronald Young 17.716667\n",
"1186 12/23/16 5:39 PM Cesar Stokes 17.650000\n",
"1370 1/9/17 5:26 PM Ladonna Duvall 17.433333\n",
"660 10/29/16 5:23 PM Sammy Ludgate 17.383333\n",
"2836 6/4/17 5:00 PM Lucila Daniels 17.000000\n",
"2131 3/26/17 4:16 PM Sammy Ludgate 16.266667"
]
},
"metadata": {
"tags": []
},
"execution_count": 20
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "eeu5ReAWAUA9",
"colab_type": "text"
},
"source": [
"O campeão deu bom dia as 9 e 35 da noite! E os top 10 deram bom dias após as 4 da tarde! Antes tarde do que nunca, não é mesmo gente? Vamos agora ver a média dos BDs:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "W7N86PEkIukL",
"colab_type": "code",
"outputId": "452fa583-6929-4fc9-9669-4a6848b2e92d",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"media_bomdia=df['Hora Frac'].mean();media_bomdia"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"7.8886151368759805"
]
},
"metadata": {
"tags": []
},
"execution_count": 21
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "q1w0Fchu3Zov",
"colab_type": "text"
},
"source": [
"E também a distribuição dos bom dias:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "1zjABHZZn1OV",
"colab_type": "code",
"outputId": "1bf2de7a-ae19-4ba1-9958-b2d992dd1d75",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 282
}
},
"source": [
"df['Hora Frac'].hist(bins=100)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f0c5665aa58>"
]
},
"metadata": {
"tags": []
},
"execution_count": 22
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "3doMXvjy3h9Y",
"colab_type": "text"
},
"source": [
"Por fim o desvio padrão:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "X85nGlGD3hQ_",
"colab_type": "code",
"outputId": "71de5403-404f-416a-9e48-c7fc2898a818",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"std_bomdia=df['Hora Frac'].std();std_bomdia"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"1.3861465059788622"
]
},
"metadata": {
"tags": []
},
"execution_count": 23
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "9EMxkNFG3q6m",
"colab_type": "text"
},
"source": [
"Portanto, 95% dos BDs estão entre:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "hAsfwjHr3uR8",
"colab_type": "code",
"outputId": "54916020-7be1-44a9-c1c1-4036d9f1165d",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 50
}
},
"source": [
"print(media_bomdia-2*std_bomdia)\n",
"print(media_bomdia+2*std_bomdia)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"5.1163221249182556\n",
"10.660908148833705\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "JiSRpcN33_0A",
"colab_type": "text"
},
"source": [
"### Madrugadores da família\n",
"Aqueles que em média deram bom dia mais cedo:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "7A71ccV5sSz5",
"colab_type": "code",
"outputId": "47e7dd7a-8bde-41f6-d45d-789c727a7d8e",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 373
}
},
"source": [
"df.groupby('Deu BD').mean().sort_values('Hora Frac').head(10)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Hora Frac</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Deu BD</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Lisa Zecca</th>\n",
" <td>5.458333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Lisa Johnson</th>\n",
" <td>5.850000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Christie Wells</th>\n",
" <td>6.066667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Byron Gibson</th>\n",
" <td>6.356978</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Donya Waddill</th>\n",
" <td>6.731403</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Larry Andrade</th>\n",
" <td>6.994444</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Carol Butler</th>\n",
" <td>7.007292</td>\n",
" </tr>\n",
" <tr>\n",
" <th>David Vegetabile</th>\n",
" <td>7.091667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mary Birge</th>\n",
" <td>7.112667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Lucila Daniels</th>\n",
" <td>7.361332</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Hora Frac\n",
"Deu BD \n",
"Lisa Zecca 5.458333\n",
"Lisa Johnson 5.850000\n",
"Christie Wells 6.066667\n",
"Byron Gibson 6.356978\n",
"Donya Waddill 6.731403\n",
"Larry Andrade 6.994444\n",
"Carol Butler 7.007292\n",
"David Vegetabile 7.091667\n",
"Mary Birge 7.112667\n",
"Lucila Daniels 7.361332"
]
},
"metadata": {
"tags": []
},
"execution_count": 25
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "fgw5cTrb4G4W",
"colab_type": "text"
},
"source": [
"### Tardões da família\n",
"Aqueles que em média deram bom dia mais tarde:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "17ogb3jBtgFC",
"colab_type": "code",
"outputId": "2069d31b-b584-4494-aa96-9cf299949b35",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 373
}
},
"source": [
"df.groupby('Deu BD').mean().sort_values('Hora Frac', ascending=False).head(10)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Hora Frac</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Deu BD</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Cesar Stokes</th>\n",
" <td>12.858333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Tony Mcardell</th>\n",
" <td>11.616667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Gary Cottrell</th>\n",
" <td>11.383333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Betty Gaddis</th>\n",
" <td>11.122222</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Alicia Satterthwaite</th>\n",
" <td>10.608333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Amy Bambeck</th>\n",
" <td>10.562821</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ronald Young</th>\n",
" <td>10.076905</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Genevieve Deberry</th>\n",
" <td>9.933333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mary Lashbrook</th>\n",
" <td>9.822222</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Raymond Hernandez</th>\n",
" <td>9.466667</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Hora Frac\n",
"Deu BD \n",
"Cesar Stokes 12.858333\n",
"Tony Mcardell 11.616667\n",
"Gary Cottrell 11.383333\n",
"Betty Gaddis 11.122222\n",
"Alicia Satterthwaite 10.608333\n",
"Amy Bambeck 10.562821\n",
"Ronald Young 10.076905\n",
"Genevieve Deberry 9.933333\n",
"Mary Lashbrook 9.822222\n",
"Raymond Hernandez 9.466667"
]
},
"metadata": {
"tags": []
},
"execution_count": 26
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "NxqJZfjq4L-H",
"colab_type": "text"
},
"source": [
"No entanto, alguns deram bom dia poucas vezes e sendo assim não há significância estatística. Por exemplo, o primeiro colocado somente deu bom dia duas vezes:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "8En1n84Dt-tH",
"colab_type": "code",
"outputId": "ccdb8a56-55de-4ba6-d072-64de60076fb9",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 47
}
},
"source": [
"df[df['Deu BD']=='Stormy Cahoon']"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Data</th>\n",
" <th>Hora</th>\n",
" <th>Deu BD</th>\n",
" <th>Hora Frac</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [Data, Hora, Deu BD, Hora Frac]\n",
"Index: []"
]
},
"metadata": {
"tags": []
},
"execution_count": 27
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "lM6ipt85wc4o",
"colab_type": "text"
},
"source": [
"Portanto, para ter uma significância estatística, vamos selecionar apenas aqueles que deram bom dia pelo menos 10 vezes:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "IH3ksEV1wA_k",
"colab_type": "code",
"colab": {}
},
"source": [
"bomdiadores=df['Deu BD'].value_counts().index[df['Deu BD'].value_counts().values>10]"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "LjhKu9x64qOK",
"colab_type": "text"
},
"source": [
"### Madrugadores da Família com Significância Estatística\n",
"Aqueles que em média deram bom dia mais cedo e pelo menos 10 vezes:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "ryOETLQKxRfF",
"colab_type": "code",
"outputId": "75d858fc-cbad-4f28-f756-86c00a0c77c7",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 373
}
},
"source": [
"df[df['Deu BD'].isin(bomdiadores)].groupby('Deu BD').mean().sort_values('Hora Frac').head(10)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Hora Frac</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Deu BD</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Byron Gibson</th>\n",
" <td>6.356978</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Donya Waddill</th>\n",
" <td>6.731403</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Carol Butler</th>\n",
" <td>7.007292</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mary Birge</th>\n",
" <td>7.112667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Lucila Daniels</th>\n",
" <td>7.361332</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Henry Frasier</th>\n",
" <td>7.372024</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Frederick Elio</th>\n",
" <td>7.448701</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Vicki Main</th>\n",
" <td>7.620264</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Barbara Mestad</th>\n",
" <td>7.642702</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Raul Medina</th>\n",
" <td>7.680792</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Hora Frac\n",
"Deu BD \n",
"Byron Gibson 6.356978\n",
"Donya Waddill 6.731403\n",
"Carol Butler 7.007292\n",
"Mary Birge 7.112667\n",
"Lucila Daniels 7.361332\n",
"Henry Frasier 7.372024\n",
"Frederick Elio 7.448701\n",
"Vicki Main 7.620264\n",
"Barbara Mestad 7.642702\n",
"Raul Medina 7.680792"
]
},
"metadata": {
"tags": []
},
"execution_count": 29
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "4vPhU2iV_ouC",
"colab_type": "code",
"outputId": "7b8b45ad-abdc-4fef-d0de-6d7eac5705fe",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 368
}
},
"source": [
"df[df['Deu BD'].isin(bomdiadores)].groupby('Deu BD').mean().sort_values('Hora Frac').head(10).plot.bar()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f0c565036a0>"
]
},
"metadata": {
"tags": []
},
"execution_count": 30
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "1pJqLrCN45o0",
"colab_type": "text"
},
"source": [
"### Tardões da Família com Significância Estatística\n",
"Aqueles que em média deram bom dia mais tarde e pelo menos 10 vezes:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "L2kLGu3TznRO",
"colab_type": "code",
"outputId": "bf99dd1f-f1a2-4316-c499-44bf5c79e277",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 373
}
},
"source": [
"df[df['Deu BD'].isin(bomdiadores)].groupby('Deu BD').mean().sort_values('Hora Frac', ascending=False).head(10)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Hora Frac</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Deu BD</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Amy Bambeck</th>\n",
" <td>10.562821</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ronald Young</th>\n",
" <td>10.076905</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Charles Boham</th>\n",
" <td>9.236797</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Margaret Large</th>\n",
" <td>9.082609</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Elizabeth Arnold</th>\n",
" <td>9.071171</td>\n",
" </tr>\n",
" <tr>\n",
" <th>William Griffin</th>\n",
" <td>8.977778</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Stefani Mcgray</th>\n",
" <td>8.964286</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Michele Herron</th>\n",
" <td>8.925505</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Johnnie Nickell</th>\n",
" <td>8.913095</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Joanna Woods</th>\n",
" <td>8.894042</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Hora Frac\n",
"Deu BD \n",
"Amy Bambeck 10.562821\n",
"Ronald Young 10.076905\n",
"Charles Boham 9.236797\n",
"Margaret Large 9.082609\n",
"Elizabeth Arnold 9.071171\n",
"William Griffin 8.977778\n",
"Stefani Mcgray 8.964286\n",
"Michele Herron 8.925505\n",
"Johnnie Nickell 8.913095\n",
"Joanna Woods 8.894042"
]
},
"metadata": {
"tags": []
},
"execution_count": 31
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "0C9cOF35CN2r",
"colab_type": "code",
"outputId": "7dc65b0e-4320-44cb-e390-36f59c6753b2",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 368
}
},
"source": [
"df[df['Deu BD'].isin(bomdiadores)].groupby('Deu BD').mean().sort_values('Hora Frac', ascending=False).head(10).plot.bar()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f0c56524dd8>"
]
},
"metadata": {
"tags": []
},
"execution_count": 32
},
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAFOCAYAAACfaUbiAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3dd5idVbn+8e+TBEhCkxIRCRhApEgn\niARQivjTI+KRA0KO0g6KjWKN2A5YjkepIqAYkCIiqIAiHEGKojTBARIITRAiRhFCgIDS4f79sdbO\n7JnsmUkye693v8n9ua65MrvMrCczez+z3lWeFZIwM7P6GVF1AGZmtmicwM3MasoJ3MysppzAzcxq\nygnczKymnMDNzGpqVMnGVl11VU2YMKFkk2ZmtXfLLbc8Jmlc//uLJvAJEybQ09NTskkzs9qLiL+0\nut9DKGZmNeUEbmZWU07gZmY1VXQM3MwWLy+++CKzZs3iueeeqzqUxcLo0aMZP348Sy211AI93wnc\nzBbZrFmzWH755ZkwYQIRUXU4tSaJOXPmMGvWLNZee+0F+hoPoZjZInvuuedYZZVVnLzbICJYZZVV\nFupqxgnczIbFybt9FvZn6QRuZrW23HLL9bl91llnccghh7S9nZkzZzJmzBg233zzeR8vvPBC29tZ\nGF01Bj7hiP8b9veY+c13tSESM1sU7XgPNyvxfn7ppZcYNWrBUuG6667LtGnT2vK92sE9cDNbbM2c\nOZOdd96ZTTfdlF122YWHHnoIgAMOOICPfOQjbLPNNkyZMoWbb76Zbbfdli222IJJkyZx7733LnAb\nRx11FPvuuy/bbbcd++67LzNnzmSHHXZgyy23ZMstt+SGG26Y99xvfetbbLLJJmy22WYcccQRw/7/\ndVUP3MxsYT377LNsvvnm824//vjj7L777gAceuih7L///uy///6cccYZHHbYYfziF78A0gqaG264\ngZEjR/LUU09x7bXXMmrUKK666iq+8IUvcOGFF87X1p///Od5bW233XaccsopANx1111cd911jBkz\nhmeeeYYrr7yS0aNHc9999zF58mR6enq47LLLuPjii7npppsYO3Ysjz/++LD/707gZlZrY8aM6TOs\ncdZZZ82ruXTjjTdy0UUXAbDvvvsyZcqUec/ba6+9GDlyJABz585l//3357777iMiePHFF1u2NdAQ\n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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "iIkioCTS4_Nv",
"colab_type": "text"
},
"source": [
"Aqui vale salientar que há uma diferença de fuso horário de uma hora portanto alguns não necessariamente são mais tardes. "
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "MhUnGLXkAP9Z",
"colab_type": "text"
},
"source": [
"### Dia com mais bom dias\n",
"Os dias mais movimentados:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "ndKwxFAJARxt",
"colab_type": "code",
"outputId": "a1f79e37-11b5-4ea3-bf5e-ff69ae0bb111",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 373
}
},
"source": [
"df.groupby('Data').count().sort_values('Deu BD', ascending=False).head(10)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Hora</th>\n",
" <th>Deu BD</th>\n",
" <th>Hora Frac</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Data</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>12/26/16</th>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5/7/17</th>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10/10/16</th>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5/29/17</th>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12/15/17</th>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3/13/17</th>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7/24/17</th>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12/31/16</th>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4/15/18</th>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5/27/17</th>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" <td>16</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Hora Deu BD Hora Frac\n",
"Data \n",
"12/26/16 18 18 18\n",
"5/7/17 18 18 18\n",
"10/10/16 17 17 17\n",
"5/29/17 17 17 17\n",
"12/15/17 17 17 17\n",
"3/13/17 17 17 17\n",
"7/24/17 17 17 17\n",
"12/31/16 16 16 16\n",
"4/15/18 16 16 16\n",
"5/27/17 16 16 16"
]
},
"metadata": {
"tags": []
},
"execution_count": 33
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "qV2sY_W6B2gT",
"colab_type": "text"
},
"source": [
"### Exportando a base de dados"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "H2v2BR902o5Y",
"colab_type": "text"
},
"source": [
"Por fim, vamos exportar esta base de dados para CSV. Assim você também poderá fazer análises usando o Excel ou Google Sheets:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "r_37RJ7M0RPB",
"colab_type": "code",
"colab": {}
},
"source": [
"df.to_csv('whatsapp-familia-bomdia.csv')"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "GuMVJjTD2_Gn",
"colab_type": "text"
},
"source": [
"Como o Google Drive está montado, o arquivo estará salvo na mesma pasta que o arquivo txt importado anteriormente. "
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment