Skip to content

Instantly share code, notes, and snippets.

@fspot
Created November 13, 2019 13:11
Show Gist options
  • Save fspot/799d96095f90d9f95b1b2c480284b36c to your computer and use it in GitHub Desktop.
Save fspot/799d96095f90d9f95b1b2c480284b36c to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"table1 = pd.read_excel(\"data_test.xlsx\", skiprows=5, usecols=[0, 1], header=None, names=['date', 'buy_signal'])\n",
"table2 = pd.read_excel(\"data_test.xlsx\", skiprows=5, usecols=[4, 5], header=None, names=['date', 'buy_signal'])"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# 1 == signal \"Buy\" / 0 == signal \"Sell\" / nan == no signal\n",
"table1 = table1.replace({0: np.nan})\n",
"table2 = table2.replace({0: np.nan})\n",
"table2 = table2.replace({1: 0})"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# On crée table3 avec les signaux dans la même colonne (via combine_first)\n",
"# (inverser table1 et table2 selon quel signal est prioritaire, s'ils surviennent un même jour)\n",
"# et on propage chaque signal jusqu'au suivant avec ffill:\n",
"table3 = table1.combine_first(table2).ffill()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# Cleaning:\n",
"table3 = table3.replace({np.nan: 0, -1: 0})\\\n",
" .rename(columns={'buy_signal': 'stock_hold'})"
]
},
{
"cell_type": "code",
"execution_count": 5,
"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>date</th>\n",
" <th>stock_hold</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>2017-01-01</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>2017-01-02</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>2017-01-03</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>2017-01-04</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>2017-01-05</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>5</td>\n",
" <td>2017-01-06</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>6</td>\n",
" <td>2017-01-07</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>7</td>\n",
" <td>2017-01-08</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>8</td>\n",
" <td>2017-01-09</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>9</td>\n",
" <td>2017-01-10</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>10</td>\n",
" <td>2017-01-11</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>11</td>\n",
" <td>2017-01-12</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>12</td>\n",
" <td>2017-01-13</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>13</td>\n",
" <td>2017-01-14</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>14</td>\n",
" <td>2017-01-15</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>15</td>\n",
" <td>2017-01-16</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>16</td>\n",
" <td>2017-01-17</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>17</td>\n",
" <td>2017-01-18</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>18</td>\n",
" <td>2017-01-19</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>19</td>\n",
" <td>2017-01-20</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>20</td>\n",
" <td>2017-01-21</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>21</td>\n",
" <td>2017-01-22</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>22</td>\n",
" <td>2017-01-23</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>23</td>\n",
" <td>2017-01-24</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>24</td>\n",
" <td>2017-01-25</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>25</td>\n",
" <td>2017-01-26</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>26</td>\n",
" <td>2017-01-27</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>27</td>\n",
" <td>2017-01-28</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>28</td>\n",
" <td>2017-01-29</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>29</td>\n",
" <td>2017-01-30</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" date stock_hold\n",
"0 2017-01-01 0.0\n",
"1 2017-01-02 0.0\n",
"2 2017-01-03 0.0\n",
"3 2017-01-04 0.0\n",
"4 2017-01-05 1.0\n",
"5 2017-01-06 1.0\n",
"6 2017-01-07 1.0\n",
"7 2017-01-08 1.0\n",
"8 2017-01-09 1.0\n",
"9 2017-01-10 0.0\n",
"10 2017-01-11 0.0\n",
"11 2017-01-12 1.0\n",
"12 2017-01-13 1.0\n",
"13 2017-01-14 1.0\n",
"14 2017-01-15 1.0\n",
"15 2017-01-16 1.0\n",
"16 2017-01-17 1.0\n",
"17 2017-01-18 1.0\n",
"18 2017-01-19 1.0\n",
"19 2017-01-20 1.0\n",
"20 2017-01-21 1.0\n",
"21 2017-01-22 1.0\n",
"22 2017-01-23 0.0\n",
"23 2017-01-24 0.0\n",
"24 2017-01-25 0.0\n",
"25 2017-01-26 0.0\n",
"26 2017-01-27 0.0\n",
"27 2017-01-28 0.0\n",
"28 2017-01-29 0.0\n",
"29 2017-01-30 0.0"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"table3"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment