{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "5cff81eb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: yfinance in c:\\users\\paolo\\anaconda3\\lib\\site-packages (0.2.20)\n",
      "Requirement already satisfied: pandas>=1.3.0 in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from yfinance) (1.5.3)\n",
      "Requirement already satisfied: numpy>=1.16.5 in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from yfinance) (1.23.4)\n",
      "Requirement already satisfied: requests>=2.26 in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from yfinance) (2.28.1)\n",
      "Requirement already satisfied: multitasking>=0.0.7 in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from yfinance) (0.0.11)\n",
      "Requirement already satisfied: lxml>=4.9.1 in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from yfinance) (4.9.1)\n",
      "Requirement already satisfied: appdirs>=1.4.4 in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from yfinance) (1.4.4)\n",
      "Requirement already satisfied: pytz>=2022.5 in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from yfinance) (2022.7)\n",
      "Requirement already satisfied: frozendict>=2.3.4 in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from yfinance) (2.3.8)\n",
      "Requirement already satisfied: cryptography>=3.3.2 in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from yfinance) (39.0.1)\n",
      "Requirement already satisfied: beautifulsoup4>=4.11.1 in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from yfinance) (4.11.1)\n",
      "Requirement already satisfied: html5lib>=1.1 in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from yfinance) (1.1)\n",
      "Requirement already satisfied: soupsieve>1.2 in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from beautifulsoup4>=4.11.1->yfinance) (2.3.2.post1)\n",
      "Requirement already satisfied: cffi>=1.12 in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from cryptography>=3.3.2->yfinance) (1.15.1)\n",
      "Requirement already satisfied: six>=1.9 in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from html5lib>=1.1->yfinance) (1.16.0)\n",
      "Requirement already satisfied: webencodings in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from html5lib>=1.1->yfinance) (0.5.1)\n",
      "Requirement already satisfied: python-dateutil>=2.8.1 in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from pandas>=1.3.0->yfinance) (2.8.2)\n",
      "Requirement already satisfied: charset-normalizer<3,>=2 in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from requests>=2.26->yfinance) (2.0.4)\n",
      "Requirement already satisfied: idna<4,>=2.5 in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from requests>=2.26->yfinance) (3.4)\n",
      "Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from requests>=2.26->yfinance) (1.26.14)\n",
      "Requirement already satisfied: certifi>=2017.4.17 in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from requests>=2.26->yfinance) (2023.7.22)\n",
      "Requirement already satisfied: pycparser in c:\\users\\paolo\\anaconda3\\lib\\site-packages (from cffi>=1.12->cryptography>=3.3.2->yfinance) (2.21)\n"
     ]
    }
   ],
   "source": [
    "!pip install yfinance"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "5cff81ea",
   "metadata": {},
   "outputs": [],
   "source": [
    "import yfinance as yf\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "from matplotlib import pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "774c9a0e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[*********************100%***********************]  1 of 1 completed\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Date\n",
       "1997-12-31    24402.000000\n",
       "1998-01-02    24914.000000\n",
       "1998-01-05    25734.000000\n",
       "1998-01-06    25734.000000\n",
       "1998-01-07    25961.000000\n",
       "                  ...     \n",
       "2023-10-13    28237.000000\n",
       "2023-10-16    28392.000000\n",
       "2023-10-17    28367.000000\n",
       "2023-10-18    28136.000000\n",
       "2023-10-19    27770.490234\n",
       "Name: Adj Close, Length: 6598, dtype: float64"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dati = yf.download(\"FTSEMIB.MI\")[\"Adj Close\"]\n",
    "dati"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "558af0ff",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    584500.000000\n",
       "mean          0.568294\n",
       "std          32.834780\n",
       "min         -67.210517\n",
       "25%         -26.342204\n",
       "50%          -1.984252\n",
       "75%          24.990848\n",
       "max          92.115400\n",
       "Name: Adj Close, dtype: float64"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rendimento3anni = ( dati/dati.shift(251*3)-1 ).dropna()\n",
    "rendimento3anni.describe()*100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "2bec9fc3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 % -67.21051674417396\n",
      "10 % -44.83568322763446\n",
      "20 % -32.14172194053601\n",
      "30 % -17.80068967180441\n",
      "40 % -8.578689098194934\n",
      "50 % -1.9842519685039361\n",
      "60 % 6.110632801345408\n",
      "70 % 17.72448604518794\n",
      "80 % 33.49361431036509\n",
      "90 % 47.12186698040445\n",
      "100 % 92.11540037701829\n"
     ]
    }
   ],
   "source": [
    "for i in range(11):\n",
    "    print(i*10,\"%\", rendimento3anni.quantile(i/10)*100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "218ab50d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-0,6721051674417396\n",
      "-0,3214172194053601\n",
      "-0,08578689098194935\n",
      "-0,01984251968503936\n",
      "0,06110632801345407\n",
      "0,3349361431036509\n",
      "0,9211540037701829\n"
     ]
    }
   ],
   "source": [
    "for i in [0,2,4,5,6,8,10]:\n",
    "    print(str(rendimento3anni.quantile(i/10)).replace(\".\",\",\"))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7068024a",
   "metadata": {},
   "source": [
    "# Rendimento a 33 mesi vs a 36 mesi"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "eee529bb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[*********************100%***********************]  1 of 1 completed\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Adj Close</th>\n",
       "      <th>r33m</th>\n",
       "      <th>r36m</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-08-31</th>\n",
       "      <td>48135.0</td>\n",
       "      <td>0.280223</td>\n",
       "      <td>0.246131</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-09-01</th>\n",
       "      <td>48322.0</td>\n",
       "      <td>0.272385</td>\n",
       "      <td>0.240542</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-09-04</th>\n",
       "      <td>48564.0</td>\n",
       "      <td>0.259777</td>\n",
       "      <td>0.216167</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-09-05</th>\n",
       "      <td>48322.0</td>\n",
       "      <td>0.257490</td>\n",
       "      <td>0.217357</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-09-06</th>\n",
       "      <td>48357.0</td>\n",
       "      <td>0.253811</td>\n",
       "      <td>0.202619</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-07-17</th>\n",
       "      <td>28609.0</td>\n",
       "      <td>0.185966</td>\n",
       "      <td>0.164139</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-07-18</th>\n",
       "      <td>28707.0</td>\n",
       "      <td>0.188069</td>\n",
       "      <td>0.166830</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-07-19</th>\n",
       "      <td>28712.0</td>\n",
       "      <td>0.186433</td>\n",
       "      <td>0.164947</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-07-20</th>\n",
       "      <td>28816.0</td>\n",
       "      <td>0.177178</td>\n",
       "      <td>0.152077</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-07-21</th>\n",
       "      <td>28855.0</td>\n",
       "      <td>0.164406</td>\n",
       "      <td>0.135142</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5842 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            Adj Close      r33m      r36m\n",
       "Date                                     \n",
       "2000-08-31    48135.0  0.280223  0.246131\n",
       "2000-09-01    48322.0  0.272385  0.240542\n",
       "2000-09-04    48564.0  0.259777  0.216167\n",
       "2000-09-05    48322.0  0.257490  0.217357\n",
       "2000-09-06    48357.0  0.253811  0.202619\n",
       "...               ...       ...       ...\n",
       "2023-07-17    28609.0  0.185966  0.164139\n",
       "2023-07-18    28707.0  0.188069  0.166830\n",
       "2023-07-19    28712.0  0.186433  0.164947\n",
       "2023-07-20    28816.0  0.177178  0.152077\n",
       "2023-07-21    28855.0  0.164406  0.135142\n",
       "\n",
       "[5842 rows x 3 columns]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dati = yf.download(\"FTSEMIB.MI\")[\"Adj Close\"].to_frame()\n",
    "dati[\"r33m\"]= ( ( dati[\"Adj Close\"] / dati[\"Adj Close\"].shift(21*33) ) **(12/33) ) -1\n",
    "dati[\"r36m\"] = ( ( dati[\"Adj Close\"].shift(-21*3) / dati[\"Adj Close\"].shift(21*33) ) **(12/36) ) -1\n",
    "dati.dropna(inplace=True)\n",
    "dati"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "a75669fe",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Adj Close</th>\n",
       "      <th>r33m</th>\n",
       "      <th>r36m</th>\n",
       "      <th>ottimo</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-08-31</th>\n",
       "      <td>48135.0</td>\n",
       "      <td>0.280223</td>\n",
       "      <td>0.246131</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-09-01</th>\n",
       "      <td>48322.0</td>\n",
       "      <td>0.272385</td>\n",
       "      <td>0.240542</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-09-04</th>\n",
       "      <td>48564.0</td>\n",
       "      <td>0.259777</td>\n",
       "      <td>0.216167</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-09-05</th>\n",
       "      <td>48322.0</td>\n",
       "      <td>0.257490</td>\n",
       "      <td>0.217357</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-09-06</th>\n",
       "      <td>48357.0</td>\n",
       "      <td>0.253811</td>\n",
       "      <td>0.202619</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-07-17</th>\n",
       "      <td>28609.0</td>\n",
       "      <td>0.185966</td>\n",
       "      <td>0.164139</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-07-18</th>\n",
       "      <td>28707.0</td>\n",
       "      <td>0.188069</td>\n",
       "      <td>0.166830</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-07-19</th>\n",
       "      <td>28712.0</td>\n",
       "      <td>0.186433</td>\n",
       "      <td>0.164947</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-07-20</th>\n",
       "      <td>28816.0</td>\n",
       "      <td>0.177178</td>\n",
       "      <td>0.152077</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2023-07-21</th>\n",
       "      <td>28855.0</td>\n",
       "      <td>0.164406</td>\n",
       "      <td>0.135142</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5842 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            Adj Close      r33m      r36m  ottimo\n",
       "Date                                             \n",
       "2000-08-31    48135.0  0.280223  0.246131   False\n",
       "2000-09-01    48322.0  0.272385  0.240542   False\n",
       "2000-09-04    48564.0  0.259777  0.216167   False\n",
       "2000-09-05    48322.0  0.257490  0.217357   False\n",
       "2000-09-06    48357.0  0.253811  0.202619   False\n",
       "...               ...       ...       ...     ...\n",
       "2023-07-17    28609.0  0.185966  0.164139   False\n",
       "2023-07-18    28707.0  0.188069  0.166830   False\n",
       "2023-07-19    28712.0  0.186433  0.164947   False\n",
       "2023-07-20    28816.0  0.177178  0.152077   False\n",
       "2023-07-21    28855.0  0.164406  0.135142   False\n",
       "\n",
       "[5842 rows x 4 columns]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dati[\"ottimo\"] = np.where( dati[\"r33m\"]<0.09, np.where(dati[\"r36m\"]>0.09 , True, False), False)\n",
    "dati"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "ea6c826e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False    5742\n",
       "True      100\n",
       "Name: ottimo, dtype: int64"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dati[\"ottimo\"].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "c8e746a7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.7117425539198903 %\n"
     ]
    }
   ],
   "source": [
    "print(100*(100/(5742+100)),\"%\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "7f921644",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: ylabel='Frequency'>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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og4fPtzkoQAAABrKo5iJjo7Wl19+WWf7nj17dMUVVzR5KAAAgIbyKGZGjRqlP//5z9q0aZNqampUU1OjjRs3atKkSRo1apS3ZwQAADgvjz7N9Nxzz6m4uFh33HGHQkN/PkRtba3Gjh3LNTMAAKBZeRQzYWFhWrlypf76179qz549Cg8P1w033KDExERvzwcAAHBBHsXMOcnJyUpOTvbWLAAAAI3mUczU1NTotdde04cffqiysjLV1ta6Pb5x40avDAcAAHAxHl0APGnSJE2aNEk1NTVKSUlRt27d3G4N9dFHH2no0KGKj4+XzWbTe++95/b4uHHjZLPZ3G633HKLJyMDAIAg5dGZmRUrVujNN9/UkCFDmvTklZWV6tatm8aPH69777233n0GDx6svLw81/2wsLAmPScAAAguHl8AfO211zb5ydPS0pSWlnbBfex2+3m/zBIAAMCjt5meeuop/eMf/5BlWd6ep46CggJFR0crOTlZjzzyiMrKyi64v9PplMPhcLsBAIDg5dGZmU8++USbNm3S+++/r+uvv14tWrRwe/ydd97xynBpaWn6wx/+oMTERBUWFurpp5/WwIEDtXPnTtnt9np/Jjs7W7NmzfLK8wMAgMDnUcxcfvnlGj58uLdnqWPkyJGuf05JSVHPnj2VmJioNWvWaMSIEfX+zLRp05SZmem673A4lJCQ4PNZAQCAf3gUM7+8ILc5xcXFKTExUfv37z/vPna7/bxnbQAAQPDx6JoZSaqurtYHH3ygl19+WRUVFZKk48eP6/Tp014b7tdOnjypI0eOKC4uzmfPAQAAzOLRmZni4mINHjxYhw8fltPp1KBBgxQREaE5c+bozJkzeumllxp0nNOnT+vAgQOu+4WFhdq9e7fatm2rtm3baubMmbr33nsVFxenoqIi/eUvf1G7du2a5S0uAABgBo9/aV7Pnj116tQphYeHu7YPHz5cH374YYOPs2PHDnXv3l3du3eXJGVmZqp79+565plnFBISoq+++kr33HOPkpOTlZ6eruTkZG3btk0RERGejA0AAIKQx59m2rJlS51fYJeYmKhjx441+Dj9+/e/4Me7169f78l4AADgEuLRmZna2lrV1NTU2X706FHOmgAAgGblUcwMGjRI8+bNc9232Ww6ffq0ZsyY0eSvOAAAAGgMj95m+vvf/64BAwaoa9euOnPm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33yjxYsXa+XKlZo2bZovX0r9LASNm2++2XrsscfctnXp0sXKysq66M/269fPmjRpUp3t9913nzV48GC3bXfddZc1atSoJs0azHyxDr9WXV1tRUREWEuWLPF0zKDnq3Worq62brvtNuvVV1+10tPTrXvuuccL0wYvX6zDwoULrWuuucaqqqry1phBzxfrkJGRYQ0cONBtW2ZmptWnT58mzeoJzswEiaqqKu3cuVOpqalu21NTU7V161aPj7tt27Y6x7zrrruadMxg5qt1+LUff/xRZ8+eVdu2bb12zGDiy3V49tln1b59e02YMKFJx7kU+GodVq9erVtvvVUZGRmKiYlRSkqKZs+erZqamqaOHJR8tQ59+vTRzp07XW95Hzp0SGvXrtXdd9/dpHk9EfC/ARgNc+LECdXU1NT5As6YmJg6X9TZGKWlpV4/ZjDz1Tr8WlZWlq688krdeeedXjtmMPHVOmzZskWLFy/W7t27mzjhpcFX63Do0CFt3LhRDzzwgNauXav9+/crIyND1dXVeuaZZ5o6dtDx1TqMGjVK3333nfr06SPLslRdXa0//elPysrKaurIjUbMBBmbzeZ237KsOtsC4ZjBzpf/zubMmaPly5eroKBALVu29Moxg5U316GiokIPPvigFi1apHbt2nljvEuGt/881NbWKjo6Wq+88opCQkLUo0cPHT9+XHPnziVmLsDb61BQUKDnn39eCxYsUK9evXTgwAFNmjRJcXFxevrpp5s6bqMQM0GiXbt2CgkJqVPZZWVldWq8MWJjY71+zGDmq3U4529/+5tmz56tDz74QL/97W+bfLxg5Yt1OHjwoIqKijR06FDXttraWklSaGio9u3bp44dO3o+dBDy1Z+HuLg4tWjRQiEhIa5t1113nUpLS1VVVaWwsDCPjx2MfLUOTz/9tMaMGaOHH35YknTDDTeosrJSf/zjHzV9+nRddlnzXcnCNTNBIiwsTD169FB+fr7b9vz8fPXu3dvj49566611jrlhw4YmHTOY+WodJGnu3Ln661//qnXr1qlnz55NOlaw88U6dOnSRV999ZV2797tuv3ud7/TgAEDtHv3biUkJHhj9KDiqz8Pt912mw4cOOCKSUn69ttvFRcXR8jUw1fr8OOPP9YJlpCQEFmWJau5v/ax2S85hs+sWLHCatGihbV48WLrv//9rzV58mSrdevWVlFRkWVZlpWVlWWNGTPG7Wd27dpl7dq1y+rRo4c1evRoa9euXdbevXtdj2/ZssUKCQmxcnJyrG+++cbKycmxQkNDre3btzfrazOJL9bhhRdesMLCwqxVq1ZZJSUlrltFRUWzvjaT+GIdfo1PM12cL9bh8OHD1m9+8xvr8ccft/bt22f95z//saKjo63nnnuuWV+bSXyxDjNmzLAiIiKs5cuXW4cOHbI2bNhgdezY0brvvvua9bVZ1s/1hCDyr3/9y0pMTLTCwsKsG2+80dq8ebPrsfT0dKtfv35u+0uqc0tMTHTb56233rI6d+5stWjRwurSpYv19ttvN8MrMZu31yExMbHefWbMmNE8L8hQvvjz8EvETMP4Yh22bt1q9erVy7Lb7dY111xjPf/881Z1dXUzvBpzeXsdzp49a82cOdPq2LGj1bJlSyshIcGaOHGiderUqeZ5Qb9g+38DAwAAGIlrZgAAgNGIGQAAYDRiBgAAGI2YAQAARiNmAACA0YgZAABgNGIGAAAYjZgBAABGI2YAAIDRiBkAAGA0YgYAABiNmAEAAEb7P/RI5eT3gLzqAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "dati[\"ottimo_quanto\"] = np.where( dati[\"ottimo\"], dati[\"r36m\"], np.nan)\n",
    "dati[\"ottimo_quanto\"].plot(kind=\"hist\",bins=15)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f2de76e4",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
