Skip to content

Instantly share code, notes, and snippets.

@WittmannF
Created January 10, 2020 20:02
Show Gist options
  • Save WittmannF/736857c6a953258373a3aab501a6f7a9 to your computer and use it in GitHub Desktop.
Save WittmannF/736857c6a953258373a3aab501a6f7a9 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/736857c6a953258373a3aab501a6f7a9/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",
"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": "fd605cf0-8252-446f-e082-e73772e56689",
"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": 153,
"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": "189f735d-d643-456a-a134-93efe8d63b19",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"cd familia-grupo-whatsapp"
],
"execution_count": 154,
"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": "b7aedd3e-8ef9-467e-a3b1-048bc9aa01d0",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 118
}
},
"source": [
"import re\n",
"print(re.sub(\"- (.*):\", \"xxxx\", txt[-200:]))"
],
"execution_count": 156,
"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",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 50
},
"outputId": "69b241d6-0e62-41bc-85e1-8b87e1dd3550"
},
"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": 159,
"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 Smith\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",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "0a519c2c-0ee3-4b07-bb9d-ff5992b3a0ee"
},
"source": [
"contatos_anonimizados['Pai']"
],
"execution_count": 161,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'Charles Hudkins'"
]
},
"metadata": {
"tags": []
},
"execution_count": 161
}
]
},
{
"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": "355745cb-325a-48f9-cbc3-4d4fbb2535c9",
"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": 162,
"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>Jon Sloan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>9/1/16</td>\n",
" <td>6:48 AM</td>\n",
" <td>Everett Brooks</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>9/1/16</td>\n",
" <td>6:51 AM</td>\n",
" <td>Ana Gerald</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>9/1/16</td>\n",
" <td>7:01 AM</td>\n",
" <td>Angela Frink</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>9/1/16</td>\n",
" <td>7:05 AM</td>\n",
" <td>Alice Duvall</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Data Hora Deu BD\n",
"0 9/1/16 6:38 AM Jon Sloan\n",
"1 9/1/16 6:48 AM Everett Brooks\n",
"2 9/1/16 6:51 AM Ana Gerald\n",
"3 9/1/16 7:01 AM Angela Frink\n",
"4 9/1/16 7:05 AM Alice Duvall"
]
},
"metadata": {
"tags": []
},
"execution_count": 162
}
]
},
{
"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": "cd6ae9b1-e4d3-4aad-da53-620539ca60bf",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 166
}
},
"source": [
"df.describe()"
],
"execution_count": 163,
"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>5/7/17</td>\n",
" <td>6:55 AM</td>\n",
" <td>Mildred Johnson</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 5/7/17 6:55 AM Mildred Johnson\n",
"freq 18 89 993"
]
},
"metadata": {
"tags": []
},
"execution_count": 163
}
]
},
{
"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": "c29ebf9f-6a0c-4b04-ca03-50debda7eacd",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 202
}
},
"source": [
"df['Deu BD'].value_counts().head(10)"
],
"execution_count": 164,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Mildred Johnson 993\n",
"Mildred Cosgrove 912\n",
"Ana Gerald 891\n",
"Everett Brooks 856\n",
"Charles Hudkins 770\n",
"Grady Kolling 695\n",
"Jason Dyer 526\n",
"Angela Frink 525\n",
"Carol Patrick 440\n",
"Geoffrey Smith 362\n",
"Name: Deu BD, dtype: int64"
]
},
"metadata": {
"tags": []
},
"execution_count": 164
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "kp5t4MvEEPyM",
"colab_type": "text"
},
"source": [
"Tio Johnson é o campeão com 993 BDs. Em segundo lugar vem o primo Cosgrove com 912 BDs. Vamos plotar em um gráfico estes resultados:"
]
},
{
"cell_type": "code",
"metadata": {
"id": "BmUknw7W4g4f",
"colab_type": "code",
"outputId": "8097b6b5-d80c-40a4-a80c-d32326c7bab9",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 359
}
},
"source": [
"df['Deu BD'].value_counts()[:10].plot.bar()"
],
"execution_count": 165,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fb7d72e8ba8>"
]
},
"metadata": {
"tags": []
},
"execution_count": 165
},
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAFFCAYAAAAAUD2RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3de9ztY53/8dcbOZaQneTQNpKmDKWt\ndJh+UzqQoimRjCSlZjooHegwHTQTlUbSTKUwGB1UKkmEyDBD9kYOqbHTASN2ymFSCe/fH9e17LVv\n696bfd/rWqv1fT8fj/txr+93rfu+Pnvf9/1Z3+91+FyyTUREdMMKow4gIiLaSdKPiOiQJP2IiA5J\n0o+I6JAk/YiIDllp1AEszbrrruu5c+eOOoyIiD8rCxYs+LXtOYOeG+ukP3fuXObPnz/qMCIi/qxI\n+sV0z6V7JyKiQ5L0IyI6JEk/IqJDkvQjIjpkmUlf0tGSbpJ0Rd+5dSSdIenq+nntel6SPilpoaTL\nJG3d9zV71ddfLWmv4fxzIiJiae7Plf6/A9tPOXcgcJbtzYCz6jHADsBm9WNf4NNQ3iSA9wNPAZ4M\nvL/3RhEREe0sM+nbPhf4zZTTOwPH1sfHAi/uO3+ciwuAtSStDzwfOMP2b2z/FjiD+76RRETEkC1v\nn/56tm+oj38FrFcfbwBc2/e66+q56c7fh6R9Jc2XNH/RokXLGV5ERAwy44Fcl4L8s1aU3/aRtufZ\nnjdnzsAFZRERsZyWd0XujZLWt31D7b65qZ6/Htio73Ub1nPXA38z5fw5y9n2EuYe+O0Zff3PD9lx\nNsKIiPizsLxX+icDvRk4ewHf7Dv/yjqLZ1vg1toNdDrwPElr1wHc59VzERHR0DKv9CV9kXKVvq6k\n6yizcA4BTpS0D/ALYNf68lOBFwALgTuAvQFs/0bSh4CL6usOsj11cDgiIoZsmUnf9u7TPLXdgNca\neMM03+do4OgHFF1ERMyqrMiNiOiQJP2IiA5J0o+I6JAk/YiIDknSj4jokCT9iIgOSdKPiOiQJP2I\niA5J0o+I6JAk/YiIDknSj4jokCT9iIgOWd56+tFnpjX9IXX9I6KNXOlHRHRIkn5ERIck6UdEdEiS\nfkREh2Qgd4Jkk/iIWJZc6UdEdEiSfkREhyTpR0R0SJJ+RESHJOlHRHRIkn5ERIdkymbMqtQhihhv\nudKPiOiQJP2IiA5J0o+I6JAk/YiIDknSj4jokCT9iIgOSdKPiOiQJP2IiA6ZUdKX9FZJV0q6QtIX\nJa0qaRNJF0paKOnLklaur12lHi+sz8+djX9ARETcf8ud9CVtALwZmGd7C2BF4OXAR4DDbD8a+C2w\nT/2SfYDf1vOH1ddFRERDM+3eWQlYTdJKwOrADcCzga/W548FXlwf71yPqc9vJ0kzbD8iIh6A5U76\ntq8HDgV+SUn2twILgFts31Vfdh2wQX28AXBt/dq76usfNvX7StpX0nxJ8xctWrS84UVExAAz6d5Z\nm3L1vgnwSGANYPuZBmT7SNvzbM+bM2fOTL9dRET0mUn3znOAn9leZPtPwEnA04G1ancPwIbA9fXx\n9cBGAPX5hwI3z6D9iIh4gGaS9H8JbCtp9do3vx3wI+BsYJf6mr2Ab9bHJ9dj6vPfs+0ZtB8REQ/Q\nTPr0L6QMyF4MXF6/15HAAcD+khZS+uyPql9yFPCwen5/4MAZxB0REcthRpuo2H4/8P4pp68Bnjzg\ntX8AXjaT9iIiYmayc1ZMpJnu4JXdu2JSpQxDRESHJOlHRHRIkn5ERIck6UdEdEiSfkREhyTpR0R0\nSJJ+RESHJOlHRHRIkn5ERIck6UdEdEiSfkREhyTpR0R0SJJ+RESHJOlHRHRIkn5ERIeknn7EkMy0\npj+krn/MvlzpR0R0SJJ+RESHJOlHRHRIkn5ERIck6UdEdEiSfkREhyTpR0R0SJJ+RESHJOlHRHRI\nkn5ERIck6UdEdEiSfkREhyTpR0R0SJJ+RESHJOlHRHRIkn5ERIfMKOlLWkvSVyX9WNJVkp4qaR1J\nZ0i6un5eu75Wkj4paaGkyyRtPTv/hIiIuL9meqV/OHCa7ccCWwFXAQcCZ9neDDirHgPsAGxWP/YF\nPj3DtiMi4gFa7qQv6aHAM4GjAGzfafsWYGfg2PqyY4EX18c7A8e5uABYS9L6yx15REQ8YDO50t8E\nWAQcI+kSSZ+XtAawnu0b6mt+BaxXH28AXNv39dfVc0uQtK+k+ZLmL1q0aAbhRUTEVDNJ+isBWwOf\ntv1E4Hcs7soBwLYBP5BvavtI2/Nsz5szZ84MwouIiKlmkvSvA66zfWE9/irlTeDGXrdN/XxTff56\nYKO+r9+wnouIiEaWO+nb/hVwraTN66ntgB8BJwN71XN7Ad+sj08GXlln8WwL3NrXDRQREQ2sNMOv\nfxNwgqSVgWuAvSlvJCdK2gf4BbBrfe2pwAuAhcAd9bUREdHQjJK+7UuBeQOe2m7Aaw28YSbtRUTE\nzGRFbkREhyTpR0R0SJJ+RESHJOlHRHRIkn5ERIck6UdEdEiSfkREhyTpR0R0SJJ+RESHzLQMQ0SM\nubkHfntGX//zQ3YceQyzFUfkSj8iolOS9CMiOiRJPyKiQ5L0IyI6JEk/IqJDkvQjIjokST8iokOS\n9CMiOiRJPyKiQ5L0IyI6JEk/IqJDkvQjIjokST8iokOS9CMiOiRJPyKiQ5L0IyI6JEk/IqJDsnNW\nRHTGOOwiNmq50o+I6JAk/YiIDknSj4jokCT9iIgOmXHSl7SipEsknVKPN5F0oaSFkr4saeV6fpV6\nvLA+P3embUdExAMzG1f6+wFX9R1/BDjM9qOB3wL71PP7AL+t5w+rr4uIiIZmlPQlbQjsCHy+Hgt4\nNvDV+pJjgRfXxzvXY+rz29XXR0REIzO90v8E8E7gnnr8MOAW23fV4+uADerjDYBrAerzt9bXL0HS\nvpLmS5q/aNGiGYYXERH9ljvpS3ohcJPtBbMYD7aPtD3P9rw5c+bM5reOiOi8mazIfTqwk6QXAKsC\nawKHA2tJWqlezW8IXF9ffz2wEXCdpJWAhwI3z6D9iIh4gJb7St/2u2xvaHsu8HLge7b3AM4Gdqkv\n2wv4Zn18cj2mPv89217e9iMi4oEbxjz9A4D9JS2k9NkfVc8fBTysnt8fOHAIbUdExFLMSsE12+cA\n59TH1wBPHvCaPwAvm432IiJi+WRFbkREhyTpR0R0SOrpR0Q0NNOa/jCzuv650o+I6JAk/YiIDknS\nj4jokCT9iIgOSdKPiOiQJP2IiA5J0o+I6JAk/YiIDknSj4jokCT9iIgOSdKPiOiQJP2IiA5J0o+I\n6JAk/YiIDknSj4jokCT9iIgOSdKPiOiQJP2IiA5J0o+I6JAk/YiIDknSj4jokCT9iIgOSdKPiOiQ\nJP2IiA5J0o+I6JAk/YiIDknSj4jokCT9iIgOSdKPiOiQJP2IiA5Z7qQvaSNJZ0v6kaQrJe1Xz68j\n6QxJV9fPa9fzkvRJSQslXSZp69n6R0RExP0zkyv9u4C32X4csC3wBkmPAw4EzrK9GXBWPQbYAdis\nfuwLfHoGbUdExHJY7qRv+wbbF9fHtwNXARsAOwPH1pcdC7y4Pt4ZOM7FBcBaktZf7sgjIuIBm5U+\nfUlzgScCFwLr2b6hPvUrYL36eAPg2r4vu66em/q99pU0X9L8RYsWzUZ4ERFRzTjpS3ow8DXgLbZv\n63/OtgE/kO9n+0jb82zPmzNnzkzDi4iIPjNK+pIeREn4J9g+qZ6+sddtUz/fVM9fD2zU9+Ub1nMR\nEdHITGbvCDgKuMr2v/Q9dTKwV328F/DNvvOvrLN4tgVu7esGioiIBlaawdc+HdgTuFzSpfXcu4FD\ngBMl7QP8Ati1Pncq8AJgIXAHsPcM2o6IiOWw3Enf9nmApnl6uwGvN/CG5W0vIiJmLityIyI6JEk/\nIqJDkvQjIjokST8iokOS9CMiOiRJPyKiQ5L0IyI6JEk/IqJDkvQjIjokST8iokOS9CMiOiRJPyKi\nQ5L0IyI6JEk/IqJDkvQjIjokST8iokOS9CMiOiRJPyKiQ5L0IyI6JEk/IqJDkvQjIjokST8iokOS\n9CMiOiRJPyKiQ5L0IyI6JEk/IqJDkvQjIjokST8iokOS9CMiOiRJPyKiQ5L0IyI6JEk/IqJDkvQj\nIjqkedKXtL2kn0haKOnA1u1HRHRZ06QvaUXgX4EdgMcBu0t6XMsYIiK6rPWV/pOBhbavsX0n8CVg\n58YxRER0lmy3a0zaBdje9mvq8Z7AU2y/se81+wL71sPNgZ/MsNl1gV/P8HvMhnGIYxxigPGIIzEs\nNg5xjEMMMB5xzEYMj7I9Z9ATK83wG88620cCR87W95M03/a82fp+f85xjEMM4xJHYhivOMYhhnGJ\nY9gxtO7euR7YqO94w3ouIiIaaJ30LwI2k7SJpJWBlwMnN44hIqKzmnbv2L5L0huB04EVgaNtXznk\nZmetq2iGxiGOcYgBxiOOxLDYOMQxDjHAeMQx1BiaDuRGRMRoZUVuRESHJOlHRHRIkn5ER0haUdKh\no44DQNKTBpx74QjiWGXAuXVax9HSxCV9SU+XdIak/5F0jaSfSbpmBHFI0t9Jel893ljSk1vHMQ4k\n7Sdpzfp/cpSkiyU9r4MxvGTAx3aSHt6ifdt3A89o0db98DlJW/QOJO0O/OMI4jhJ0oP64lgfOKNl\nAJJWkfQKSe+W9L7ex7DaG7vFWbPgKOCtwALg7hHG8W/APcCzgYOA24GvAdsMu2FJtwPTjtDbXnPY\nMUzxatuHS3o+sDawJ3A88N2OxbAP8FTg7Hr8N5Tf000kHWT7+AYxXCLpZOArwO96J22f1KDtfrsA\n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\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": "cca378d6-89c7-4383-b205-384c3920f970",
"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": 167,
"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": "50517708-621a-4480-f718-51584439467d",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 195
}
},
"source": [
"df.head()"
],
"execution_count": 169,
"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>Jon Sloan</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>Everett Brooks</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>Ana Gerald</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>Angela Frink</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>Alice Duvall</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 Jon Sloan 6.633333\n",
"1 9/1/16 6:48 AM Everett Brooks 6.800000\n",
"2 9/1/16 6:51 AM Ana Gerald 6.850000\n",
"3 9/1/16 7:01 AM Angela Frink 7.016667\n",
"4 9/1/16 7:05 AM Alice Duvall 7.083333"
]
},
"metadata": {
"tags": []
},
"execution_count": 169
}
]
},
{
"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": "be691671-11ec-44b6-f354-88b9d9d19623",
"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": 170,
"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": "e9c03a31-e372-4a30-e0c2-3901030d3174",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 343
}
},
"source": [
"df.sort_values('Hora Frac').head(10)"
],
"execution_count": 171,
"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>Devon Fogg</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>Devon Fogg</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>Mathew Vangieson</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>Geoffrey Smith</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>Linda Odom</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>James Mattingly</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>Carol Patrick</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>Mildred Johnson</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>Geoffrey Smith</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>Thomas Ellis</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 Devon Fogg 1.016667\n",
"1067 12/11/16 1:25 AM Devon Fogg 1.416667\n",
"1068 12/11/16 1:29 AM Mathew Vangieson 1.483333\n",
"4806 12/24/17 1:33 AM Geoffrey Smith 1.550000\n",
"1069 12/11/16 1:56 AM Linda Odom 1.933333\n",
"1673 2/10/17 1:57 AM James Mattingly 1.950000\n",
"1070 12/11/16 1:57 AM Carol Patrick 1.950000\n",
"9752 8/11/19 1:59 AM Mildred Johnson 1.983333\n",
"1286 1/1/17 3:21 AM Geoffrey Smith 3.350000\n",
"1287 1/1/17 3:22 AM Thomas Ellis 3.366667"
]
},
"metadata": {
"tags": []
},
"execution_count": 171
}
]
},
{
"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": "9e5e0b09-8990-4875-e017-c0bdbface428",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 343
}
},
"source": [
"df.sort_values('Hora Frac', ascending=False).head(10)"
],
"execution_count": 172,
"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>Elizabeth Mcwilliams</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>Ana Gerald</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>Everett Brooks</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>Everett Brooks</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>Merrill Williams</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>Jerry Bee</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>Mildred Cosgrove</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>Jason Dyer</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>Everett Brooks</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>Jason Dyer</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 Elizabeth Mcwilliams 21.583333\n",
"5939 4/29/18 9:34 PM Ana Gerald 21.566667\n",
"4331 10/30/17 8:28 PM Everett Brooks 20.466667\n",
"2698 5/23/17 7:34 PM Everett Brooks 19.566667\n",
"1702 2/12/17 5:43 PM Merrill Williams 17.716667\n",
"1186 12/23/16 5:39 PM Jerry Bee 17.650000\n",
"1370 1/9/17 5:26 PM Mildred Cosgrove 17.433333\n",
"660 10/29/16 5:23 PM Jason Dyer 17.383333\n",
"2836 6/4/17 5:00 PM Everett Brooks 17.000000\n",
"2131 3/26/17 4:16 PM Jason Dyer 16.266667"
]
},
"metadata": {
"tags": []
},
"execution_count": 172
}
]
},
{
"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": "06f2b446-2504-402f-8d6b-bb15fcde6237",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"media_bomdia=df['Hora Frac'].mean();media_bomdia"
],
"execution_count": 173,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"7.8886151368759805"
]
},
"metadata": {
"tags": []
},
"execution_count": 173
}
]
},
{
"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": "0df3e7e4-e67a-4f68-e69d-8885081bb3d8",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 282
}
},
"source": [
"df['Hora Frac'].hist(bins=100)"
],
"execution_count": 174,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fb7d72fe080>"
]
},
"metadata": {
"tags": []
},
"execution_count": 174
},
{
"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": "325d21e1-ae2a-4728-a63e-c3f4b8fe0112",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"std_bomdia=df['Hora Frac'].std();std_bomdia"
],
"execution_count": 175,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"1.3861465059788622"
]
},
"metadata": {
"tags": []
},
"execution_count": 175
}
]
},
{
"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": "bd93ac46-ca4a-40da-9dcc-c1bc0538b728",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 50
}
},
"source": [
"print(media_bomdia-2*std_bomdia)\n",
"print(media_bomdia+2*std_bomdia)"
],
"execution_count": 176,
"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": "94d13344-d9ea-4ca3-ac65-8a2cce6a5506",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 373
}
},
"source": [
"df.groupby('Deu BD').mean().sort_values('Hora Frac').head(10)"
],
"execution_count": 177,
"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>Dominick Hendricks</th>\n",
" <td>5.458333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bernice Palacios</th>\n",
" <td>5.850000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>John Pera</th>\n",
" <td>6.066667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Jon Sloan</th>\n",
" <td>6.356978</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mildred Johnson</th>\n",
" <td>6.731403</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Dorothy Giles</th>\n",
" <td>6.994444</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Christopher Clark</th>\n",
" <td>7.007292</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Tracy Zipfel</th>\n",
" <td>7.091667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>James Mattingly</th>\n",
" <td>7.112667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Everett Brooks</th>\n",
" <td>7.361332</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Hora Frac\n",
"Deu BD \n",
"Dominick Hendricks 5.458333\n",
"Bernice Palacios 5.850000\n",
"John Pera 6.066667\n",
"Jon Sloan 6.356978\n",
"Mildred Johnson 6.731403\n",
"Dorothy Giles 6.994444\n",
"Christopher Clark 7.007292\n",
"Tracy Zipfel 7.091667\n",
"James Mattingly 7.112667\n",
"Everett Brooks 7.361332"
]
},
"metadata": {
"tags": []
},
"execution_count": 177
}
]
},
{
"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": "54a0c2d4-6443-45b1-e7f1-b051f7386287",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 373
}
},
"source": [
"df.groupby('Deu BD').mean().sort_values('Hora Frac', ascending=False).head(10)"
],
"execution_count": 178,
"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>Jerry Bee</th>\n",
" <td>12.858333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cristina Carriger</th>\n",
" <td>11.616667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Kimberly Deason</th>\n",
" <td>11.383333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Thomas Saunders</th>\n",
" <td>11.122222</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Corina Jones</th>\n",
" <td>10.608333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sarah Behel</th>\n",
" <td>10.562821</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Merrill Williams</th>\n",
" <td>10.076905</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Charles Nix</th>\n",
" <td>9.933333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Edward Marrow</th>\n",
" <td>9.822222</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Margery Frost</th>\n",
" <td>9.466667</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Hora Frac\n",
"Deu BD \n",
"Jerry Bee 12.858333\n",
"Cristina Carriger 11.616667\n",
"Kimberly Deason 11.383333\n",
"Thomas Saunders 11.122222\n",
"Corina Jones 10.608333\n",
"Sarah Behel 10.562821\n",
"Merrill Williams 10.076905\n",
"Charles Nix 9.933333\n",
"Edward Marrow 9.822222\n",
"Margery Frost 9.466667"
]
},
"metadata": {
"tags": []
},
"execution_count": 178
}
]
},
{
"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": "85979ee0-2983-45e6-d95c-ec03b75a56c7",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 47
}
},
"source": [
"df[df['Deu BD']=='Stormy Cahoon']"
],
"execution_count": 179,
"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": 179
}
]
},
{
"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": "bcd73578-781b-4b79-9f7e-ec043c9e0ed8",
"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": 181,
"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>Jon Sloan</th>\n",
" <td>6.356978</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mildred Johnson</th>\n",
" <td>6.731403</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Christopher Clark</th>\n",
" <td>7.007292</td>\n",
" </tr>\n",
" <tr>\n",
" <th>James Mattingly</th>\n",
" <td>7.112667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Everett Brooks</th>\n",
" <td>7.361332</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Eric Morris</th>\n",
" <td>7.372024</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Charles Hudkins</th>\n",
" <td>7.448701</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Grady Kolling</th>\n",
" <td>7.620264</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Elizabeth Mcwilliams</th>\n",
" <td>7.642702</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Thomas Ellis</th>\n",
" <td>7.680792</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Hora Frac\n",
"Deu BD \n",
"Jon Sloan 6.356978\n",
"Mildred Johnson 6.731403\n",
"Christopher Clark 7.007292\n",
"James Mattingly 7.112667\n",
"Everett Brooks 7.361332\n",
"Eric Morris 7.372024\n",
"Charles Hudkins 7.448701\n",
"Grady Kolling 7.620264\n",
"Elizabeth Mcwilliams 7.642702\n",
"Thomas Ellis 7.680792"
]
},
"metadata": {
"tags": []
},
"execution_count": 181
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "4vPhU2iV_ouC",
"colab_type": "code",
"outputId": "1079fea5-815b-4cb4-eb28-02fa08a9c194",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 392
}
},
"source": [
"df[df['Deu BD'].isin(bomdiadores)].groupby('Deu BD').mean().sort_values('Hora Frac').head(10).plot.bar()"
],
"execution_count": 182,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fb7d70a20f0>"
]
},
"metadata": {
"tags": []
},
"execution_count": 182
},
{
"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": "087b1db6-0e45-4bb5-c532-2b071803ba09",
"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": 183,
"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>Sarah Behel</th>\n",
" <td>10.562821</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Merrill Williams</th>\n",
" <td>10.076905</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Alexander Thomas</th>\n",
" <td>9.236797</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Patrick Lopez</th>\n",
" <td>9.082609</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Charles Welch</th>\n",
" <td>9.071171</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Albert Horn</th>\n",
" <td>8.977778</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Kim Rogers</th>\n",
" <td>8.964286</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Betsy Ledezma</th>\n",
" <td>8.925505</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Preston Greer</th>\n",
" <td>8.913095</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Peter Brown</th>\n",
" <td>8.894042</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Hora Frac\n",
"Deu BD \n",
"Sarah Behel 10.562821\n",
"Merrill Williams 10.076905\n",
"Alexander Thomas 9.236797\n",
"Patrick Lopez 9.082609\n",
"Charles Welch 9.071171\n",
"Albert Horn 8.977778\n",
"Kim Rogers 8.964286\n",
"Betsy Ledezma 8.925505\n",
"Preston Greer 8.913095\n",
"Peter Brown 8.894042"
]
},
"metadata": {
"tags": []
},
"execution_count": 183
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "0C9cOF35CN2r",
"colab_type": "code",
"outputId": "b893bf44-3528-4f75-a73f-87cb27926a55",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 380
}
},
"source": [
"df[df['Deu BD'].isin(bomdiadores)].groupby('Deu BD').mean().sort_values('Hora Frac', ascending=False).head(10).plot.bar()"
],
"execution_count": 184,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fb7d6e313c8>"
]
},
"metadata": {
"tags": []
},
"execution_count": 184
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nm5nVlBO4mVlNOYGbmdWUE7iZWU05gZuZ1dRSJ3BJ60m6TtK9kqZLOrydgZmZWe8G9eN35wPfiIg7\nJa0CTJF0dUTc26bYzMysF0t9Bh4RT0bEncXPLwL3AW9tV2BmZta7tvSBSxoJbApMbsfzmZnZ4vU7\ngUtaGbgY+GpEvNDi/gMkdUnqmjVrVn+bMzOzQr8SuKQVSMn73Ii4pNVjImJSRIyNiLHDhw/vT3Nm\nZtakP7NQBJwO3BcR/92+kMzMrC/6cwa+DbAXsIOkqcXXP7cpLjMzW4ylnkYYETcDamMsZma2BLwS\n08ysppzAzcxqygnczKymnMDNzGrKCdzMrKacwM3MasoJ3MysppzAzcxqygnczKymnMDNzGrKCdzM\nrKacwM3MasoJ3MysppzAzcxqygnczKymnMDNzGrKCdzMrKacwM3MasoJ3MysppzAzcxqygnczKym\nnMDNzGrKCdzMrKacwM3MasoJ3MysppzAzcxqygnczKymnMDNzGrKCdzMrKacwM3MasoJ3MyspvqV\nwCXtLOkBSQ9JOqJdQZmZ2eItdQKXNBA4GfgYsAkwXtIm7QrMzMx6158z8A8AD0XEIxExDzgf2K09\nYZmZ2eIoIpbuF6XdgZ0jYr/i9l7AFhFxSLfHHQAcUNzcCHhg6cMFYG3gmX4+R39VIQaoRhyOYaEq\nxFGFGKAacVQhBmhPHG+PiOHdDw7q55MuVkRMAia16/kkdUXE2HY9X11jqEocjqFacVQhhqrEUYUY\nOh1Hf7pQ/gKs13R73eKYmZll0J8EfgewoaT1Ja0IfA74dXvCMjOzxVnqLpSImC/pEOD3wEDg5xEx\nvW2R9axt3TH9UIUYoBpxOIaFqhBHFWKAasRRhRigg3Es9SCmmZmVyysxzcxqygnczKymnMDNrPaU\nrLf4Ry5bKtsHLulEoMfgIuKwjLFsA0yNiJck7QlsBpwQEY/liqGI43DgDOBF4DRgU+CIiLgqYwyv\nAccDR0bx4pF0Z0RsljGGdwHfAt5O00B8ROyQK4amWLYGRnaL4+yM7Q8DXo6I14u/y8bA7yLi1Vwx\nNMWyBrAhMLhxLCJuzNj+PRHxvlztVUHHF/L0Q1fZATQ5BRgtaTTwDVLyPBv4UOY4vhQRJ0j6J2AN\nYC/gHCBbAgemk67crpK0R0Q8Byhj+wAXAj8FTgVey9z2ApLOATYApjbFEaTXRi43AtsVyfMq0vTe\n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\n9f9EoT3nzLhZLgAAAABJRU5ErkJggg==\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": "63a2467f-7a06-4e65-d1ff-1f87932f23f7",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 373
}
},
"source": [
"df.groupby('Data').count().sort_values('Deu BD', ascending=False).head(10)"
],
"execution_count": 185,
"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": 185
}
]
},
{
"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