Skip to content

Instantly share code, notes, and snippets.

@manugarri
Created September 21, 2019 23:41
Show Gist options
  • Save manugarri/f5d4efbdba44fadb3a912261f36c7f17 to your computer and use it in GitHub Desktop.
Save manugarri/f5d4efbdba44fadb3a912261f36c7f17 to your computer and use it in GitHub Desktop.
{
"cells": [
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"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>NodeId</th>\n",
" <th>SourcedTimestamp</th>\n",
" <th>EnqueuedTimestamp</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>V_0</td>\n",
" <td>2019-09-21 23:38:40.729644</td>\n",
" <td>2019-09-21 23:38:41.383393</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>V_0</td>\n",
" <td>2019-09-22 00:38:40.729644</td>\n",
" <td>2019-09-22 00:38:41.478904</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>V_0</td>\n",
" <td>2019-09-22 01:38:40.729644</td>\n",
" <td>2019-09-22 01:38:40.730013</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>V_0</td>\n",
" <td>2019-09-22 02:38:40.729644</td>\n",
" <td>2019-09-22 02:38:40.976359</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>V_0</td>\n",
" <td>2019-09-22 03:38:40.729644</td>\n",
" <td>2019-09-22 03:38:41.332180</td>\n",
" </tr>\n",
" <tr>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <td>995</td>\n",
" <td>V_1</td>\n",
" <td>2019-11-02 10:38:40.729644</td>\n",
" <td>2019-11-02 10:38:40.808118</td>\n",
" </tr>\n",
" <tr>\n",
" <td>996</td>\n",
" <td>V_1</td>\n",
" <td>2019-11-02 11:38:40.729644</td>\n",
" <td>2019-11-02 11:38:40.740996</td>\n",
" </tr>\n",
" <tr>\n",
" <td>997</td>\n",
" <td>V_1</td>\n",
" <td>2019-11-02 12:38:40.729644</td>\n",
" <td>2019-11-02 12:38:40.893541</td>\n",
" </tr>\n",
" <tr>\n",
" <td>998</td>\n",
" <td>V_1</td>\n",
" <td>2019-11-02 13:38:40.729644</td>\n",
" <td>2019-11-02 13:38:40.981512</td>\n",
" </tr>\n",
" <tr>\n",
" <td>999</td>\n",
" <td>V_1</td>\n",
" <td>2019-11-02 14:38:40.729644</td>\n",
" <td>2019-11-02 14:38:40.837155</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1000 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" NodeId SourcedTimestamp EnqueuedTimestamp\n",
"0 V_0 2019-09-21 23:38:40.729644 2019-09-21 23:38:41.383393\n",
"1 V_0 2019-09-22 00:38:40.729644 2019-09-22 00:38:41.478904\n",
"2 V_0 2019-09-22 01:38:40.729644 2019-09-22 01:38:40.730013\n",
"3 V_0 2019-09-22 02:38:40.729644 2019-09-22 02:38:40.976359\n",
"4 V_0 2019-09-22 03:38:40.729644 2019-09-22 03:38:41.332180\n",
".. ... ... ...\n",
"995 V_1 2019-11-02 10:38:40.729644 2019-11-02 10:38:40.808118\n",
"996 V_1 2019-11-02 11:38:40.729644 2019-11-02 11:38:40.740996\n",
"997 V_1 2019-11-02 12:38:40.729644 2019-11-02 12:38:40.893541\n",
"998 V_1 2019-11-02 13:38:40.729644 2019-11-02 13:38:40.981512\n",
"999 V_1 2019-11-02 14:38:40.729644 2019-11-02 14:38:40.837155\n",
"\n",
"[1000 rows x 3 columns]"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from datetime import datetime, timedelta\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"\n",
"n_filas = 1000\n",
"ahora = datetime.utcnow()\n",
"\n",
"sourced = t = np.arange(ahora, (ahora + timedelta(hours=n_filas)), timedelta(hours=1)).astype(datetime)\n",
"\n",
"enqueued = [ts + timedelta(seconds=np.random.random()) for ts in sourced]\n",
"\n",
"node_id = [\"V_0\"] * int(n_filas/2) + [\"V_1\"] * int(n_filas/2)\n",
"\n",
"df = pd.DataFrame({\n",
" \"NodeId\": node_id,\n",
" \"SourcedTimestamp\": sourced,\n",
" \"EnqueuedTimestamp\": enqueued \n",
"})\n",
"\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"#calculamos diferencia de TS\n",
"df[\"Diff\"] = df.EnqueuedTimestamp - df.SourcedTimestamp\n",
"#calculamos diferencia en segundos con el accesor de datetime .dt\n",
"df[\"Diff\"] = df[\"Diff\"].dt.total_seconds()"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df.groupby(\"NodeId\").Diff.plot.kde()\n",
"plt.legend();"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment