{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "yU4rYjTxRPoy"
      },
      "source": [
        "# Exploratory Data Analysis (EDA) of the BRURIIoT dataset\n",
        "\n",
        "**Authors:** \n",
        "* Edllyn de Jesus Silva\n",
        "* Evgeni Korsakov Cruz\n",
        "* Victor Yukio Shirasuna\n",
        "\n",
        "BRURIIoT dataset available at: https://ieee-dataport.org/documents/bruriiot-dataset-network-anomaly-detection-iiot-enhanced-feature-engineering-approach"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "aV7aw7FHbR-a"
      },
      "source": [
        "## 1. Importing libraries"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "uKTcgzkN09lN"
      },
      "outputs": [],
      "source": [
        "import dask.dataframe as dd\n",
        "import pandas as pd\n",
        "import numpy as np\n",
        "\n",
        "import matplotlib.pyplot as plt\n",
        "import matplotlib.ticker as mtick\n",
        "import seaborn as sns\n",
        "\n",
        "from sklearn.decomposition import PCA\n",
        "from sklearn.manifold import TSNE\n",
        "from tqdm.notebook import tqdm\n",
        "\n",
        "%matplotlib inline\n",
        "\n",
        "SEED = 2025"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "caiR_JTjbWE8"
      },
      "source": [
        "## 2. Loading dataset"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 256
        },
        "id": "mow5QlkJ2D0u",
        "outputId": "8575b653-3984-4307-fb43-53d6f507d53a"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-7a6292ff-caa0-48d0-904d-87b3297ddd27\" class=\"colab-df-container\">\n",
              "    <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>frame.time__calculate_duration</th>\n",
              "      <th>ip.src_host__nunique</th>\n",
              "      <th>ip.dst_host__nunique</th>\n",
              "      <th>arp.dst.proto_ipv4__nunique</th>\n",
              "      <th>arp.opcode__min</th>\n",
              "      <th>arp.opcode__max</th>\n",
              "      <th>arp.opcode__sum</th>\n",
              "      <th>arp.opcode__mean</th>\n",
              "      <th>arp.opcode__min_max_diff</th>\n",
              "      <th>arp.opcode__min_max_ratio</th>\n",
              "      <th>...</th>\n",
              "      <th>mqtt.topic_len__max</th>\n",
              "      <th>mqtt.topic_len__sum</th>\n",
              "      <th>mqtt.topic_len__mean</th>\n",
              "      <th>mqtt.topic_len__min_max_diff</th>\n",
              "      <th>mqtt.topic_len__min_max_ratio</th>\n",
              "      <th>mqtt.topic_len__min_max_product</th>\n",
              "      <th>mqtt.topic_len__mean_square</th>\n",
              "      <th>is_attack__most_frequent</th>\n",
              "      <th>attack_label_enc__most_frequent</th>\n",
              "      <th>attack_label__most_frequent</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0.000174</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1</td>\n",
              "      <td>4</td>\n",
              "      <td>ddos_smurf</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>0.010008</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1</td>\n",
              "      <td>4</td>\n",
              "      <td>ddos_smurf</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>0.001801</td>\n",
              "      <td>13</td>\n",
              "      <td>10</td>\n",
              "      <td>1</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1</td>\n",
              "      <td>5</td>\n",
              "      <td>ddos_syn_flood</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>0.002471</td>\n",
              "      <td>1</td>\n",
              "      <td>20</td>\n",
              "      <td>1</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1</td>\n",
              "      <td>5</td>\n",
              "      <td>ddos_syn_flood</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>0.005350</td>\n",
              "      <td>3</td>\n",
              "      <td>3</td>\n",
              "      <td>1</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>ddos_http_flood</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>5 rows × 267 columns</p>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-7a6292ff-caa0-48d0-904d-87b3297ddd27')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-7a6292ff-caa0-48d0-904d-87b3297ddd27 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-7a6292ff-caa0-48d0-904d-87b3297ddd27');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "<div id=\"df-3df6a2e4-dbad-483a-b33d-7d85bb7bd9bf\">\n",
              "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-3df6a2e4-dbad-483a-b33d-7d85bb7bd9bf')\"\n",
              "            title=\"Suggest charts\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "  </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "  <script>\n",
              "    async function quickchart(key) {\n",
              "      const quickchartButtonEl =\n",
              "        document.querySelector('#' + key + ' button');\n",
              "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "      try {\n",
              "        const charts = await google.colab.kernel.invokeFunction(\n",
              "            'suggestCharts', [key], {});\n",
              "      } catch (error) {\n",
              "        console.error('Error during call to suggestCharts:', error);\n",
              "      }\n",
              "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "    }\n",
              "    (() => {\n",
              "      let quickchartButtonEl =\n",
              "        document.querySelector('#df-3df6a2e4-dbad-483a-b33d-7d85bb7bd9bf button');\n",
              "      quickchartButtonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "    })();\n",
              "  </script>\n",
              "</div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "   frame.time__calculate_duration  ip.src_host__nunique  ip.dst_host__nunique  \\\n",
              "0                        0.000174                     1                     1   \n",
              "1                        0.010008                     1                     1   \n",
              "2                        0.001801                    13                    10   \n",
              "3                        0.002471                     1                    20   \n",
              "4                        0.005350                     3                     3   \n",
              "\n",
              "   arp.dst.proto_ipv4__nunique  arp.opcode__min  arp.opcode__max  \\\n",
              "0                            1              0.0              0.0   \n",
              "1                            1              0.0              0.0   \n",
              "2                            1              0.0              0.0   \n",
              "3                            1              0.0              0.0   \n",
              "4                            1              0.0              0.0   \n",
              "\n",
              "   arp.opcode__sum  arp.opcode__mean  arp.opcode__min_max_diff  \\\n",
              "0              0.0               0.0                       0.0   \n",
              "1              0.0               0.0                       0.0   \n",
              "2              0.0               0.0                       0.0   \n",
              "3              0.0               0.0                       0.0   \n",
              "4              0.0               0.0                       0.0   \n",
              "\n",
              "   arp.opcode__min_max_ratio  ...  mqtt.topic_len__max  mqtt.topic_len__sum  \\\n",
              "0                        0.0  ...                  0.0                  0.0   \n",
              "1                        0.0  ...                  0.0                  0.0   \n",
              "2                        0.0  ...                  0.0                  0.0   \n",
              "3                        0.0  ...                  0.0                  0.0   \n",
              "4                        0.0  ...                  0.0                  0.0   \n",
              "\n",
              "   mqtt.topic_len__mean  mqtt.topic_len__min_max_diff  \\\n",
              "0                   0.0                           0.0   \n",
              "1                   0.0                           0.0   \n",
              "2                   0.0                           0.0   \n",
              "3                   0.0                           0.0   \n",
              "4                   0.0                           0.0   \n",
              "\n",
              "   mqtt.topic_len__min_max_ratio  mqtt.topic_len__min_max_product  \\\n",
              "0                            0.0                              0.0   \n",
              "1                            0.0                              0.0   \n",
              "2                            0.0                              0.0   \n",
              "3                            0.0                              0.0   \n",
              "4                            0.0                              0.0   \n",
              "\n",
              "   mqtt.topic_len__mean_square  is_attack__most_frequent  \\\n",
              "0                          0.0                         1   \n",
              "1                          0.0                         1   \n",
              "2                          0.0                         1   \n",
              "3                          0.0                         1   \n",
              "4                          0.0                         1   \n",
              "\n",
              "   attack_label_enc__most_frequent  attack_label__most_frequent  \n",
              "0                                4                   ddos_smurf  \n",
              "1                                4                   ddos_smurf  \n",
              "2                                5               ddos_syn_flood  \n",
              "3                                5               ddos_syn_flood  \n",
              "4                                1              ddos_http_flood  \n",
              "\n",
              "[5 rows x 267 columns]"
            ]
          },
          "execution_count": 3,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "df = dd.read_csv('BRUIIoT.csv')\n",
        "df.head()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Ljckn_GAVTdJ",
        "outputId": "ddd51dbe-f8cb-4869-b120-7e3addcf27e5"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "<class 'dask_expr.DataFrame'>\n",
            "Columns: 267 entries, frame.time__calculate_duration to attack_label__most_frequent\n",
            "dtypes: float64(162), int64(104), string(1)"
          ]
        }
      ],
      "source": [
        "df.info()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Jj0sjCR92Lj4",
        "outputId": "54f24a3f-95fe-46b0-c47c-dc7bc191f7b4"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "Index(['frame.time__calculate_duration', 'ip.src_host__nunique',\n",
              "       'ip.dst_host__nunique', 'arp.dst.proto_ipv4__nunique',\n",
              "       'arp.opcode__min', 'arp.opcode__max', 'arp.opcode__sum',\n",
              "       'arp.opcode__mean', 'arp.opcode__min_max_diff',\n",
              "       'arp.opcode__min_max_ratio',\n",
              "       ...\n",
              "       'mqtt.topic_len__max', 'mqtt.topic_len__sum', 'mqtt.topic_len__mean',\n",
              "       'mqtt.topic_len__min_max_diff', 'mqtt.topic_len__min_max_ratio',\n",
              "       'mqtt.topic_len__min_max_product', 'mqtt.topic_len__mean_square',\n",
              "       'is_attack__most_frequent', 'attack_label_enc__most_frequent',\n",
              "       'attack_label__most_frequent'],\n",
              "      dtype='object', length=267)"
            ]
          },
          "execution_count": 5,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "df.columns"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "q1Y4ZZ7OcD4b"
      },
      "outputs": [],
      "source": [
        "targets_cols = ['attack_label__most_frequent', 'attack_label_enc__most_frequent', 'is_attack__most_frequent']"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "2b2l9moBVbjk",
        "outputId": "0f9032a7-e416-4f9a-92f7-668f45358059"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "['icmp', 'ip', 'udp', 'dns', 'http', 'arp', 'mqtt', 'tcp', 'frame']"
            ]
          },
          "execution_count": 7,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "modules = list(set(map(lambda x: x.split('.')[0], df.columns)))  # get protocols\n",
        "modules = [m for m in modules if m not in targets_cols]  # remove target columns\n",
        "modules"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "-p0ulr5n2Nkl",
        "outputId": "3d6c1348-a769-411c-cb35-0830b460652a"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "2776422"
            ]
          },
          "execution_count": 8,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "total_rows = len(df)\n",
        "total_rows"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "oFiSZAsMbdze"
      },
      "source": [
        "## 3. Target distributions"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 535
        },
        "id": "BcJdNniU2qPJ",
        "outputId": "3b3ce68f-ef6f-4fcb-c74e-3a9f75192846"
      },
      "outputs": [
        {
          "data": {
            "image/png": "[encoded data, 49880 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "ax = df['attack_label__most_frequent'].compute().value_counts(normalize=True).apply(lambda x: round(x*100, 2)).plot.bar(rot=45)\n",
        "\n",
        "# add bar's labels\n",
        "for container in ax.containers:\n",
        "    ax.bar_label(container)\n",
        "    ax.yaxis.set_major_formatter(mtick.PercentFormatter())"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 444
        },
        "id": "uVoctJMP353R",
        "outputId": "0a5f8f66-8455-4cb9-8062-6eb4e0b36741"
      },
      "outputs": [
        {
          "data": {
            "image/png": "[encoded data, 27996 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "ax = df['attack_label_enc__most_frequent'].compute().value_counts(normalize=True).apply(lambda x: round(x*100, 2)).plot.bar()\n",
        "\n",
        "# add bar's labels\n",
        "for container in ax.containers:\n",
        "    ax.bar_label(container)\n",
        "    ax.yaxis.set_major_formatter(mtick.PercentFormatter())"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 445
        },
        "id": "Xc24BJAQ4snq",
        "outputId": "cd9ebd14-9894-4c07-d754-6e403c722e15"
      },
      "outputs": [
        {
          "data": {
            "image/png": "[encoded data, 16892 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "ax = df['is_attack__most_frequent'].compute().value_counts(normalize=True).apply(lambda x: round(x*100, 2)).plot.bar()\n",
        "\n",
        "# add bar's labels\n",
        "for container in ax.containers:\n",
        "    ax.bar_label(container)\n",
        "    ax.yaxis.set_major_formatter(mtick.PercentFormatter())"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "qNitodOybj9N"
      },
      "source": [
        "## 4. Sampling data"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "dIwHGDfGQgDX"
      },
      "source": [
        "- Confidence Level: 99%\n",
        "- Margin of Error: 0.5%\n",
        "- Population Size: 2,776,422\n",
        "- Sample size: 65,006"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ROOryGtXC6z1",
        "outputId": "192edb53-b30e-4535-ee52-b0ea14101334"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "(65006, 267)"
            ]
          },
          "execution_count": 12,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "# sampling settings\n",
        "sample_size = 65006\n",
        "dask_frac_factor_error = 1\n",
        "\n",
        "# sampling\n",
        "df_sample = df.sample(frac=(sample_size+dask_frac_factor_error)/total_rows, random_state=SEED).compute()\n",
        "df_sample.shape"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "XC3BN9KdpEbs"
      },
      "source": [
        "### 4.1 Checking target distributions"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 535
        },
        "id": "1iebdW3BpKxq",
        "outputId": "092e6bf0-6706-4728-e86c-24cf09266cba"
      },
      "outputs": [
        {
          "data": {
            "image/png": "[encoded data, 49648 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "ax = df_sample['attack_label__most_frequent'].value_counts(normalize=True).apply(lambda x: round(x*100, 2)).plot.bar(rot=45)\n",
        "\n",
        "# add bar's labels\n",
        "for container in ax.containers:\n",
        "    ax.bar_label(container)\n",
        "    ax.yaxis.set_major_formatter(mtick.PercentFormatter())"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 452
        },
        "id": "Wz8Pi8Df2tUm",
        "outputId": "178d2dbe-a5a4-46cb-b9ca-53d3cb143855"
      },
      "outputs": [
        {
          "data": {
            "image/png": "[encoded data, 28680 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "ax = df_sample['attack_label_enc__most_frequent'].value_counts(normalize=True).apply(lambda x: round(x*100, 2)).plot.bar(rot=45)\n",
        "\n",
        "# add bar's labels\n",
        "for container in ax.containers:\n",
        "    ax.bar_label(container)\n",
        "    ax.yaxis.set_major_formatter(mtick.PercentFormatter())"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 452
        },
        "id": "mA9n9yB22tX6",
        "outputId": "34eddf06-ddaf-454b-d94b-37b959a36631"
      },
      "outputs": [
        {
          "data": {
            "image/png": "[encoded data, 17296 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "ax = df_sample['is_attack__most_frequent'].value_counts(normalize=True).apply(lambda x: round(x*100, 2)).plot.bar(rot=45)\n",
        "\n",
        "# add bar's labels\n",
        "for container in ax.containers:\n",
        "    ax.bar_label(container)\n",
        "    ax.yaxis.set_major_formatter(mtick.PercentFormatter())"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_e8ZDUuKnZEN"
      },
      "source": [
        "### 4.2 Statistics per protocol"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "lXa5o_J7YGI7"
      },
      "outputs": [],
      "source": [
        "def filter_module(columns, module):\n",
        "    match_module = map(lambda x: x if module in x else None, columns)  # match module columns else None\n",
        "    clean_module = filter(lambda x: x is not None, match_module)  # remove None values\n",
        "    return list(clean_module)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "VpbH3diGS_W-",
        "outputId": "e3bc06a1-466b-465d-8ec6-6478442126bf"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "**Processing module icmp...**\n",
            "Columns length: 16, columns: ['icmp.checksum__min', 'icmp.checksum__max', 'icmp.checksum__sum', 'icmp.checksum__mean', 'icmp.checksum__min_max_diff', 'icmp.checksum__min_max_ratio', 'icmp.checksum__min_max_product', 'icmp.checksum__mean_square', 'icmp.seq_le__min', 'icmp.seq_le__max', 'icmp.seq_le__sum', 'icmp.seq_le__mean', 'icmp.seq_le__min_max_diff', 'icmp.seq_le__min_max_ratio', 'icmp.seq_le__min_max_product', 'icmp.seq_le__mean_square']\n",
            "\n",
            "**Processing module ip...**\n",
            "Columns length: 4, columns: ['ip.src_host__nunique', 'ip.dst_host__nunique', 'arp.dst.proto_ipv4__nunique', 'arp.src.proto_ipv4__nunique']\n",
            "\n",
            "**Processing module udp...**\n",
            "Columns length: 11, columns: ['udp.port__nunique', 'udp.stream__nunique', 'udp.time_delta__min', 'udp.time_delta__max', 'udp.time_delta__sum', 'udp.time_delta__mean', 'udp.time_delta__calculate_duration', 'udp.time_delta__min_max_diff', 'udp.time_delta__min_max_ratio', 'udp.time_delta__min_max_product', 'udp.time_delta__mean_square']\n",
            "\n",
            "**Processing module dns...**\n",
            "Columns length: 42, columns: ['dns.qry.name__nunique', 'dns.qry.name.len__nunique', 'dns.qry.qu__min', 'dns.qry.qu__max', 'dns.qry.qu__sum', 'dns.qry.qu__mean', 'dns.qry.qu__min_max_diff', 'dns.qry.qu__min_max_ratio', 'dns.qry.qu__min_max_product', 'dns.qry.qu__mean_square', 'dns.qry.type__min', 'dns.qry.type__max', 'dns.qry.type__sum', 'dns.qry.type__mean', 'dns.qry.type__min_max_diff', 'dns.qry.type__min_max_ratio', 'dns.qry.type__min_max_product', 'dns.qry.type__mean_square', 'dns.retransmission__min', 'dns.retransmission__max', 'dns.retransmission__sum', 'dns.retransmission__mean', 'dns.retransmission__min_max_diff', 'dns.retransmission__min_max_ratio', 'dns.retransmission__min_max_product', 'dns.retransmission__mean_square', 'dns.retransmit_request__min', 'dns.retransmit_request__max', 'dns.retransmit_request__sum', 'dns.retransmit_request__mean', 'dns.retransmit_request__min_max_diff', 'dns.retransmit_request__min_max_ratio', 'dns.retransmit_request__min_max_product', 'dns.retransmit_request__mean_square', 'dns.retransmit_request_in__min', 'dns.retransmit_request_in__max', 'dns.retransmit_request_in__sum', 'dns.retransmit_request_in__mean', 'dns.retransmit_request_in__min_max_diff', 'dns.retransmit_request_in__min_max_ratio', 'dns.retransmit_request_in__min_max_product', 'dns.retransmit_request_in__mean_square']\n",
            "\n",
            "**Processing module http...**\n",
            "Columns length: 21, columns: ['http.file_data__nunique', 'http.content_length__min', 'http.content_length__max', 'http.content_length__sum', 'http.content_length__mean', 'http.content_length__min_max_diff', 'http.content_length__min_max_ratio', 'http.content_length__min_max_product', 'http.content_length__mean_square', 'http.request.uri.query__nunique', 'http.request.method__nunique', 'http.request.full_uri__nunique', 'http.request.version__nunique', 'http.response__min', 'http.response__max', 'http.response__sum', 'http.response__mean', 'http.response__min_max_diff', 'http.response__min_max_ratio', 'http.response__min_max_product', 'http.response__mean_square']\n",
            "\n",
            "**Processing module arp...**\n",
            "Columns length: 18, columns: ['arp.dst.proto_ipv4__nunique', 'arp.opcode__min', 'arp.opcode__max', 'arp.opcode__sum', 'arp.opcode__mean', 'arp.opcode__min_max_diff', 'arp.opcode__min_max_ratio', 'arp.opcode__min_max_product', 'arp.opcode__mean_square', 'arp.hw.size__min', 'arp.hw.size__max', 'arp.hw.size__sum', 'arp.hw.size__mean', 'arp.hw.size__min_max_diff', 'arp.hw.size__min_max_ratio', 'arp.hw.size__min_max_product', 'arp.hw.size__mean_square', 'arp.src.proto_ipv4__nunique']\n",
            "\n",
            "**Processing module mqtt...**\n",
            "Columns length: 54, columns: ['mqtt.conflag.cleansess__min', 'mqtt.conflag.cleansess__max', 'mqtt.conflag.cleansess__sum', 'mqtt.conflag.cleansess__mean', 'mqtt.conflag.cleansess__min_max_diff', 'mqtt.conflag.cleansess__min_max_ratio', 'mqtt.conflag.cleansess__min_max_product', 'mqtt.conflag.cleansess__mean_square', 'mqtt.conflags__min', 'mqtt.conflags__max', 'mqtt.conflags__sum', 'mqtt.conflags__mean', 'mqtt.conflags__nunique', 'mqtt.conflags__min_max_diff', 'mqtt.conflags__min_max_ratio', 'mqtt.conflags__min_max_product', 'mqtt.conflags__mean_square', 'mqtt.hdrflags__min', 'mqtt.hdrflags__max', 'mqtt.hdrflags__sum', 'mqtt.hdrflags__mean', 'mqtt.hdrflags__nunique', 'mqtt.hdrflags__min_max_diff', 'mqtt.hdrflags__min_max_ratio', 'mqtt.hdrflags__min_max_product', 'mqtt.hdrflags__mean_square', 'mqtt.len__min', 'mqtt.len__max', 'mqtt.len__sum', 'mqtt.len__mean', 'mqtt.len__min_max_diff', 'mqtt.len__min_max_ratio', 'mqtt.len__min_max_product', 'mqtt.len__mean_square', 'mqtt.msg__nunique', 'mqtt.msgtype__nunique', 'mqtt.proto_len__min', 'mqtt.proto_len__max', 'mqtt.proto_len__sum', 'mqtt.proto_len__mean', 'mqtt.proto_len__min_max_diff', 'mqtt.proto_len__min_max_ratio', 'mqtt.proto_len__min_max_product', 'mqtt.proto_len__mean_square', 'mqtt.protoname__nunique', 'mqtt.topic__nunique', 'mqtt.topic_len__min', 'mqtt.topic_len__max', 'mqtt.topic_len__sum', 'mqtt.topic_len__mean', 'mqtt.topic_len__min_max_diff', 'mqtt.topic_len__min_max_ratio', 'mqtt.topic_len__min_max_product', 'mqtt.topic_len__mean_square']\n",
            "\n",
            "**Processing module tcp...**\n",
            "Columns length: 99, columns: ['tcp.ack__min', 'tcp.ack__max', 'tcp.ack__sum', 'tcp.ack__mean', 'tcp.ack__min_max_diff', 'tcp.ack__min_max_ratio', 'tcp.ack__min_max_product', 'tcp.ack__mean_square', 'tcp.ack_raw__min', 'tcp.ack_raw__max', 'tcp.ack_raw__sum', 'tcp.ack_raw__mean', 'tcp.ack_raw__min_max_diff', 'tcp.ack_raw__min_max_ratio', 'tcp.ack_raw__min_max_product', 'tcp.ack_raw__mean_square', 'tcp.checksum__min', 'tcp.checksum__max', 'tcp.checksum__sum', 'tcp.checksum__mean', 'tcp.checksum__min_max_diff', 'tcp.checksum__min_max_ratio', 'tcp.checksum__min_max_product', 'tcp.checksum__mean_square', 'tcp.connection.fin__min', 'tcp.connection.fin__max', 'tcp.connection.fin__sum', 'tcp.connection.fin__mean', 'tcp.connection.fin__min_max_diff', 'tcp.connection.fin__min_max_ratio', 'tcp.connection.fin__min_max_product', 'tcp.connection.fin__mean_square', 'tcp.connection.rst__min', 'tcp.connection.rst__max', 'tcp.connection.rst__sum', 'tcp.connection.rst__mean', 'tcp.connection.rst__min_max_diff', 'tcp.connection.rst__min_max_ratio', 'tcp.connection.rst__min_max_product', 'tcp.connection.rst__mean_square', 'tcp.connection.syn__min', 'tcp.connection.syn__max', 'tcp.connection.syn__sum', 'tcp.connection.syn__mean', 'tcp.connection.syn__min_max_diff', 'tcp.connection.syn__min_max_ratio', 'tcp.connection.syn__min_max_product', 'tcp.connection.syn__mean_square', 'tcp.connection.synack__min', 'tcp.connection.synack__max', 'tcp.connection.synack__sum', 'tcp.connection.synack__mean', 'tcp.connection.synack__min_max_diff', 'tcp.connection.synack__min_max_ratio', 'tcp.connection.synack__min_max_product', 'tcp.connection.synack__mean_square', 'tcp.dstport__min', 'tcp.dstport__max', 'tcp.dstport__sum', 'tcp.dstport__mean', 'tcp.dstport__min_max_diff', 'tcp.dstport__min_max_ratio', 'tcp.dstport__min_max_product', 'tcp.dstport__mean_square', 'tcp.flags__min', 'tcp.flags__max', 'tcp.flags__sum', 'tcp.flags__mean', 'tcp.flags__min_max_diff', 'tcp.flags__min_max_ratio', 'tcp.flags__min_max_product', 'tcp.flags__mean_square', 'tcp.flags.ack__min', 'tcp.flags.ack__max', 'tcp.flags.ack__sum', 'tcp.flags.ack__mean', 'tcp.flags.ack__min_max_diff', 'tcp.flags.ack__min_max_ratio', 'tcp.flags.ack__min_max_product', 'tcp.flags.ack__mean_square', 'tcp.len__min', 'tcp.len__max', 'tcp.len__sum', 'tcp.len__mean', 'tcp.len__min_max_diff', 'tcp.len__min_max_ratio', 'tcp.len__min_max_product', 'tcp.len__mean_square', 'tcp.options__nunique', 'tcp.payload__nunique', 'tcp.seq__min', 'tcp.seq__max', 'tcp.seq__sum', 'tcp.seq__mean', 'tcp.seq__min_max_diff', 'tcp.seq__min_max_ratio', 'tcp.seq__min_max_product', 'tcp.seq__mean_square', 'tcp.srcport__nunique']\n",
            "\n",
            "**Processing module frame...**\n",
            "Columns length: 1, columns: ['frame.time__calculate_duration']\n",
            "\n"
          ]
        }
      ],
      "source": [
        "for m in modules:\n",
        "    print(f'**Processing module {m}...**')\n",
        "\n",
        "    # get module's columns\n",
        "    cols = filter_module(df_sample.columns, m)\n",
        "    print(f'Columns length: {len(cols)}, columns:', cols)\n",
        "    print('')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "id": "6XTqQJYUncgh",
        "outputId": "a8739b7a-b1e6-4f59-a497-54119d42fcd8"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module icmp...\n"
          ]
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"    display(df_sample_module_features\",\n  \"rows\": 16,\n  \"fields\": [\n    {\n      \"column\": \"count\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": 65006.0,\n        \"max\": 65006.0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          65006.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"mean\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 208274680.9064598,\n        \"min\": 678.4411525475457,\n        \"max\": 573140313.4631927,\n        \"num_unique_values\": 16,\n        \"samples\": [\n          6474.952912038889\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"std\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 354368836.01003873,\n        \"min\": 5725.6365523585955,\n        \"max\": 875143076.8936884,\n        \"num_unique_values\": 16,\n        \"samples\": [\n          12284.443260676917\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"min\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": 0.0,\n        \"max\": 0.0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"25%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": 0.0,\n        \"max\": 0.0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"50%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 10615557.019866692,\n        \"min\": 0.0,\n        \"max\": 42472592.9,\n        \"num_unique_values\": 7,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"75%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 312163816.46026385,\n        \"min\": 1.3925064551048,\n        \"max\": 1004175292.1425,\n        \"num_unique_values\": 16,\n        \"samples\": [\n          6961.5\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"max\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 1865499432.6552835,\n        \"min\": 62175.0,\n        \"max\": 4292385565.690001,\n        \"num_unique_values\": 12,\n        \"samples\": [\n          4292346135.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-68283cff-b565-4e24-82d1-d3dc890080ec\" class=\"colab-df-container\">\n",
              "    <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>count</th>\n",
              "      <th>mean</th>\n",
              "      <th>std</th>\n",
              "      <th>min</th>\n",
              "      <th>25%</th>\n",
              "      <th>50%</th>\n",
              "      <th>75%</th>\n",
              "      <th>max</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>icmp.checksum__min</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>6.474953e+03</td>\n",
              "      <td>1.228444e+04</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>6.961500e+03</td>\n",
              "      <td>6.217500e+04</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>icmp.checksum__max</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>2.670351e+04</td>\n",
              "      <td>2.778156e+04</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.644150e+04</td>\n",
              "      <td>5.752700e+04</td>\n",
              "      <td>6.553400e+04</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>icmp.checksum__sum</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>3.181234e+05</td>\n",
              "      <td>3.578485e+05</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.303420e+05</td>\n",
              "      <td>6.337745e+05</td>\n",
              "      <td>1.270498e+06</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>icmp.checksum__mean</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.590617e+04</td>\n",
              "      <td>1.789243e+04</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>6.517100e+03</td>\n",
              "      <td>3.168872e+04</td>\n",
              "      <td>6.352490e+04</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>icmp.checksum__min_max_diff</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>2.022855e+04</td>\n",
              "      <td>2.473079e+04</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>5.120000e+03</td>\n",
              "      <td>4.483475e+04</td>\n",
              "      <td>6.553400e+04</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>icmp.checksum__min_max_ratio</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>4.261391e+03</td>\n",
              "      <td>1.502969e+04</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.137776e+00</td>\n",
              "      <td>8.144153e+00</td>\n",
              "      <td>6.553400e+04</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>icmp.checksum__min_max_product</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>3.284568e+08</td>\n",
              "      <td>6.744919e+08</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>3.027292e+08</td>\n",
              "      <td>4.056732e+09</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>icmp.checksum__mean_square</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>5.731403e+08</td>\n",
              "      <td>8.028617e+08</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>4.247259e+07</td>\n",
              "      <td>1.004175e+09</td>\n",
              "      <td>4.035413e+09</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>icmp.seq_le__min</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>8.484351e+03</td>\n",
              "      <td>1.491549e+04</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>1.175750e+04</td>\n",
              "      <td>6.550500e+04</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>icmp.seq_le__max</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.731075e+04</td>\n",
              "      <td>2.374116e+04</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>4.031350e+04</td>\n",
              "      <td>6.553500e+04</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>icmp.seq_le__sum</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>2.597109e+05</td>\n",
              "      <td>3.673882e+05</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>5.496210e+05</td>\n",
              "      <td>1.310326e+06</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>icmp.seq_le__mean</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.298554e+04</td>\n",
              "      <td>1.836941e+04</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>2.748105e+04</td>\n",
              "      <td>6.551630e+04</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>icmp.seq_le__min_max_diff</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>8.826396e+03</td>\n",
              "      <td>1.645830e+04</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>1.046575e+04</td>\n",
              "      <td>6.553500e+04</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>icmp.seq_le__min_max_ratio</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>6.784412e+02</td>\n",
              "      <td>5.725637e+03</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>1.392506e+00</td>\n",
              "      <td>6.553500e+04</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>icmp.seq_le__min_max_product</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>4.044860e+08</td>\n",
              "      <td>7.997946e+08</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>4.208200e+08</td>\n",
              "      <td>4.292346e+09</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>icmp.seq_le__mean_square</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>5.060544e+08</td>\n",
              "      <td>8.751431e+08</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>7.552081e+08</td>\n",
              "      <td>4.292386e+09</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-68283cff-b565-4e24-82d1-d3dc890080ec')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-68283cff-b565-4e24-82d1-d3dc890080ec button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-68283cff-b565-4e24-82d1-d3dc890080ec');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "<div id=\"df-4118a355-3d24-490e-93d2-9c3d0944dcaa\">\n",
              "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-4118a355-3d24-490e-93d2-9c3d0944dcaa')\"\n",
              "            title=\"Suggest charts\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "  </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "  <script>\n",
              "    async function quickchart(key) {\n",
              "      const quickchartButtonEl =\n",
              "        document.querySelector('#' + key + ' button');\n",
              "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "      try {\n",
              "        const charts = await google.colab.kernel.invokeFunction(\n",
              "            'suggestCharts', [key], {});\n",
              "      } catch (error) {\n",
              "        console.error('Error during call to suggestCharts:', error);\n",
              "      }\n",
              "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "    }\n",
              "    (() => {\n",
              "      let quickchartButtonEl =\n",
              "        document.querySelector('#df-4118a355-3d24-490e-93d2-9c3d0944dcaa button');\n",
              "      quickchartButtonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "    })();\n",
              "  </script>\n",
              "</div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "                                  count          mean           std  min  25%  \\\n",
              "icmp.checksum__min              65006.0  6.474953e+03  1.228444e+04  0.0  0.0   \n",
              "icmp.checksum__max              65006.0  2.670351e+04  2.778156e+04  0.0  0.0   \n",
              "icmp.checksum__sum              65006.0  3.181234e+05  3.578485e+05  0.0  0.0   \n",
              "icmp.checksum__mean             65006.0  1.590617e+04  1.789243e+04  0.0  0.0   \n",
              "icmp.checksum__min_max_diff     65006.0  2.022855e+04  2.473079e+04  0.0  0.0   \n",
              "icmp.checksum__min_max_ratio    65006.0  4.261391e+03  1.502969e+04  0.0  0.0   \n",
              "icmp.checksum__min_max_product  65006.0  3.284568e+08  6.744919e+08  0.0  0.0   \n",
              "icmp.checksum__mean_square      65006.0  5.731403e+08  8.028617e+08  0.0  0.0   \n",
              "icmp.seq_le__min                65006.0  8.484351e+03  1.491549e+04  0.0  0.0   \n",
              "icmp.seq_le__max                65006.0  1.731075e+04  2.374116e+04  0.0  0.0   \n",
              "icmp.seq_le__sum                65006.0  2.597109e+05  3.673882e+05  0.0  0.0   \n",
              "icmp.seq_le__mean               65006.0  1.298554e+04  1.836941e+04  0.0  0.0   \n",
              "icmp.seq_le__min_max_diff       65006.0  8.826396e+03  1.645830e+04  0.0  0.0   \n",
              "icmp.seq_le__min_max_ratio      65006.0  6.784412e+02  5.725637e+03  0.0  0.0   \n",
              "icmp.seq_le__min_max_product    65006.0  4.044860e+08  7.997946e+08  0.0  0.0   \n",
              "icmp.seq_le__mean_square        65006.0  5.060544e+08  8.751431e+08  0.0  0.0   \n",
              "\n",
              "                                         50%           75%           max  \n",
              "icmp.checksum__min              0.000000e+00  6.961500e+03  6.217500e+04  \n",
              "icmp.checksum__max              1.644150e+04  5.752700e+04  6.553400e+04  \n",
              "icmp.checksum__sum              1.303420e+05  6.337745e+05  1.270498e+06  \n",
              "icmp.checksum__mean             6.517100e+03  3.168872e+04  6.352490e+04  \n",
              "icmp.checksum__min_max_diff     5.120000e+03  4.483475e+04  6.553400e+04  \n",
              "icmp.checksum__min_max_ratio    1.137776e+00  8.144153e+00  6.553400e+04  \n",
              "icmp.checksum__min_max_product  0.000000e+00  3.027292e+08  4.056732e+09  \n",
              "icmp.checksum__mean_square      4.247259e+07  1.004175e+09  4.035413e+09  \n",
              "icmp.seq_le__min                0.000000e+00  1.175750e+04  6.550500e+04  \n",
              "icmp.seq_le__max                0.000000e+00  4.031350e+04  6.553500e+04  \n",
              "icmp.seq_le__sum                0.000000e+00  5.496210e+05  1.310326e+06  \n",
              "icmp.seq_le__mean               0.000000e+00  2.748105e+04  6.551630e+04  \n",
              "icmp.seq_le__min_max_diff       0.000000e+00  1.046575e+04  6.553500e+04  \n",
              "icmp.seq_le__min_max_ratio      0.000000e+00  1.392506e+00  6.553500e+04  \n",
              "icmp.seq_le__min_max_product    0.000000e+00  4.208200e+08  4.292346e+09  \n",
              "icmp.seq_le__mean_square        0.000000e+00  7.552081e+08  4.292386e+09  "
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module ip...\n"
          ]
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"    display(df_sample_module_features\",\n  \"rows\": 4,\n  \"fields\": [\n    {\n      \"column\": \"count\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": 65006.0,\n        \"max\": 65006.0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          65006.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"mean\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 2.8665714799062143,\n        \"min\": 1.007476232963111,\n        \"max\": 6.899086238193398,\n        \"num_unique_values\": 4,\n        \"samples\": [\n          6.899086238193398\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"std\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 3.546380685298572,\n        \"min\": 0.10829503232510171,\n        \"max\": 7.11375588139761,\n        \"num_unique_values\": 4,\n        \"samples\": [\n          7.11375588139761\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"min\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": 1.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          1.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"25%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": 1.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          1.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"50%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.9574271077563381,\n        \"min\": 1.0,\n        \"max\": 3.0,\n        \"num_unique_values\": 3,\n        \"samples\": [\n          2.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"75%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 5.188127472091127,\n        \"min\": 1.0,\n        \"max\": 12.0,\n        \"num_unique_values\": 3,\n        \"samples\": [\n          5.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"max\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 7.54983443527075,\n        \"min\": 6.0,\n        \"max\": 20.0,\n        \"num_unique_values\": 3,\n        \"samples\": [\n          20.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-b4c4a475-27a5-4845-ac13-c3de344d6fb6\" class=\"colab-df-container\">\n",
              "    <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>count</th>\n",
              "      <th>mean</th>\n",
              "      <th>std</th>\n",
              "      <th>min</th>\n",
              "      <th>25%</th>\n",
              "      <th>50%</th>\n",
              "      <th>75%</th>\n",
              "      <th>max</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>ip.src_host__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>4.391733</td>\n",
              "      <td>5.046855</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>2.0</td>\n",
              "      <td>5.0</td>\n",
              "      <td>20.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>ip.dst_host__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>6.899086</td>\n",
              "      <td>7.113756</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>3.0</td>\n",
              "      <td>12.0</td>\n",
              "      <td>20.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>arp.dst.proto_ipv4__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.007938</td>\n",
              "      <td>0.120117</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>8.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>arp.src.proto_ipv4__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.007476</td>\n",
              "      <td>0.108295</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>6.0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-b4c4a475-27a5-4845-ac13-c3de344d6fb6')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-b4c4a475-27a5-4845-ac13-c3de344d6fb6 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-b4c4a475-27a5-4845-ac13-c3de344d6fb6');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "<div id=\"df-924c68d7-b492-4f68-841b-96df197e7e15\">\n",
              "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-924c68d7-b492-4f68-841b-96df197e7e15')\"\n",
              "            title=\"Suggest charts\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "  </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "  <script>\n",
              "    async function quickchart(key) {\n",
              "      const quickchartButtonEl =\n",
              "        document.querySelector('#' + key + ' button');\n",
              "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "      try {\n",
              "        const charts = await google.colab.kernel.invokeFunction(\n",
              "            'suggestCharts', [key], {});\n",
              "      } catch (error) {\n",
              "        console.error('Error during call to suggestCharts:', error);\n",
              "      }\n",
              "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "    }\n",
              "    (() => {\n",
              "      let quickchartButtonEl =\n",
              "        document.querySelector('#df-924c68d7-b492-4f68-841b-96df197e7e15 button');\n",
              "      quickchartButtonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "    })();\n",
              "  </script>\n",
              "</div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "                               count      mean       std  min  25%  50%   75%  \\\n",
              "ip.src_host__nunique         65006.0  4.391733  5.046855  1.0  1.0  2.0   5.0   \n",
              "ip.dst_host__nunique         65006.0  6.899086  7.113756  1.0  1.0  3.0  12.0   \n",
              "arp.dst.proto_ipv4__nunique  65006.0  1.007938  0.120117  1.0  1.0  1.0   1.0   \n",
              "arp.src.proto_ipv4__nunique  65006.0  1.007476  0.108295  1.0  1.0  1.0   1.0   \n",
              "\n",
              "                              max  \n",
              "ip.src_host__nunique         20.0  \n",
              "ip.dst_host__nunique         20.0  \n",
              "arp.dst.proto_ipv4__nunique   8.0  \n",
              "arp.src.proto_ipv4__nunique   6.0  "
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module udp...\n"
          ]
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"    display(df_sample_module_features\",\n  \"rows\": 11,\n  \"fields\": [\n    {\n      \"column\": \"count\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": 65006.0,\n        \"max\": 65006.0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          65006.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"mean\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.8362825162876915,\n        \"min\": -2.2981570931913977e-06,\n        \"max\": 2.0934529120388885,\n        \"num_unique_values\": 11,\n        \"samples\": [\n          0.003988695200443036\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"std\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 1.8645412547035467,\n        \"min\": 1.2166458116763711e-09,\n        \"max\": 4.383172740136579,\n        \"num_unique_values\": 11,\n        \"samples\": [\n          0.184345669006614\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"min\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.41456436573278665,\n        \"min\": -0.148948,\n        \"max\": 1.0,\n        \"num_unique_values\": 6,\n        \"samples\": [\n          1.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"25%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.40451991747794513,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"50%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.40451991747794513,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"75%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.40451991747794513,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"max\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 259.85918941547993,\n        \"min\": 0.0,\n        \"max\": 780.2254249509917,\n        \"num_unique_values\": 9,\n        \"samples\": [\n          186.2246894369564\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-d55ad56f-e67e-4c92-bf88-7b97b5256e0c\" class=\"colab-df-container\">\n",
              "    <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>count</th>\n",
              "      <th>mean</th>\n",
              "      <th>std</th>\n",
              "      <th>min</th>\n",
              "      <th>25%</th>\n",
              "      <th>50%</th>\n",
              "      <th>75%</th>\n",
              "      <th>max</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>udp.port__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>2.092499e+00</td>\n",
              "      <td>4.380707e+00</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>2.000000e+01</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>udp.stream__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>2.093453e+00</td>\n",
              "      <td>4.383173e+00</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>2.000000e+01</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>udp.time_delta__min</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>-2.298157e-06</td>\n",
              "      <td>5.841956e-04</td>\n",
              "      <td>-0.148948</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>udp.time_delta__max</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>4.033486e-02</td>\n",
              "      <td>1.228672e+00</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.862169e+02</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>udp.time_delta__sum</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>7.977390e-02</td>\n",
              "      <td>3.686913e+00</td>\n",
              "      <td>-0.000092</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>5.586503e+02</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>udp.time_delta__mean</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>3.988695e-03</td>\n",
              "      <td>1.843457e-01</td>\n",
              "      <td>-0.000005</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>2.793252e+01</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>udp.time_delta__calculate_duration</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>3.819647e-11</td>\n",
              "      <td>1.216646e-09</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.860000e-07</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>udp.time_delta__min_max_diff</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>4.033716e-02</td>\n",
              "      <td>1.228672e+00</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.862169e+02</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>udp.time_delta__min_max_ratio</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>4.033539e-02</td>\n",
              "      <td>1.228690e+00</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.862247e+02</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>udp.time_delta__min_max_product</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>-4.729072e-07</td>\n",
              "      <td>9.222459e-05</td>\n",
              "      <td>-0.022172</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>udp.time_delta__mean_square</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>3.399871e-02</td>\n",
              "      <td>3.941079e+00</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>7.802254e+02</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-d55ad56f-e67e-4c92-bf88-7b97b5256e0c')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-d55ad56f-e67e-4c92-bf88-7b97b5256e0c button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-d55ad56f-e67e-4c92-bf88-7b97b5256e0c');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "<div id=\"df-0424f9bb-d098-4654-87b9-38537b01fcc7\">\n",
              "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-0424f9bb-d098-4654-87b9-38537b01fcc7')\"\n",
              "            title=\"Suggest charts\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "  </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "  <script>\n",
              "    async function quickchart(key) {\n",
              "      const quickchartButtonEl =\n",
              "        document.querySelector('#' + key + ' button');\n",
              "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "      try {\n",
              "        const charts = await google.colab.kernel.invokeFunction(\n",
              "            'suggestCharts', [key], {});\n",
              "      } catch (error) {\n",
              "        console.error('Error during call to suggestCharts:', error);\n",
              "      }\n",
              "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "    }\n",
              "    (() => {\n",
              "      let quickchartButtonEl =\n",
              "        document.querySelector('#df-0424f9bb-d098-4654-87b9-38537b01fcc7 button');\n",
              "      quickchartButtonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "    })();\n",
              "  </script>\n",
              "</div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "                                      count          mean           std  \\\n",
              "udp.port__nunique                   65006.0  2.092499e+00  4.380707e+00   \n",
              "udp.stream__nunique                 65006.0  2.093453e+00  4.383173e+00   \n",
              "udp.time_delta__min                 65006.0 -2.298157e-06  5.841956e-04   \n",
              "udp.time_delta__max                 65006.0  4.033486e-02  1.228672e+00   \n",
              "udp.time_delta__sum                 65006.0  7.977390e-02  3.686913e+00   \n",
              "udp.time_delta__mean                65006.0  3.988695e-03  1.843457e-01   \n",
              "udp.time_delta__calculate_duration  65006.0  3.819647e-11  1.216646e-09   \n",
              "udp.time_delta__min_max_diff        65006.0  4.033716e-02  1.228672e+00   \n",
              "udp.time_delta__min_max_ratio       65006.0  4.033539e-02  1.228690e+00   \n",
              "udp.time_delta__min_max_product     65006.0 -4.729072e-07  9.222459e-05   \n",
              "udp.time_delta__mean_square         65006.0  3.399871e-02  3.941079e+00   \n",
              "\n",
              "                                         min  25%  50%  75%           max  \n",
              "udp.port__nunique                   1.000000  1.0  1.0  1.0  2.000000e+01  \n",
              "udp.stream__nunique                 1.000000  1.0  1.0  1.0  2.000000e+01  \n",
              "udp.time_delta__min                -0.148948  0.0  0.0  0.0  0.000000e+00  \n",
              "udp.time_delta__max                 0.000000  0.0  0.0  0.0  1.862169e+02  \n",
              "udp.time_delta__sum                -0.000092  0.0  0.0  0.0  5.586503e+02  \n",
              "udp.time_delta__mean               -0.000005  0.0  0.0  0.0  2.793252e+01  \n",
              "udp.time_delta__calculate_duration  0.000000  0.0  0.0  0.0  1.860000e-07  \n",
              "udp.time_delta__min_max_diff        0.000000  0.0  0.0  0.0  1.862169e+02  \n",
              "udp.time_delta__min_max_ratio       0.000000  0.0  0.0  0.0  1.862247e+02  \n",
              "udp.time_delta__min_max_product    -0.022172  0.0  0.0  0.0  0.000000e+00  \n",
              "udp.time_delta__mean_square         0.000000  0.0  0.0  0.0  7.802254e+02  "
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module dns...\n"
          ]
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"    display(df_sample_module_features\",\n  \"rows\": 42,\n  \"fields\": [\n    {\n      \"column\": \"count\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": 65006.0,\n        \"max\": 65006.0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          65006.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"mean\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 27696.50099038558,\n        \"min\": 0.0,\n        \"max\": 179503.46295884228,\n        \"num_unique_values\": 23,\n        \"samples\": [\n          0.0016767682983109251\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"std\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 3018219.5730102137,\n        \"min\": 0.0,\n        \"max\": 19560663.49873833,\n        \"num_unique_values\": 23,\n        \"samples\": [\n          0.04091433120047596\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"min\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.215540268704521,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"25%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.215540268704521,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"50%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.215540268704521,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"75%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.215540268704521,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"max\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 601955835.4470003,\n        \"min\": 0.0,\n        \"max\": 3901157910.5625,\n        \"num_unique_values\": 17,\n        \"samples\": [\n          16.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-c233163d-8944-4d70-8f10-eec356f36727\" class=\"colab-df-container\">\n",
              "    <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>count</th>\n",
              "      <th>mean</th>\n",
              "      <th>std</th>\n",
              "      <th>min</th>\n",
              "      <th>25%</th>\n",
              "      <th>50%</th>\n",
              "      <th>75%</th>\n",
              "      <th>max</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>dns.qry.name__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.013183</td>\n",
              "      <td>2.165274e-01</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.600000e+01</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.qry.name.len__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.012460</td>\n",
              "      <td>1.855443e-01</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.300000e+01</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.qry.qu__min</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.qry.qu__max</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.006184</td>\n",
              "      <td>2.873513e-01</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>2.300000e+01</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.qry.qu__sum</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.014353</td>\n",
              "      <td>9.484815e-01</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.580000e+02</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.qry.qu__mean</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000718</td>\n",
              "      <td>4.742407e-02</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>7.900000e+00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.qry.qu__min_max_diff</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.006184</td>\n",
              "      <td>2.873513e-01</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>2.300000e+01</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.qry.qu__min_max_ratio</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.006184</td>\n",
              "      <td>2.873513e-01</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>2.300000e+01</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.qry.qu__min_max_product</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.qry.qu__mean_square</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.002250</td>\n",
              "      <td>3.084612e-01</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>6.241000e+01</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.qry.type__min</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.qry.type__max</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.013922</td>\n",
              "      <td>3.002550e-01</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>2.300000e+01</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.qry.type__sum</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.034520</td>\n",
              "      <td>1.014020e+00</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.620000e+02</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.qry.type__mean</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.001726</td>\n",
              "      <td>5.070101e-02</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>8.100000e+00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.qry.type__min_max_diff</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.013922</td>\n",
              "      <td>3.002550e-01</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>2.300000e+01</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.qry.type__min_max_ratio</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.013922</td>\n",
              "      <td>3.002550e-01</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>2.300000e+01</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.qry.type__min_max_product</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.qry.type__mean_square</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.002574</td>\n",
              "      <td>3.187479e-01</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>6.561000e+01</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmission__min</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmission__max</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.001892</td>\n",
              "      <td>4.345782e-02</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.000000e+00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmission__sum</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.004292</td>\n",
              "      <td>1.434573e-01</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.600000e+01</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmission__mean</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000215</td>\n",
              "      <td>7.172865e-03</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>8.000000e-01</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmission__min_max_diff</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.001892</td>\n",
              "      <td>4.345782e-02</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.000000e+00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmission__min_max_ratio</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.001892</td>\n",
              "      <td>4.345782e-02</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.000000e+00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmission__min_max_product</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmission__mean_square</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000051</td>\n",
              "      <td>4.074099e-03</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>6.400000e-01</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmit_request__min</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmit_request__max</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.001677</td>\n",
              "      <td>4.091433e-02</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.000000e+00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmit_request__sum</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.003707</td>\n",
              "      <td>1.366643e-01</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.600000e+01</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmit_request__mean</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000185</td>\n",
              "      <td>6.833214e-03</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>8.000000e-01</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmit_request__min_max_diff</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.001677</td>\n",
              "      <td>4.091433e-02</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.000000e+00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmit_request__min_max_ratio</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.001677</td>\n",
              "      <td>4.091433e-02</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.000000e+00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmit_request__min_max_product</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmit_request__mean_square</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000047</td>\n",
              "      <td>4.048542e-03</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>6.400000e-01</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmit_request_in__min</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmit_request_in__max</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>70.710611</td>\n",
              "      <td>2.050714e+03</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>8.776600e+04</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmit_request_in__sum</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>176.330262</td>\n",
              "      <td>8.471800e+03</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.249185e+06</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmit_request_in__mean</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>8.816513</td>\n",
              "      <td>4.235900e+02</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>6.245925e+04</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmit_request_in__min_max_diff</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>70.710611</td>\n",
              "      <td>2.050714e+03</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>8.776600e+04</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmit_request_in__min_max_ratio</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>70.710611</td>\n",
              "      <td>2.050714e+03</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>8.776600e+04</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmit_request_in__min_max_product</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>dns.retransmit_request_in__mean_square</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>179503.462959</td>\n",
              "      <td>1.956066e+07</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>3.901158e+09</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-c233163d-8944-4d70-8f10-eec356f36727')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-c233163d-8944-4d70-8f10-eec356f36727 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-c233163d-8944-4d70-8f10-eec356f36727');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "<div id=\"df-61a1a549-8ead-4685-95e8-029f071805f5\">\n",
              "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-61a1a549-8ead-4685-95e8-029f071805f5')\"\n",
              "            title=\"Suggest charts\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "  </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "  <script>\n",
              "    async function quickchart(key) {\n",
              "      const quickchartButtonEl =\n",
              "        document.querySelector('#' + key + ' button');\n",
              "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "      try {\n",
              "        const charts = await google.colab.kernel.invokeFunction(\n",
              "            'suggestCharts', [key], {});\n",
              "      } catch (error) {\n",
              "        console.error('Error during call to suggestCharts:', error);\n",
              "      }\n",
              "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "    }\n",
              "    (() => {\n",
              "      let quickchartButtonEl =\n",
              "        document.querySelector('#df-61a1a549-8ead-4685-95e8-029f071805f5 button');\n",
              "      quickchartButtonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "    })();\n",
              "  </script>\n",
              "</div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "                                              count           mean  \\\n",
              "dns.qry.name__nunique                       65006.0       1.013183   \n",
              "dns.qry.name.len__nunique                   65006.0       1.012460   \n",
              "dns.qry.qu__min                             65006.0       0.000000   \n",
              "dns.qry.qu__max                             65006.0       0.006184   \n",
              "dns.qry.qu__sum                             65006.0       0.014353   \n",
              "dns.qry.qu__mean                            65006.0       0.000718   \n",
              "dns.qry.qu__min_max_diff                    65006.0       0.006184   \n",
              "dns.qry.qu__min_max_ratio                   65006.0       0.006184   \n",
              "dns.qry.qu__min_max_product                 65006.0       0.000000   \n",
              "dns.qry.qu__mean_square                     65006.0       0.002250   \n",
              "dns.qry.type__min                           65006.0       0.000000   \n",
              "dns.qry.type__max                           65006.0       0.013922   \n",
              "dns.qry.type__sum                           65006.0       0.034520   \n",
              "dns.qry.type__mean                          65006.0       0.001726   \n",
              "dns.qry.type__min_max_diff                  65006.0       0.013922   \n",
              "dns.qry.type__min_max_ratio                 65006.0       0.013922   \n",
              "dns.qry.type__min_max_product               65006.0       0.000000   \n",
              "dns.qry.type__mean_square                   65006.0       0.002574   \n",
              "dns.retransmission__min                     65006.0       0.000000   \n",
              "dns.retransmission__max                     65006.0       0.001892   \n",
              "dns.retransmission__sum                     65006.0       0.004292   \n",
              "dns.retransmission__mean                    65006.0       0.000215   \n",
              "dns.retransmission__min_max_diff            65006.0       0.001892   \n",
              "dns.retransmission__min_max_ratio           65006.0       0.001892   \n",
              "dns.retransmission__min_max_product         65006.0       0.000000   \n",
              "dns.retransmission__mean_square             65006.0       0.000051   \n",
              "dns.retransmit_request__min                 65006.0       0.000000   \n",
              "dns.retransmit_request__max                 65006.0       0.001677   \n",
              "dns.retransmit_request__sum                 65006.0       0.003707   \n",
              "dns.retransmit_request__mean                65006.0       0.000185   \n",
              "dns.retransmit_request__min_max_diff        65006.0       0.001677   \n",
              "dns.retransmit_request__min_max_ratio       65006.0       0.001677   \n",
              "dns.retransmit_request__min_max_product     65006.0       0.000000   \n",
              "dns.retransmit_request__mean_square         65006.0       0.000047   \n",
              "dns.retransmit_request_in__min              65006.0       0.000000   \n",
              "dns.retransmit_request_in__max              65006.0      70.710611   \n",
              "dns.retransmit_request_in__sum              65006.0     176.330262   \n",
              "dns.retransmit_request_in__mean             65006.0       8.816513   \n",
              "dns.retransmit_request_in__min_max_diff     65006.0      70.710611   \n",
              "dns.retransmit_request_in__min_max_ratio    65006.0      70.710611   \n",
              "dns.retransmit_request_in__min_max_product  65006.0       0.000000   \n",
              "dns.retransmit_request_in__mean_square      65006.0  179503.462959   \n",
              "\n",
              "                                                     std  min  25%  50%  75%  \\\n",
              "dns.qry.name__nunique                       2.165274e-01  1.0  1.0  1.0  1.0   \n",
              "dns.qry.name.len__nunique                   1.855443e-01  1.0  1.0  1.0  1.0   \n",
              "dns.qry.qu__min                             0.000000e+00  0.0  0.0  0.0  0.0   \n",
              "dns.qry.qu__max                             2.873513e-01  0.0  0.0  0.0  0.0   \n",
              "dns.qry.qu__sum                             9.484815e-01  0.0  0.0  0.0  0.0   \n",
              "dns.qry.qu__mean                            4.742407e-02  0.0  0.0  0.0  0.0   \n",
              "dns.qry.qu__min_max_diff                    2.873513e-01  0.0  0.0  0.0  0.0   \n",
              "dns.qry.qu__min_max_ratio                   2.873513e-01  0.0  0.0  0.0  0.0   \n",
              "dns.qry.qu__min_max_product                 0.000000e+00  0.0  0.0  0.0  0.0   \n",
              "dns.qry.qu__mean_square                     3.084612e-01  0.0  0.0  0.0  0.0   \n",
              "dns.qry.type__min                           0.000000e+00  0.0  0.0  0.0  0.0   \n",
              "dns.qry.type__max                           3.002550e-01  0.0  0.0  0.0  0.0   \n",
              "dns.qry.type__sum                           1.014020e+00  0.0  0.0  0.0  0.0   \n",
              "dns.qry.type__mean                          5.070101e-02  0.0  0.0  0.0  0.0   \n",
              "dns.qry.type__min_max_diff                  3.002550e-01  0.0  0.0  0.0  0.0   \n",
              "dns.qry.type__min_max_ratio                 3.002550e-01  0.0  0.0  0.0  0.0   \n",
              "dns.qry.type__min_max_product               0.000000e+00  0.0  0.0  0.0  0.0   \n",
              "dns.qry.type__mean_square                   3.187479e-01  0.0  0.0  0.0  0.0   \n",
              "dns.retransmission__min                     0.000000e+00  0.0  0.0  0.0  0.0   \n",
              "dns.retransmission__max                     4.345782e-02  0.0  0.0  0.0  0.0   \n",
              "dns.retransmission__sum                     1.434573e-01  0.0  0.0  0.0  0.0   \n",
              "dns.retransmission__mean                    7.172865e-03  0.0  0.0  0.0  0.0   \n",
              "dns.retransmission__min_max_diff            4.345782e-02  0.0  0.0  0.0  0.0   \n",
              "dns.retransmission__min_max_ratio           4.345782e-02  0.0  0.0  0.0  0.0   \n",
              "dns.retransmission__min_max_product         0.000000e+00  0.0  0.0  0.0  0.0   \n",
              "dns.retransmission__mean_square             4.074099e-03  0.0  0.0  0.0  0.0   \n",
              "dns.retransmit_request__min                 0.000000e+00  0.0  0.0  0.0  0.0   \n",
              "dns.retransmit_request__max                 4.091433e-02  0.0  0.0  0.0  0.0   \n",
              "dns.retransmit_request__sum                 1.366643e-01  0.0  0.0  0.0  0.0   \n",
              "dns.retransmit_request__mean                6.833214e-03  0.0  0.0  0.0  0.0   \n",
              "dns.retransmit_request__min_max_diff        4.091433e-02  0.0  0.0  0.0  0.0   \n",
              "dns.retransmit_request__min_max_ratio       4.091433e-02  0.0  0.0  0.0  0.0   \n",
              "dns.retransmit_request__min_max_product     0.000000e+00  0.0  0.0  0.0  0.0   \n",
              "dns.retransmit_request__mean_square         4.048542e-03  0.0  0.0  0.0  0.0   \n",
              "dns.retransmit_request_in__min              0.000000e+00  0.0  0.0  0.0  0.0   \n",
              "dns.retransmit_request_in__max              2.050714e+03  0.0  0.0  0.0  0.0   \n",
              "dns.retransmit_request_in__sum              8.471800e+03  0.0  0.0  0.0  0.0   \n",
              "dns.retransmit_request_in__mean             4.235900e+02  0.0  0.0  0.0  0.0   \n",
              "dns.retransmit_request_in__min_max_diff     2.050714e+03  0.0  0.0  0.0  0.0   \n",
              "dns.retransmit_request_in__min_max_ratio    2.050714e+03  0.0  0.0  0.0  0.0   \n",
              "dns.retransmit_request_in__min_max_product  0.000000e+00  0.0  0.0  0.0  0.0   \n",
              "dns.retransmit_request_in__mean_square      1.956066e+07  0.0  0.0  0.0  0.0   \n",
              "\n",
              "                                                     max  \n",
              "dns.qry.name__nunique                       1.600000e+01  \n",
              "dns.qry.name.len__nunique                   1.300000e+01  \n",
              "dns.qry.qu__min                             0.000000e+00  \n",
              "dns.qry.qu__max                             2.300000e+01  \n",
              "dns.qry.qu__sum                             1.580000e+02  \n",
              "dns.qry.qu__mean                            7.900000e+00  \n",
              "dns.qry.qu__min_max_diff                    2.300000e+01  \n",
              "dns.qry.qu__min_max_ratio                   2.300000e+01  \n",
              "dns.qry.qu__min_max_product                 0.000000e+00  \n",
              "dns.qry.qu__mean_square                     6.241000e+01  \n",
              "dns.qry.type__min                           0.000000e+00  \n",
              "dns.qry.type__max                           2.300000e+01  \n",
              "dns.qry.type__sum                           1.620000e+02  \n",
              "dns.qry.type__mean                          8.100000e+00  \n",
              "dns.qry.type__min_max_diff                  2.300000e+01  \n",
              "dns.qry.type__min_max_ratio                 2.300000e+01  \n",
              "dns.qry.type__min_max_product               0.000000e+00  \n",
              "dns.qry.type__mean_square                   6.561000e+01  \n",
              "dns.retransmission__min                     0.000000e+00  \n",
              "dns.retransmission__max                     1.000000e+00  \n",
              "dns.retransmission__sum                     1.600000e+01  \n",
              "dns.retransmission__mean                    8.000000e-01  \n",
              "dns.retransmission__min_max_diff            1.000000e+00  \n",
              "dns.retransmission__min_max_ratio           1.000000e+00  \n",
              "dns.retransmission__min_max_product         0.000000e+00  \n",
              "dns.retransmission__mean_square             6.400000e-01  \n",
              "dns.retransmit_request__min                 0.000000e+00  \n",
              "dns.retransmit_request__max                 1.000000e+00  \n",
              "dns.retransmit_request__sum                 1.600000e+01  \n",
              "dns.retransmit_request__mean                8.000000e-01  \n",
              "dns.retransmit_request__min_max_diff        1.000000e+00  \n",
              "dns.retransmit_request__min_max_ratio       1.000000e+00  \n",
              "dns.retransmit_request__min_max_product     0.000000e+00  \n",
              "dns.retransmit_request__mean_square         6.400000e-01  \n",
              "dns.retransmit_request_in__min              0.000000e+00  \n",
              "dns.retransmit_request_in__max              8.776600e+04  \n",
              "dns.retransmit_request_in__sum              1.249185e+06  \n",
              "dns.retransmit_request_in__mean             6.245925e+04  \n",
              "dns.retransmit_request_in__min_max_diff     8.776600e+04  \n",
              "dns.retransmit_request_in__min_max_ratio    8.776600e+04  \n",
              "dns.retransmit_request_in__min_max_product  0.000000e+00  \n",
              "dns.retransmit_request_in__mean_square      3.901158e+09  "
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module http...\n"
          ]
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"    display(df_sample_module_features\",\n  \"rows\": 21,\n  \"fields\": [\n    {\n      \"column\": \"count\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": 65006.0,\n        \"max\": 65006.0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          65006.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"mean\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 113.3583128438472,\n        \"min\": 0.0,\n        \"max\": 522.572002045965,\n        \"num_unique_values\": 14,\n        \"samples\": [\n          1.144048241700766\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"std\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 1385.3872909685872,\n        \"min\": 0.0,\n        \"max\": 6382.873014990903,\n        \"num_unique_values\": 14,\n        \"samples\": [\n          0.3511413426463097\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"min\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.4364357804719847,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"25%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.4364357804719847,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"50%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.4364357804719847,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"75%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.4364357804719847,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"max\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 58953.453981291146,\n        \"min\": 0.0,\n        \"max\": 271597.32249999995,\n        \"num_unique_values\": 12,\n        \"samples\": [\n          0.45\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-0af7ef11-abcb-43d2-935c-0a4e21120c25\" class=\"colab-df-container\">\n",
              "    <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>count</th>\n",
              "      <th>mean</th>\n",
              "      <th>std</th>\n",
              "      <th>min</th>\n",
              "      <th>25%</th>\n",
              "      <th>50%</th>\n",
              "      <th>75%</th>\n",
              "      <th>max</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>http.file_data__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.114236</td>\n",
              "      <td>0.663389</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>10.0000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>http.content_length__min</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>http.content_length__max</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>26.225272</td>\n",
              "      <td>234.694439</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>10386.0000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>http.content_length__sum</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>51.880596</td>\n",
              "      <td>454.247046</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>10423.0000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>http.content_length__mean</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>2.594030</td>\n",
              "      <td>22.712352</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>521.1500</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>http.content_length__min_max_diff</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>26.225272</td>\n",
              "      <td>234.694439</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>10386.0000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>http.content_length__min_max_ratio</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>26.225272</td>\n",
              "      <td>234.694439</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>10386.0000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>http.content_length__min_max_product</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>http.content_length__mean_square</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>522.572002</td>\n",
              "      <td>6382.873015</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>271597.3225</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>http.request.uri.query__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.095376</td>\n",
              "      <td>0.575460</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>9.0000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>http.request.method__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.151340</td>\n",
              "      <td>0.378182</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>3.0000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>http.request.full_uri__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.195536</td>\n",
              "      <td>0.636016</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>9.0000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>http.request.version__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.144048</td>\n",
              "      <td>0.351141</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>2.0000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>http.response__min</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>http.response__max</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.044196</td>\n",
              "      <td>0.205532</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.0000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>http.response__sum</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.101037</td>\n",
              "      <td>0.614348</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>9.0000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>http.response__mean</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.005052</td>\n",
              "      <td>0.030717</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.4500</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>http.response__min_max_diff</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.044196</td>\n",
              "      <td>0.205532</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.0000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>http.response__min_max_ratio</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.044196</td>\n",
              "      <td>0.205532</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.0000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>http.response__min_max_product</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>http.response__mean_square</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000969</td>\n",
              "      <td>0.008329</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.2025</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-0af7ef11-abcb-43d2-935c-0a4e21120c25')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-0af7ef11-abcb-43d2-935c-0a4e21120c25 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-0af7ef11-abcb-43d2-935c-0a4e21120c25');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "<div id=\"df-785bcc06-8b0e-4d3b-8e6f-68d1afe0aad0\">\n",
              "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-785bcc06-8b0e-4d3b-8e6f-68d1afe0aad0')\"\n",
              "            title=\"Suggest charts\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "  </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "  <script>\n",
              "    async function quickchart(key) {\n",
              "      const quickchartButtonEl =\n",
              "        document.querySelector('#' + key + ' button');\n",
              "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "      try {\n",
              "        const charts = await google.colab.kernel.invokeFunction(\n",
              "            'suggestCharts', [key], {});\n",
              "      } catch (error) {\n",
              "        console.error('Error during call to suggestCharts:', error);\n",
              "      }\n",
              "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "    }\n",
              "    (() => {\n",
              "      let quickchartButtonEl =\n",
              "        document.querySelector('#df-785bcc06-8b0e-4d3b-8e6f-68d1afe0aad0 button');\n",
              "      quickchartButtonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "    })();\n",
              "  </script>\n",
              "</div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "                                        count        mean          std  min  \\\n",
              "http.file_data__nunique               65006.0    1.114236     0.663389  1.0   \n",
              "http.content_length__min              65006.0    0.000000     0.000000  0.0   \n",
              "http.content_length__max              65006.0   26.225272   234.694439  0.0   \n",
              "http.content_length__sum              65006.0   51.880596   454.247046  0.0   \n",
              "http.content_length__mean             65006.0    2.594030    22.712352  0.0   \n",
              "http.content_length__min_max_diff     65006.0   26.225272   234.694439  0.0   \n",
              "http.content_length__min_max_ratio    65006.0   26.225272   234.694439  0.0   \n",
              "http.content_length__min_max_product  65006.0    0.000000     0.000000  0.0   \n",
              "http.content_length__mean_square      65006.0  522.572002  6382.873015  0.0   \n",
              "http.request.uri.query__nunique       65006.0    1.095376     0.575460  1.0   \n",
              "http.request.method__nunique          65006.0    1.151340     0.378182  1.0   \n",
              "http.request.full_uri__nunique        65006.0    1.195536     0.636016  1.0   \n",
              "http.request.version__nunique         65006.0    1.144048     0.351141  1.0   \n",
              "http.response__min                    65006.0    0.000000     0.000000  0.0   \n",
              "http.response__max                    65006.0    0.044196     0.205532  0.0   \n",
              "http.response__sum                    65006.0    0.101037     0.614348  0.0   \n",
              "http.response__mean                   65006.0    0.005052     0.030717  0.0   \n",
              "http.response__min_max_diff           65006.0    0.044196     0.205532  0.0   \n",
              "http.response__min_max_ratio          65006.0    0.044196     0.205532  0.0   \n",
              "http.response__min_max_product        65006.0    0.000000     0.000000  0.0   \n",
              "http.response__mean_square            65006.0    0.000969     0.008329  0.0   \n",
              "\n",
              "                                      25%  50%  75%          max  \n",
              "http.file_data__nunique               1.0  1.0  1.0      10.0000  \n",
              "http.content_length__min              0.0  0.0  0.0       0.0000  \n",
              "http.content_length__max              0.0  0.0  0.0   10386.0000  \n",
              "http.content_length__sum              0.0  0.0  0.0   10423.0000  \n",
              "http.content_length__mean             0.0  0.0  0.0     521.1500  \n",
              "http.content_length__min_max_diff     0.0  0.0  0.0   10386.0000  \n",
              "http.content_length__min_max_ratio    0.0  0.0  0.0   10386.0000  \n",
              "http.content_length__min_max_product  0.0  0.0  0.0       0.0000  \n",
              "http.content_length__mean_square      0.0  0.0  0.0  271597.3225  \n",
              "http.request.uri.query__nunique       1.0  1.0  1.0       9.0000  \n",
              "http.request.method__nunique          1.0  1.0  1.0       3.0000  \n",
              "http.request.full_uri__nunique        1.0  1.0  1.0       9.0000  \n",
              "http.request.version__nunique         1.0  1.0  1.0       2.0000  \n",
              "http.response__min                    0.0  0.0  0.0       0.0000  \n",
              "http.response__max                    0.0  0.0  0.0       1.0000  \n",
              "http.response__sum                    0.0  0.0  0.0       9.0000  \n",
              "http.response__mean                   0.0  0.0  0.0       0.4500  \n",
              "http.response__min_max_diff           0.0  0.0  0.0       1.0000  \n",
              "http.response__min_max_ratio          0.0  0.0  0.0       1.0000  \n",
              "http.response__min_max_product        0.0  0.0  0.0       0.0000  \n",
              "http.response__mean_square            0.0  0.0  0.0       0.2025  "
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module arp...\n"
          ]
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"    display(df_sample_module_features\",\n  \"rows\": 18,\n  \"fields\": [\n    {\n      \"column\": \"count\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": 65006.0,\n        \"max\": 65006.0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          65006.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"mean\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.3222719375255834,\n        \"min\": 1.5383195397347938e-05,\n        \"max\": 1.0079377288250315,\n        \"num_unique_values\": 17,\n        \"samples\": [\n          1.0079377288250315\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"std\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.2445321403515611,\n        \"min\": 0.00392214168501728,\n        \"max\": 0.9556574346732293,\n        \"num_unique_values\": 17,\n        \"samples\": [\n          0.12011737791416952\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"min\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.32338083338177737,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"25%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.32338083338177737,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"50%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.32338083338177737,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"75%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.32338083338177737,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"max\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 28.528370193236643,\n        \"min\": 1.0,\n        \"max\": 120.0,\n        \"num_unique_values\": 9,\n        \"samples\": [\n          120.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-db1b9486-0cd2-43b2-8a66-9ba8ab4ce9f8\" class=\"colab-df-container\">\n",
              "    <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>count</th>\n",
              "      <th>mean</th>\n",
              "      <th>std</th>\n",
              "      <th>min</th>\n",
              "      <th>25%</th>\n",
              "      <th>50%</th>\n",
              "      <th>75%</th>\n",
              "      <th>max</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>arp.dst.proto_ipv4__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.007938</td>\n",
              "      <td>0.120117</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>8.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>arp.opcode__min</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000015</td>\n",
              "      <td>0.003922</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>arp.opcode__max</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.007738</td>\n",
              "      <td>0.107062</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>2.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>arp.opcode__sum</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.010907</td>\n",
              "      <td>0.210970</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>28.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>arp.opcode__mean</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000545</td>\n",
              "      <td>0.010549</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.40</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>arp.opcode__min_max_diff</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.007722</td>\n",
              "      <td>0.106848</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>2.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>arp.opcode__min_max_ratio</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.007722</td>\n",
              "      <td>0.106848</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>2.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>arp.opcode__min_max_product</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000031</td>\n",
              "      <td>0.007844</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>2.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>arp.opcode__mean_square</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000112</td>\n",
              "      <td>0.008629</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.96</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>arp.hw.size__min</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000092</td>\n",
              "      <td>0.023533</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>6.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>arp.hw.size__max</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.035074</td>\n",
              "      <td>0.457400</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>6.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>arp.hw.size__sum</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.052057</td>\n",
              "      <td>0.955657</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>120.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>arp.hw.size__mean</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.002603</td>\n",
              "      <td>0.047783</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>6.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>arp.hw.size__min_max_diff</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.034981</td>\n",
              "      <td>0.456802</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>6.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>arp.hw.size__min_max_ratio</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.034995</td>\n",
              "      <td>0.456813</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>6.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>arp.hw.size__min_max_product</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000554</td>\n",
              "      <td>0.141197</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>36.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>arp.hw.size__mean_square</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.002290</td>\n",
              "      <td>0.161972</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>36.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>arp.src.proto_ipv4__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.007476</td>\n",
              "      <td>0.108295</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>6.00</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-db1b9486-0cd2-43b2-8a66-9ba8ab4ce9f8')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-db1b9486-0cd2-43b2-8a66-9ba8ab4ce9f8 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-db1b9486-0cd2-43b2-8a66-9ba8ab4ce9f8');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "<div id=\"df-1d4b6dda-50f4-4e82-aae1-6143c3cb2229\">\n",
              "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-1d4b6dda-50f4-4e82-aae1-6143c3cb2229')\"\n",
              "            title=\"Suggest charts\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "  </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "  <script>\n",
              "    async function quickchart(key) {\n",
              "      const quickchartButtonEl =\n",
              "        document.querySelector('#' + key + ' button');\n",
              "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "      try {\n",
              "        const charts = await google.colab.kernel.invokeFunction(\n",
              "            'suggestCharts', [key], {});\n",
              "      } catch (error) {\n",
              "        console.error('Error during call to suggestCharts:', error);\n",
              "      }\n",
              "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "    }\n",
              "    (() => {\n",
              "      let quickchartButtonEl =\n",
              "        document.querySelector('#df-1d4b6dda-50f4-4e82-aae1-6143c3cb2229 button');\n",
              "      quickchartButtonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "    })();\n",
              "  </script>\n",
              "</div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "                                count      mean       std  min  25%  50%  75%  \\\n",
              "arp.dst.proto_ipv4__nunique   65006.0  1.007938  0.120117  1.0  1.0  1.0  1.0   \n",
              "arp.opcode__min               65006.0  0.000015  0.003922  0.0  0.0  0.0  0.0   \n",
              "arp.opcode__max               65006.0  0.007738  0.107062  0.0  0.0  0.0  0.0   \n",
              "arp.opcode__sum               65006.0  0.010907  0.210970  0.0  0.0  0.0  0.0   \n",
              "arp.opcode__mean              65006.0  0.000545  0.010549  0.0  0.0  0.0  0.0   \n",
              "arp.opcode__min_max_diff      65006.0  0.007722  0.106848  0.0  0.0  0.0  0.0   \n",
              "arp.opcode__min_max_ratio     65006.0  0.007722  0.106848  0.0  0.0  0.0  0.0   \n",
              "arp.opcode__min_max_product   65006.0  0.000031  0.007844  0.0  0.0  0.0  0.0   \n",
              "arp.opcode__mean_square       65006.0  0.000112  0.008629  0.0  0.0  0.0  0.0   \n",
              "arp.hw.size__min              65006.0  0.000092  0.023533  0.0  0.0  0.0  0.0   \n",
              "arp.hw.size__max              65006.0  0.035074  0.457400  0.0  0.0  0.0  0.0   \n",
              "arp.hw.size__sum              65006.0  0.052057  0.955657  0.0  0.0  0.0  0.0   \n",
              "arp.hw.size__mean             65006.0  0.002603  0.047783  0.0  0.0  0.0  0.0   \n",
              "arp.hw.size__min_max_diff     65006.0  0.034981  0.456802  0.0  0.0  0.0  0.0   \n",
              "arp.hw.size__min_max_ratio    65006.0  0.034995  0.456813  0.0  0.0  0.0  0.0   \n",
              "arp.hw.size__min_max_product  65006.0  0.000554  0.141197  0.0  0.0  0.0  0.0   \n",
              "arp.hw.size__mean_square      65006.0  0.002290  0.161972  0.0  0.0  0.0  0.0   \n",
              "arp.src.proto_ipv4__nunique   65006.0  1.007476  0.108295  1.0  1.0  1.0  1.0   \n",
              "\n",
              "                                 max  \n",
              "arp.dst.proto_ipv4__nunique     8.00  \n",
              "arp.opcode__min                 1.00  \n",
              "arp.opcode__max                 2.00  \n",
              "arp.opcode__sum                28.00  \n",
              "arp.opcode__mean                1.40  \n",
              "arp.opcode__min_max_diff        2.00  \n",
              "arp.opcode__min_max_ratio       2.00  \n",
              "arp.opcode__min_max_product     2.00  \n",
              "arp.opcode__mean_square         1.96  \n",
              "arp.hw.size__min                6.00  \n",
              "arp.hw.size__max                6.00  \n",
              "arp.hw.size__sum              120.00  \n",
              "arp.hw.size__mean               6.00  \n",
              "arp.hw.size__min_max_diff       6.00  \n",
              "arp.hw.size__min_max_ratio      6.00  \n",
              "arp.hw.size__min_max_product   36.00  \n",
              "arp.hw.size__mean_square       36.00  \n",
              "arp.src.proto_ipv4__nunique     6.00  "
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module mqtt...\n"
          ]
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"    display(df_sample_module_features\",\n  \"rows\": 54,\n  \"fields\": [\n    {\n      \"column\": \"count\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": 65006.0,\n        \"max\": 65006.0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          65006.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"mean\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 69.05384428673975,\n        \"min\": 0.0,\n        \"max\": 341.6198045180445,\n        \"num_unique_values\": 34,\n        \"samples\": [\n          0.7096883364612497\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"std\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 246.27805147087872,\n        \"min\": 0.0,\n        \"max\": 1098.7601519729892,\n        \"num_unique_values\": 34,\n        \"samples\": [\n          7.8694048261113485\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"min\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.3172206342872577,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          1.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"25%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.3172206342872577,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          1.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"50%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.3172206342872577,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          1.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"75%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.3172206342872577,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          1.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"max\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 2030.3803821443175,\n        \"min\": 0.0,\n        \"max\": 7744.0,\n        \"num_unique_values\": 20,\n        \"samples\": [\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-0e025c03-bf7a-417b-92b3-5e2a2be1fbe7\" class=\"colab-df-container\">\n",
              "    <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>count</th>\n",
              "      <th>mean</th>\n",
              "      <th>std</th>\n",
              "      <th>min</th>\n",
              "      <th>25%</th>\n",
              "      <th>50%</th>\n",
              "      <th>75%</th>\n",
              "      <th>max</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>mqtt.conflag.cleansess__min</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.conflag.cleansess__max</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.conflag.cleansess__sum</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.conflag.cleansess__mean</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.conflag.cleansess__min_max_diff</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.conflag.cleansess__min_max_ratio</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.conflag.cleansess__min_max_product</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.conflag.cleansess__mean_square</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.conflags__min</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.conflags__max</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>3.211150</td>\n",
              "      <td>24.751990</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>194.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.conflags__sum</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>3.408116</td>\n",
              "      <td>26.987206</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>582.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.conflags__mean</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.170406</td>\n",
              "      <td>1.349360</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>29.10</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.conflags__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.016552</td>\n",
              "      <td>0.127588</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>2.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.conflags__min_max_diff</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>3.211150</td>\n",
              "      <td>24.751990</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>194.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.conflags__min_max_ratio</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>3.211150</td>\n",
              "      <td>24.751990</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>194.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.conflags__min_max_product</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.conflags__mean_square</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.849783</td>\n",
              "      <td>17.075197</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>846.81</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.hdrflags__min</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.710088</td>\n",
              "      <td>7.871147</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>88.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.hdrflags__max</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>17.739270</td>\n",
              "      <td>34.043688</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>208.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.hdrflags__sum</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>138.947436</td>\n",
              "      <td>342.554137</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1760.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.hdrflags__mean</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>6.947372</td>\n",
              "      <td>17.127707</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>88.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.hdrflags__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.245024</td>\n",
              "      <td>0.512459</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>6.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.hdrflags__min_max_diff</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>17.029182</td>\n",
              "      <td>33.483480</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>208.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.hdrflags__min_max_ratio</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>17.036564</td>\n",
              "      <td>33.479475</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>208.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.hdrflags__min_max_product</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>62.487770</td>\n",
              "      <td>692.660976</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>7744.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.hdrflags__mean_square</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>341.619805</td>\n",
              "      <td>1098.639191</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>7744.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.len__min</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.709688</td>\n",
              "      <td>7.869405</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>88.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.len__max</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>16.844553</td>\n",
              "      <td>33.472261</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>88.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.len__sum</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>136.992293</td>\n",
              "      <td>342.781639</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1760.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.len__mean</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>6.849615</td>\n",
              "      <td>17.139082</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>88.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.len__min_max_diff</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>16.134864</td>\n",
              "      <td>32.883459</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>88.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.len__min_max_ratio</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>16.141878</td>\n",
              "      <td>32.879121</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>88.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.len__min_max_product</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>62.452574</td>\n",
              "      <td>692.507625</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>7744.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.len__mean_square</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>340.660831</td>\n",
              "      <td>1098.760152</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>7744.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.msg__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.059702</td>\n",
              "      <td>0.302473</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>5.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.msgtype__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.217765</td>\n",
              "      <td>0.414032</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>4.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.proto_len__min</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.proto_len__max</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.078024</td>\n",
              "      <td>3.054877</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>768.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.proto_len__sum</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.082085</td>\n",
              "      <td>3.062897</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>768.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.proto_len__mean</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.004104</td>\n",
              "      <td>0.153145</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>38.40</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.proto_len__min_max_diff</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.078024</td>\n",
              "      <td>3.054877</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>768.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.proto_len__min_max_ratio</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.078024</td>\n",
              "      <td>3.054877</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>768.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.proto_len__min_max_product</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.proto_len__mean_square</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.023470</td>\n",
              "      <td>5.783435</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1474.56</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.protoname__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.016552</td>\n",
              "      <td>0.127588</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>2.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.topic__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.056164</td>\n",
              "      <td>0.283970</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>5.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.topic_len__min</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.topic_len__max</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.626111</td>\n",
              "      <td>2.913838</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>16.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.topic_len__sum</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.962834</td>\n",
              "      <td>4.989302</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>70.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.topic_len__mean</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.048142</td>\n",
              "      <td>0.249465</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>3.50</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.topic_len__min_max_diff</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.626111</td>\n",
              "      <td>2.913838</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>16.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.topic_len__min_max_ratio</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.626111</td>\n",
              "      <td>2.913838</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>16.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.topic_len__min_max_product</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.00</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mqtt.topic_len__mean_square</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.064550</td>\n",
              "      <td>0.440597</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>12.25</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-0e025c03-bf7a-417b-92b3-5e2a2be1fbe7')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-0e025c03-bf7a-417b-92b3-5e2a2be1fbe7 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-0e025c03-bf7a-417b-92b3-5e2a2be1fbe7');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "<div id=\"df-3f0f8bac-f28a-4425-8e88-a4c1c21cd61b\">\n",
              "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-3f0f8bac-f28a-4425-8e88-a4c1c21cd61b')\"\n",
              "            title=\"Suggest charts\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "  </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "  <script>\n",
              "    async function quickchart(key) {\n",
              "      const quickchartButtonEl =\n",
              "        document.querySelector('#' + key + ' button');\n",
              "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "      try {\n",
              "        const charts = await google.colab.kernel.invokeFunction(\n",
              "            'suggestCharts', [key], {});\n",
              "      } catch (error) {\n",
              "        console.error('Error during call to suggestCharts:', error);\n",
              "      }\n",
              "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "    }\n",
              "    (() => {\n",
              "      let quickchartButtonEl =\n",
              "        document.querySelector('#df-3f0f8bac-f28a-4425-8e88-a4c1c21cd61b button');\n",
              "      quickchartButtonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "    })();\n",
              "  </script>\n",
              "</div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "                                           count        mean          std  \\\n",
              "mqtt.conflag.cleansess__min              65006.0    0.000000     0.000000   \n",
              "mqtt.conflag.cleansess__max              65006.0    0.000000     0.000000   \n",
              "mqtt.conflag.cleansess__sum              65006.0    0.000000     0.000000   \n",
              "mqtt.conflag.cleansess__mean             65006.0    0.000000     0.000000   \n",
              "mqtt.conflag.cleansess__min_max_diff     65006.0    0.000000     0.000000   \n",
              "mqtt.conflag.cleansess__min_max_ratio    65006.0    0.000000     0.000000   \n",
              "mqtt.conflag.cleansess__min_max_product  65006.0    0.000000     0.000000   \n",
              "mqtt.conflag.cleansess__mean_square      65006.0    0.000000     0.000000   \n",
              "mqtt.conflags__min                       65006.0    0.000000     0.000000   \n",
              "mqtt.conflags__max                       65006.0    3.211150    24.751990   \n",
              "mqtt.conflags__sum                       65006.0    3.408116    26.987206   \n",
              "mqtt.conflags__mean                      65006.0    0.170406     1.349360   \n",
              "mqtt.conflags__nunique                   65006.0    1.016552     0.127588   \n",
              "mqtt.conflags__min_max_diff              65006.0    3.211150    24.751990   \n",
              "mqtt.conflags__min_max_ratio             65006.0    3.211150    24.751990   \n",
              "mqtt.conflags__min_max_product           65006.0    0.000000     0.000000   \n",
              "mqtt.conflags__mean_square               65006.0    1.849783    17.075197   \n",
              "mqtt.hdrflags__min                       65006.0    0.710088     7.871147   \n",
              "mqtt.hdrflags__max                       65006.0   17.739270    34.043688   \n",
              "mqtt.hdrflags__sum                       65006.0  138.947436   342.554137   \n",
              "mqtt.hdrflags__mean                      65006.0    6.947372    17.127707   \n",
              "mqtt.hdrflags__nunique                   65006.0    1.245024     0.512459   \n",
              "mqtt.hdrflags__min_max_diff              65006.0   17.029182    33.483480   \n",
              "mqtt.hdrflags__min_max_ratio             65006.0   17.036564    33.479475   \n",
              "mqtt.hdrflags__min_max_product           65006.0   62.487770   692.660976   \n",
              "mqtt.hdrflags__mean_square               65006.0  341.619805  1098.639191   \n",
              "mqtt.len__min                            65006.0    0.709688     7.869405   \n",
              "mqtt.len__max                            65006.0   16.844553    33.472261   \n",
              "mqtt.len__sum                            65006.0  136.992293   342.781639   \n",
              "mqtt.len__mean                           65006.0    6.849615    17.139082   \n",
              "mqtt.len__min_max_diff                   65006.0   16.134864    32.883459   \n",
              "mqtt.len__min_max_ratio                  65006.0   16.141878    32.879121   \n",
              "mqtt.len__min_max_product                65006.0   62.452574   692.507625   \n",
              "mqtt.len__mean_square                    65006.0  340.660831  1098.760152   \n",
              "mqtt.msg__nunique                        65006.0    1.059702     0.302473   \n",
              "mqtt.msgtype__nunique                    65006.0    1.217765     0.414032   \n",
              "mqtt.proto_len__min                      65006.0    0.000000     0.000000   \n",
              "mqtt.proto_len__max                      65006.0    0.078024     3.054877   \n",
              "mqtt.proto_len__sum                      65006.0    0.082085     3.062897   \n",
              "mqtt.proto_len__mean                     65006.0    0.004104     0.153145   \n",
              "mqtt.proto_len__min_max_diff             65006.0    0.078024     3.054877   \n",
              "mqtt.proto_len__min_max_ratio            65006.0    0.078024     3.054877   \n",
              "mqtt.proto_len__min_max_product          65006.0    0.000000     0.000000   \n",
              "mqtt.proto_len__mean_square              65006.0    0.023470     5.783435   \n",
              "mqtt.protoname__nunique                  65006.0    1.016552     0.127588   \n",
              "mqtt.topic__nunique                      65006.0    1.056164     0.283970   \n",
              "mqtt.topic_len__min                      65006.0    0.000000     0.000000   \n",
              "mqtt.topic_len__max                      65006.0    0.626111     2.913838   \n",
              "mqtt.topic_len__sum                      65006.0    0.962834     4.989302   \n",
              "mqtt.topic_len__mean                     65006.0    0.048142     0.249465   \n",
              "mqtt.topic_len__min_max_diff             65006.0    0.626111     2.913838   \n",
              "mqtt.topic_len__min_max_ratio            65006.0    0.626111     2.913838   \n",
              "mqtt.topic_len__min_max_product          65006.0    0.000000     0.000000   \n",
              "mqtt.topic_len__mean_square              65006.0    0.064550     0.440597   \n",
              "\n",
              "                                         min  25%  50%  75%      max  \n",
              "mqtt.conflag.cleansess__min              0.0  0.0  0.0  0.0     0.00  \n",
              "mqtt.conflag.cleansess__max              0.0  0.0  0.0  0.0     0.00  \n",
              "mqtt.conflag.cleansess__sum              0.0  0.0  0.0  0.0     0.00  \n",
              "mqtt.conflag.cleansess__mean             0.0  0.0  0.0  0.0     0.00  \n",
              "mqtt.conflag.cleansess__min_max_diff     0.0  0.0  0.0  0.0     0.00  \n",
              "mqtt.conflag.cleansess__min_max_ratio    0.0  0.0  0.0  0.0     0.00  \n",
              "mqtt.conflag.cleansess__min_max_product  0.0  0.0  0.0  0.0     0.00  \n",
              "mqtt.conflag.cleansess__mean_square      0.0  0.0  0.0  0.0     0.00  \n",
              "mqtt.conflags__min                       0.0  0.0  0.0  0.0     0.00  \n",
              "mqtt.conflags__max                       0.0  0.0  0.0  0.0   194.00  \n",
              "mqtt.conflags__sum                       0.0  0.0  0.0  0.0   582.00  \n",
              "mqtt.conflags__mean                      0.0  0.0  0.0  0.0    29.10  \n",
              "mqtt.conflags__nunique                   1.0  1.0  1.0  1.0     2.00  \n",
              "mqtt.conflags__min_max_diff              0.0  0.0  0.0  0.0   194.00  \n",
              "mqtt.conflags__min_max_ratio             0.0  0.0  0.0  0.0   194.00  \n",
              "mqtt.conflags__min_max_product           0.0  0.0  0.0  0.0     0.00  \n",
              "mqtt.conflags__mean_square               0.0  0.0  0.0  0.0   846.81  \n",
              "mqtt.hdrflags__min                       0.0  0.0  0.0  0.0    88.00  \n",
              "mqtt.hdrflags__max                       0.0  0.0  0.0  0.0   208.00  \n",
              "mqtt.hdrflags__sum                       0.0  0.0  0.0  0.0  1760.00  \n",
              "mqtt.hdrflags__mean                      0.0  0.0  0.0  0.0    88.00  \n",
              "mqtt.hdrflags__nunique                   1.0  1.0  1.0  1.0     6.00  \n",
              "mqtt.hdrflags__min_max_diff              0.0  0.0  0.0  0.0   208.00  \n",
              "mqtt.hdrflags__min_max_ratio             0.0  0.0  0.0  0.0   208.00  \n",
              "mqtt.hdrflags__min_max_product           0.0  0.0  0.0  0.0  7744.00  \n",
              "mqtt.hdrflags__mean_square               0.0  0.0  0.0  0.0  7744.00  \n",
              "mqtt.len__min                            0.0  0.0  0.0  0.0    88.00  \n",
              "mqtt.len__max                            0.0  0.0  0.0  0.0    88.00  \n",
              "mqtt.len__sum                            0.0  0.0  0.0  0.0  1760.00  \n",
              "mqtt.len__mean                           0.0  0.0  0.0  0.0    88.00  \n",
              "mqtt.len__min_max_diff                   0.0  0.0  0.0  0.0    88.00  \n",
              "mqtt.len__min_max_ratio                  0.0  0.0  0.0  0.0    88.00  \n",
              "mqtt.len__min_max_product                0.0  0.0  0.0  0.0  7744.00  \n",
              "mqtt.len__mean_square                    0.0  0.0  0.0  0.0  7744.00  \n",
              "mqtt.msg__nunique                        1.0  1.0  1.0  1.0     5.00  \n",
              "mqtt.msgtype__nunique                    1.0  1.0  1.0  1.0     4.00  \n",
              "mqtt.proto_len__min                      0.0  0.0  0.0  0.0     0.00  \n",
              "mqtt.proto_len__max                      0.0  0.0  0.0  0.0   768.00  \n",
              "mqtt.proto_len__sum                      0.0  0.0  0.0  0.0   768.00  \n",
              "mqtt.proto_len__mean                     0.0  0.0  0.0  0.0    38.40  \n",
              "mqtt.proto_len__min_max_diff             0.0  0.0  0.0  0.0   768.00  \n",
              "mqtt.proto_len__min_max_ratio            0.0  0.0  0.0  0.0   768.00  \n",
              "mqtt.proto_len__min_max_product          0.0  0.0  0.0  0.0     0.00  \n",
              "mqtt.proto_len__mean_square              0.0  0.0  0.0  0.0  1474.56  \n",
              "mqtt.protoname__nunique                  1.0  1.0  1.0  1.0     2.00  \n",
              "mqtt.topic__nunique                      1.0  1.0  1.0  1.0     5.00  \n",
              "mqtt.topic_len__min                      0.0  0.0  0.0  0.0     0.00  \n",
              "mqtt.topic_len__max                      0.0  0.0  0.0  0.0    16.00  \n",
              "mqtt.topic_len__sum                      0.0  0.0  0.0  0.0    70.00  \n",
              "mqtt.topic_len__mean                     0.0  0.0  0.0  0.0     3.50  \n",
              "mqtt.topic_len__min_max_diff             0.0  0.0  0.0  0.0    16.00  \n",
              "mqtt.topic_len__min_max_ratio            0.0  0.0  0.0  0.0    16.00  \n",
              "mqtt.topic_len__min_max_product          0.0  0.0  0.0  0.0     0.00  \n",
              "mqtt.topic_len__mean_square              0.0  0.0  0.0  0.0    12.25  "
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module tcp...\n"
          ]
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"    display(df_sample_module_features\",\n  \"rows\": 99,\n  \"fields\": [\n    {\n      \"column\": \"count\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": 65006.0,\n        \"max\": 65006.0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          65006.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"mean\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 1.0059417943435816e+17,\n        \"min\": 0.0,\n        \"max\": 9.262550920334817e+17,\n        \"num_unique_values\": 88,\n        \"samples\": [\n          4703.50805083377\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"std\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 2.0347759270098486e+17,\n        \"min\": 0.0,\n        \"max\": 1.5379354779395264e+18,\n        \"num_unique_values\": 88,\n        \"samples\": [\n          76975.67681907766\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"min\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.17229219690157924,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          1.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"25%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.17229219690157924,\n        \"min\": 0.0,\n        \"max\": 1.0,\n        \"num_unique_values\": 2,\n        \"samples\": [\n          1.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"50%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 4951626.980159509,\n        \"min\": 0.0,\n        \"max\": 47260812.625,\n        \"num_unique_values\": 10,\n        \"samples\": [\n          47260812.625\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"75%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 1.2521900625261698e+17,\n        \"min\": 0.0,\n        \"max\": 1.245912819090685e+18,\n        \"num_unique_values\": 54,\n        \"samples\": [\n          32016.9875\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"max\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 2.352179219516789e+18,\n        \"min\": 0.0,\n        \"max\": 1.5222604286261744e+19,\n        \"num_unique_values\": 45,\n        \"samples\": [\n          1252640067.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-3c043562-f85b-4c5f-9247-9eb83d682da9\" class=\"colab-df-container\">\n",
              "    <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>count</th>\n",
              "      <th>mean</th>\n",
              "      <th>std</th>\n",
              "      <th>min</th>\n",
              "      <th>25%</th>\n",
              "      <th>50%</th>\n",
              "      <th>75%</th>\n",
              "      <th>max</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>tcp.ack__min</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.948067e+06</td>\n",
              "      <td>1.931270e+07</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.000000e+00</td>\n",
              "      <td>6.402315e+08</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>tcp.ack__max</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>5.078186e+08</td>\n",
              "      <td>8.573097e+08</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.451207e+09</td>\n",
              "      <td>4.294966e+09</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>tcp.ack__sum</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>3.041179e+09</td>\n",
              "      <td>5.753636e+09</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>3.196331e+09</td>\n",
              "      <td>3.122900e+10</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>tcp.ack__mean</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>1.520590e+08</td>\n",
              "      <td>2.876818e+08</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.598166e+08</td>\n",
              "      <td>1.561450e+09</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>tcp.ack__min_max_diff</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>5.058705e+08</td>\n",
              "      <td>8.540171e+08</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.449464e+09</td>\n",
              "      <td>4.294966e+09</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>tcp.seq__min_max_diff</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>4.468589e+08</td>\n",
              "      <td>1.239638e+09</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1.730000e+02</td>\n",
              "      <td>4.294967e+09</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>tcp.seq__min_max_ratio</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>2.204408e+08</td>\n",
              "      <td>8.927555e+08</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>3.413635e+01</td>\n",
              "      <td>4.294967e+09</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>tcp.seq__min_max_product</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>4.782130e+16</td>\n",
              "      <td>2.702763e+17</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>5.222164e+18</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>tcp.seq__mean_square</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>3.645318e+17</td>\n",
              "      <td>1.223396e+18</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>6.656400e+02</td>\n",
              "      <td>1.038140e+19</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>tcp.srcport__nunique</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>5.276236e+00</td>\n",
              "      <td>5.452914e+00</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>1.0</td>\n",
              "      <td>9.000000e+00</td>\n",
              "      <td>2.000000e+01</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>99 rows × 8 columns</p>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-3c043562-f85b-4c5f-9247-9eb83d682da9')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-3c043562-f85b-4c5f-9247-9eb83d682da9 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-3c043562-f85b-4c5f-9247-9eb83d682da9');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "<div id=\"df-61568d19-aee8-4a1d-8d8f-7091b067e386\">\n",
              "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-61568d19-aee8-4a1d-8d8f-7091b067e386')\"\n",
              "            title=\"Suggest charts\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "  </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "  <script>\n",
              "    async function quickchart(key) {\n",
              "      const quickchartButtonEl =\n",
              "        document.querySelector('#' + key + ' button');\n",
              "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "      try {\n",
              "        const charts = await google.colab.kernel.invokeFunction(\n",
              "            'suggestCharts', [key], {});\n",
              "      } catch (error) {\n",
              "        console.error('Error during call to suggestCharts:', error);\n",
              "      }\n",
              "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "    }\n",
              "    (() => {\n",
              "      let quickchartButtonEl =\n",
              "        document.querySelector('#df-61568d19-aee8-4a1d-8d8f-7091b067e386 button');\n",
              "      quickchartButtonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "    })();\n",
              "  </script>\n",
              "</div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "                            count          mean           std  min  25%  50%  \\\n",
              "tcp.ack__min              65006.0  1.948067e+06  1.931270e+07  0.0  0.0  0.0   \n",
              "tcp.ack__max              65006.0  5.078186e+08  8.573097e+08  0.0  0.0  0.0   \n",
              "tcp.ack__sum              65006.0  3.041179e+09  5.753636e+09  0.0  0.0  0.0   \n",
              "tcp.ack__mean             65006.0  1.520590e+08  2.876818e+08  0.0  0.0  0.0   \n",
              "tcp.ack__min_max_diff     65006.0  5.058705e+08  8.540171e+08  0.0  0.0  0.0   \n",
              "...                           ...           ...           ...  ...  ...  ...   \n",
              "tcp.seq__min_max_diff     65006.0  4.468589e+08  1.239638e+09  0.0  0.0  0.0   \n",
              "tcp.seq__min_max_ratio    65006.0  2.204408e+08  8.927555e+08  0.0  0.0  0.0   \n",
              "tcp.seq__min_max_product  65006.0  4.782130e+16  2.702763e+17  0.0  0.0  0.0   \n",
              "tcp.seq__mean_square      65006.0  3.645318e+17  1.223396e+18  0.0  0.0  0.0   \n",
              "tcp.srcport__nunique      65006.0  5.276236e+00  5.452914e+00  1.0  1.0  1.0   \n",
              "\n",
              "                                   75%           max  \n",
              "tcp.ack__min              1.000000e+00  6.402315e+08  \n",
              "tcp.ack__max              1.451207e+09  4.294966e+09  \n",
              "tcp.ack__sum              3.196331e+09  3.122900e+10  \n",
              "tcp.ack__mean             1.598166e+08  1.561450e+09  \n",
              "tcp.ack__min_max_diff     1.449464e+09  4.294966e+09  \n",
              "...                                ...           ...  \n",
              "tcp.seq__min_max_diff     1.730000e+02  4.294967e+09  \n",
              "tcp.seq__min_max_ratio    3.413635e+01  4.294967e+09  \n",
              "tcp.seq__min_max_product  0.000000e+00  5.222164e+18  \n",
              "tcp.seq__mean_square      6.656400e+02  1.038140e+19  \n",
              "tcp.srcport__nunique      9.000000e+00  2.000000e+01  \n",
              "\n",
              "[99 rows x 8 columns]"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module frame...\n"
          ]
        },
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "summary": "{\n  \"name\": \"    display(df_sample_module_features\",\n  \"rows\": 1,\n  \"fields\": [\n    {\n      \"column\": \"count\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": null,\n        \"min\": 65006.0,\n        \"max\": 65006.0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          65006.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"mean\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": null,\n        \"min\": 0.25803993734424513,\n        \"max\": 0.25803993734424513,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          0.25803993734424513\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"std\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": null,\n        \"min\": 18.332599118454507,\n        \"max\": 18.332599118454507,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          18.332599118454507\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"min\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": null,\n        \"min\": 2e-06,\n        \"max\": 2e-06,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          2e-06\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"25%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": null,\n        \"min\": 0.000798,\n        \"max\": 0.000798,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          0.000798\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"50%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": null,\n        \"min\": 0.0016294999999999999,\n        \"max\": 0.0016294999999999999,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          0.0016294999999999999\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"75%\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": null,\n        \"min\": 0.006062,\n        \"max\": 0.006062,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          0.006062\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"max\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": null,\n        \"min\": 2549.582064,\n        \"max\": 2549.582064,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          2549.582064\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}",
              "type": "dataframe"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-57ec262c-4e82-48b6-999d-d5eddd49b196\" class=\"colab-df-container\">\n",
              "    <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>count</th>\n",
              "      <th>mean</th>\n",
              "      <th>std</th>\n",
              "      <th>min</th>\n",
              "      <th>25%</th>\n",
              "      <th>50%</th>\n",
              "      <th>75%</th>\n",
              "      <th>max</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>frame.time__calculate_duration</th>\n",
              "      <td>65006.0</td>\n",
              "      <td>0.25804</td>\n",
              "      <td>18.332599</td>\n",
              "      <td>0.000002</td>\n",
              "      <td>0.000798</td>\n",
              "      <td>0.001629</td>\n",
              "      <td>0.006062</td>\n",
              "      <td>2549.582064</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-57ec262c-4e82-48b6-999d-d5eddd49b196')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-57ec262c-4e82-48b6-999d-d5eddd49b196 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-57ec262c-4e82-48b6-999d-d5eddd49b196');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "                                  count     mean        std       min  \\\n",
              "frame.time__calculate_duration  65006.0  0.25804  18.332599  0.000002   \n",
              "\n",
              "                                     25%       50%       75%          max  \n",
              "frame.time__calculate_duration  0.000798  0.001629  0.006062  2549.582064  "
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "for m in modules:\n",
        "    print(f'Processing module {m}...')\n",
        "\n",
        "    # get module's columns\n",
        "    cols = filter_module(df_sample.columns, m) + targets_cols\n",
        "    df_sample_module = df_sample[cols].reset_index(drop=True)\n",
        "\n",
        "    # remove target columns\n",
        "    df_sample_module_features = df_sample_module.drop(columns=targets_cols)\n",
        "\n",
        "    display(df_sample_module_features.describe().T)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "pOSmJpvlnRAB"
      },
      "source": [
        "### 4.3 Dimension reduction per protocol"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "id": "iwwY8w7yaSoQ",
        "outputId": "71d739d0-1b7d-4a1f-d9c8-d8c6ef849c8f"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module icmp...\n"
          ]
        },
        {
          "data": {
            "image/png": "[encoded data, 299700 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "image/png": "[encoded data, 229916 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module ip...\n"
          ]
        },
        {
          "data": {
            "image/png": "[encoded data, 87888 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "image/png": "[encoded data, 60892 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module udp...\n"
          ]
        },
        {
          "data": {
            "image/png": "[encoded data, 50320 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "image/png": "[encoded data, 31448 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module dns...\n"
          ]
        },
        {
          "data": {
            "image/png": "[encoded data, 49384 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "image/png": "[encoded data, 31364 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module http...\n"
          ]
        },
        {
          "data": {
            "image/png": "[encoded data, 67900 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "image/png": "[encoded data, 50140 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module arp...\n"
          ]
        },
        {
          "data": {
            "image/png": "[encoded data, 40720 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "image/png": "[encoded data, 23024 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module mqtt...\n"
          ]
        },
        {
          "data": {
            "image/png": "[encoded data, 50356 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "image/png": "[encoded data, 31788 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module tcp...\n"
          ]
        },
        {
          "data": {
            "image/png": "[encoded data, 82356 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "image/png": "[encoded data, 59144 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module frame...\n"
          ]
        }
      ],
      "source": [
        "for m in modules:\n",
        "    print(f'Processing module {m}...')\n",
        "\n",
        "    # get module's columns\n",
        "    cols = filter_module(df_sample.columns, m) + targets_cols\n",
        "    df_sample_module = df_sample[cols].reset_index(drop=True)\n",
        "\n",
        "    # remove target columns\n",
        "    df_sample_module_features = df_sample_module.drop(columns=targets_cols)\n",
        "\n",
        "    # dimension reduction\n",
        "    if df_sample_module_features.shape[1] > 2:\n",
        "        sklearn_pca = PCA(n_components=2)\n",
        "        X = sklearn_pca.fit_transform(df_sample_module_features)\n",
        "\n",
        "        # concatenate features with targets\n",
        "        df = pd.concat([pd.DataFrame(X), df_sample_module[targets_cols]], axis=1)\n",
        "\n",
        "        # plots\n",
        "        sns.scatterplot(df, x=0, y=1, hue='attack_label__most_frequent', alpha=0.9)\n",
        "        plt.title(f'Attack Label - Module {m}')\n",
        "        plt.show()\n",
        "\n",
        "        sns.scatterplot(df, x=0, y=1, hue='is_attack__most_frequent', alpha=0.9)\n",
        "        plt.title(f'Is Attack - Module {m}')\n",
        "        plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "25wd3y8N0WBJ"
      },
      "source": [
        "### 4.4 Dimension reduction with all features"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 256
        },
        "id": "0ROeSjHSzGLm",
        "outputId": "866618eb-9e6b-4c6e-ab2d-a12ba4b17684"
      },
      "outputs": [
        {
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "dataframe",
              "variable_name": "df_sample_features"
            },
            "text/html": [
              "\n",
              "  <div id=\"df-d1daa2e1-1ce1-4235-9ef6-81b01241f79c\" class=\"colab-df-container\">\n",
              "    <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>frame.time__calculate_duration</th>\n",
              "      <th>ip.src_host__nunique</th>\n",
              "      <th>ip.dst_host__nunique</th>\n",
              "      <th>arp.dst.proto_ipv4__nunique</th>\n",
              "      <th>arp.opcode__min</th>\n",
              "      <th>arp.opcode__max</th>\n",
              "      <th>arp.opcode__sum</th>\n",
              "      <th>arp.opcode__mean</th>\n",
              "      <th>arp.opcode__min_max_diff</th>\n",
              "      <th>arp.opcode__min_max_ratio</th>\n",
              "      <th>...</th>\n",
              "      <th>mqtt.protoname__nunique</th>\n",
              "      <th>mqtt.topic__nunique</th>\n",
              "      <th>mqtt.topic_len__min</th>\n",
              "      <th>mqtt.topic_len__max</th>\n",
              "      <th>mqtt.topic_len__sum</th>\n",
              "      <th>mqtt.topic_len__mean</th>\n",
              "      <th>mqtt.topic_len__min_max_diff</th>\n",
              "      <th>mqtt.topic_len__min_max_ratio</th>\n",
              "      <th>mqtt.topic_len__min_max_product</th>\n",
              "      <th>mqtt.topic_len__mean_square</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>28766</th>\n",
              "      <td>0.002516</td>\n",
              "      <td>13</td>\n",
              "      <td>9</td>\n",
              "      <td>1</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>...</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>31493</th>\n",
              "      <td>0.001521</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>...</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>28782</th>\n",
              "      <td>0.019419</td>\n",
              "      <td>5</td>\n",
              "      <td>18</td>\n",
              "      <td>4</td>\n",
              "      <td>0.0</td>\n",
              "      <td>2.0</td>\n",
              "      <td>4.0</td>\n",
              "      <td>0.2</td>\n",
              "      <td>2.0</td>\n",
              "      <td>2.0</td>\n",
              "      <td>...</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>17233</th>\n",
              "      <td>0.001809</td>\n",
              "      <td>12</td>\n",
              "      <td>10</td>\n",
              "      <td>1</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>...</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>43554</th>\n",
              "      <td>0.009265</td>\n",
              "      <td>4</td>\n",
              "      <td>2</td>\n",
              "      <td>1</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>...</td>\n",
              "      <td>1</td>\n",
              "      <td>1</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>5 rows × 264 columns</p>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-d1daa2e1-1ce1-4235-9ef6-81b01241f79c')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-d1daa2e1-1ce1-4235-9ef6-81b01241f79c button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-d1daa2e1-1ce1-4235-9ef6-81b01241f79c');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "<div id=\"df-d4688c7b-1442-4705-bf62-ca7d9447b073\">\n",
              "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-d4688c7b-1442-4705-bf62-ca7d9447b073')\"\n",
              "            title=\"Suggest charts\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "  </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "  <script>\n",
              "    async function quickchart(key) {\n",
              "      const quickchartButtonEl =\n",
              "        document.querySelector('#' + key + ' button');\n",
              "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "      try {\n",
              "        const charts = await google.colab.kernel.invokeFunction(\n",
              "            'suggestCharts', [key], {});\n",
              "      } catch (error) {\n",
              "        console.error('Error during call to suggestCharts:', error);\n",
              "      }\n",
              "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "    }\n",
              "    (() => {\n",
              "      let quickchartButtonEl =\n",
              "        document.querySelector('#df-d4688c7b-1442-4705-bf62-ca7d9447b073 button');\n",
              "      quickchartButtonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "    })();\n",
              "  </script>\n",
              "</div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "text/plain": [
              "       frame.time__calculate_duration  ip.src_host__nunique  \\\n",
              "28766                        0.002516                    13   \n",
              "31493                        0.001521                     1   \n",
              "28782                        0.019419                     5   \n",
              "17233                        0.001809                    12   \n",
              "43554                        0.009265                     4   \n",
              "\n",
              "       ip.dst_host__nunique  arp.dst.proto_ipv4__nunique  arp.opcode__min  \\\n",
              "28766                     9                            1              0.0   \n",
              "31493                     1                            1              0.0   \n",
              "28782                    18                            4              0.0   \n",
              "17233                    10                            1              0.0   \n",
              "43554                     2                            1              0.0   \n",
              "\n",
              "       arp.opcode__max  arp.opcode__sum  arp.opcode__mean  \\\n",
              "28766              0.0              0.0               0.0   \n",
              "31493              0.0              0.0               0.0   \n",
              "28782              2.0              4.0               0.2   \n",
              "17233              0.0              0.0               0.0   \n",
              "43554              0.0              0.0               0.0   \n",
              "\n",
              "       arp.opcode__min_max_diff  arp.opcode__min_max_ratio  ...  \\\n",
              "28766                       0.0                        0.0  ...   \n",
              "31493                       0.0                        0.0  ...   \n",
              "28782                       2.0                        2.0  ...   \n",
              "17233                       0.0                        0.0  ...   \n",
              "43554                       0.0                        0.0  ...   \n",
              "\n",
              "       mqtt.protoname__nunique  mqtt.topic__nunique  mqtt.topic_len__min  \\\n",
              "28766                        1                    1                  0.0   \n",
              "31493                        1                    1                  0.0   \n",
              "28782                        1                    1                  0.0   \n",
              "17233                        1                    1                  0.0   \n",
              "43554                        1                    1                  0.0   \n",
              "\n",
              "       mqtt.topic_len__max  mqtt.topic_len__sum  mqtt.topic_len__mean  \\\n",
              "28766                  0.0                  0.0                   0.0   \n",
              "31493                  0.0                  0.0                   0.0   \n",
              "28782                  0.0                  0.0                   0.0   \n",
              "17233                  0.0                  0.0                   0.0   \n",
              "43554                  0.0                  0.0                   0.0   \n",
              "\n",
              "       mqtt.topic_len__min_max_diff  mqtt.topic_len__min_max_ratio  \\\n",
              "28766                           0.0                            0.0   \n",
              "31493                           0.0                            0.0   \n",
              "28782                           0.0                            0.0   \n",
              "17233                           0.0                            0.0   \n",
              "43554                           0.0                            0.0   \n",
              "\n",
              "       mqtt.topic_len__min_max_product  mqtt.topic_len__mean_square  \n",
              "28766                              0.0                          0.0  \n",
              "31493                              0.0                          0.0  \n",
              "28782                              0.0                          0.0  \n",
              "17233                              0.0                          0.0  \n",
              "43554                              0.0                          0.0  \n",
              "\n",
              "[5 rows x 264 columns]"
            ]
          },
          "execution_count": 19,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "df_sample_features = df_sample.drop(columns=targets_cols)\n",
        "df_sample_features.head()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 927
        },
        "id": "B53lXn9SzP30",
        "outputId": "82a6e37f-f3b2-418e-9e4f-aa9ebdb80b77"
      },
      "outputs": [
        {
          "data": {
            "image/png": "[encoded data, 82816 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "image/png": "[encoded data, 59744 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "# dimension reduction\n",
        "sklearn_pca = PCA(n_components=2)\n",
        "X = sklearn_pca.fit_transform(df_sample_features)\n",
        "\n",
        "# concatenate features with targets\n",
        "df = pd.concat([pd.DataFrame(X), df_sample[targets_cols].reset_index(drop=True)], axis=1)\n",
        "\n",
        "# plots\n",
        "sns.scatterplot(df, x=0, y=1, hue='attack_label__most_frequent', alpha=0.9)\n",
        "plt.title(f'Attack Label - Module {m}')\n",
        "plt.show()\n",
        "\n",
        "sns.scatterplot(df, x=0, y=1, hue='is_attack__most_frequent', alpha=0.9)\n",
        "plt.title(f'Is Attack - Module {m}')\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8TK-rOzc8Ydc"
      },
      "source": [
        "### 4.5 Distribution of `frame.time__calculate_duration`"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 428
        },
        "id": "nRTf9iN2MWOv",
        "outputId": "b79ebf4a-9711-492f-d230-dc7cb97473c5"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<Axes: ylabel='frame.time__calculate_duration'>"
            ]
          },
          "execution_count": 22,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "[encoded data, 19552 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "sns.boxplot(df_sample, y='frame.time__calculate_duration')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 428
        },
        "id": "kUecLAqYOGlk",
        "outputId": "e3f44dfe-5386-4cdb-803c-2f83a35aa722"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<Axes: ylabel='frame.time__calculate_duration'>"
            ]
          },
          "execution_count": 23,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "[encoded data, 24904 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "sns.boxplot(df_sample, y='frame.time__calculate_duration', hue='is_attack__most_frequent')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 428
        },
        "id": "yvdluDITOMCS",
        "outputId": "fb1cfe56-6c0d-42d2-a150-ff880179ad3e"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<Axes: ylabel='frame.time__calculate_duration'>"
            ]
          },
          "execution_count": 28,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "[encoded data, 40768 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "sns.boxplot(df_sample, y='frame.time__calculate_duration', hue='attack_label__most_frequent')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 447
        },
        "id": "uAb9sWDs8gmq",
        "outputId": "c6cbe6f0-659a-45fa-be3f-1ad71d946518"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<Axes: ylabel='Frequency'>"
            ]
          },
          "execution_count": 22,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "[encoded data, 17036 characters]",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "df_sample.query('`frame.time__calculate_duration` < 0.5')['frame.time__calculate_duration'].plot.hist()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "D1B_rnOpPz-K"
      },
      "source": [
        "### 4.6 Correlation"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 739
        },
        "id": "BOQSLEre-EIh",
        "outputId": "53ed6c7e-e426-40eb-c420-235a23905658"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<Axes: >"
            ]
          },
          "execution_count": 33,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "[encoded data, 312644 characters]",
            "text/plain": [
              "<Figure size 640x480 with 2 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "corr = df_sample.drop(columns=['attack_label__most_frequent']).corr()\n",
        "sns.heatmap(corr, cmap=\"coolwarm\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "id": "LXuom8NPQY-A",
        "outputId": "7d6e221a-307c-4421-b68f-54e9a86abde4"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module icmp...\n"
          ]
        },
        {
          "data": {
            "image/png": "[encoded data, 130864 characters]",
            "text/plain": [
              "<Figure size 640x480 with 2 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module ip...\n"
          ]
        },
        {
          "data": {
            "image/png": "[encoded data, 60012 characters]",
            "text/plain": [
              "<Figure size 640x480 with 2 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module udp...\n"
          ]
        },
        {
          "data": {
            "image/png": "[encoded data, 102760 characters]",
            "text/plain": [
              "<Figure size 640x480 with 2 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module dns...\n"
          ]
        },
        {
          "data": {
            "image/png": "[encoded data, 188740 characters]",
            "text/plain": [
              "<Figure size 640x480 with 2 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module http...\n"
          ]
        },
        {
          "data": {
            "image/png": "[encoded data, 175092 characters]",
            "text/plain": [
              "<Figure size 640x480 with 2 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module arp...\n"
          ]
        },
        {
          "data": {
            "image/png": "[encoded data, 139840 characters]",
            "text/plain": [
              "<Figure size 640x480 with 2 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module mqtt...\n"
          ]
        },
        {
          "data": {
            "image/png": "[encoded data, 152912 characters]",
            "text/plain": [
              "<Figure size 640x480 with 2 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module tcp...\n"
          ]
        },
        {
          "data": {
            "image/png": "[encoded data, 199976 characters]",
            "text/plain": [
              "<Figure size 640x480 with 2 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Processing module frame...\n"
          ]
        },
        {
          "data": {
            "image/png": "[encoded data, 40812 characters]",
            "text/plain": [
              "<Figure size 640x480 with 2 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "for m in modules:\n",
        "    print(f'Processing module {m}...')\n",
        "\n",
        "    # get module's columns\n",
        "    cols = filter_module(df_sample.columns, m) + targets_cols\n",
        "\n",
        "    corr = df_sample[cols].drop(columns=['attack_label__most_frequent']).corr()\n",
        "    sns.heatmap(corr, cmap=\"coolwarm\")\n",
        "    plt.show()"
      ]
    }
  ],
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
