{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Importing required libraries\n", "\n", "import pandas as pd\n", "import psycopg2\n", "import psycopg2.extensions\n", "import sqlalchemy\n", "from sqlalchemy import create_engine\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Connected to Postgres DB\n" ] } ], "source": [ "# Create connection to Database\n", "\n", "conn = psycopg2.connect(\n", " database='Your-Data-Base',\n", " user='Your-User-Name',\n", " password='Your-User-Pass',\n", " host='localhost',\n", " port='5432'\n", ")\n", "print('Connected to Postgres DB')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "cur = conn.cursor()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
schemanametablenametableownertablespacehasindexeshasruleshastriggersrowsecurity
0publicdaxpostgresNoneFalseFalseFalseFalse
1publicdowpostgresNoneFalseFalseFalseFalse
2publicstoxxpostgresNoneFalseFalseFalseFalse
3publiccac40postgresNoneTrueFalseFalseFalse
4publicsp500postgresNoneFalseFalseFalseFalse
\n", "
" ], "text/plain": [ " schemaname tablename tableowner tablespace hasindexes hasrules \\\n", "0 public dax postgres None False False \n", "1 public dow postgres None False False \n", "2 public stoxx postgres None False False \n", "3 public cac40 postgres None True False \n", "4 public sp500 postgres None False False \n", "\n", " hastriggers rowsecurity \n", "0 False False \n", "1 False False \n", "2 False False \n", "3 False False \n", "4 False False " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# List ALL Available Tables in DB\n", "\n", "tables = pd.read_sql_query(\"select * \"\n", " \"from pg_catalog.pg_tables \"\n", " \"where schemaname != 'pg_catalog' and schemaname != 'information_schema'\"\n", " , conn)\n", "tables.head()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DateOpenHighLowCloseAdj_CloseVolume
02014-11-034225.8100594238.4599614185.4101564194.0297854194.029785123590300.0
12014-11-0326.04999926.04999926.04999926.04999923.429771200.0
22014-11-0425.50000025.50000025.50000025.50000022.9350972500.0
32014-11-044177.2001954208.5200204118.5000004130.1899414130.189941142148700.0
42014-11-054163.5097664214.3500984145.6098634208.4199224208.419922126747900.0
\n", "
" ], "text/plain": [ " Date Open High Low Close \\\n", "0 2014-11-03 4225.810059 4238.459961 4185.410156 4194.029785 \n", "1 2014-11-03 26.049999 26.049999 26.049999 26.049999 \n", "2 2014-11-04 25.500000 25.500000 25.500000 25.500000 \n", "3 2014-11-04 4177.200195 4208.520020 4118.500000 4130.189941 \n", "4 2014-11-05 4163.509766 4214.350098 4145.609863 4208.419922 \n", "\n", " Adj_Close Volume \n", "0 4194.029785 123590300.0 \n", "1 23.429771 200.0 \n", "2 22.935097 2500.0 \n", "3 4130.189941 142148700.0 \n", "4 4208.419922 126747900.0 " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load data table to review available information sorting by Date column in ascending order\n", "\n", "df = pd.read_sql_query('select * from cac40 order by \"Date\" asc', conn)\n", "\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DateOpenHighLowCloseAdj_CloseVolume
02014-11-034225.8100594238.4599614185.4101564194.0297854194.029785123590300.0
12014-11-044177.2001954208.5200204118.5000004130.1899414130.189941142148700.0
22014-11-054163.5097664214.3500984145.6098634208.4199224208.419922126747900.0
32014-11-064193.4799804275.2998054180.3198244227.6801764227.680176163811600.0
42014-11-074238.8701174239.5600594161.1499024189.8901374189.890137144094600.0
52014-11-104184.1801764224.8300784174.9799804222.8198244222.819824123847500.0
62014-11-114227.1201174252.9199224223.6801764244.1000984244.10009899662200.0
72014-11-124232.3398444242.6201174175.2900394179.8798834179.879883122989000.0
82014-11-134203.6699224220.7402344153.1699224187.9501954187.950195131579800.0
92014-11-144208.1098634208.1298834164.7900394202.4599614202.459961109621000.0
\n", "
" ], "text/plain": [ " Date Open High Low Close \\\n", "0 2014-11-03 4225.810059 4238.459961 4185.410156 4194.029785 \n", "1 2014-11-04 4177.200195 4208.520020 4118.500000 4130.189941 \n", "2 2014-11-05 4163.509766 4214.350098 4145.609863 4208.419922 \n", "3 2014-11-06 4193.479980 4275.299805 4180.319824 4227.680176 \n", "4 2014-11-07 4238.870117 4239.560059 4161.149902 4189.890137 \n", "5 2014-11-10 4184.180176 4224.830078 4174.979980 4222.819824 \n", "6 2014-11-11 4227.120117 4252.919922 4223.680176 4244.100098 \n", "7 2014-11-12 4232.339844 4242.620117 4175.290039 4179.879883 \n", "8 2014-11-13 4203.669922 4220.740234 4153.169922 4187.950195 \n", "9 2014-11-14 4208.109863 4208.129883 4164.790039 4202.459961 \n", "\n", " Adj_Close Volume \n", "0 4194.029785 123590300.0 \n", "1 4130.189941 142148700.0 \n", "2 4208.419922 126747900.0 \n", "3 4227.680176 163811600.0 \n", "4 4189.890137 144094600.0 \n", "5 4222.819824 123847500.0 \n", "6 4244.100098 99662200.0 \n", "7 4179.879883 122989000.0 \n", "8 4187.950195 131579800.0 \n", "9 4202.459961 109621000.0 " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load data table to review available data with Volume larger than the specified amount\n", "\n", "df = pd.read_sql_query('select * '\n", " 'from cac40 '\n", " 'where \"Volume\" > 600000', conn)\n", "df.head(10)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Display Volume histogram\n", "\n", "df.Adj_Close.hist(bins=30)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Display Scatter plot\n", "\n", "df.plot.scatter(x='Open', y='Volume')" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DateCAC40_OpenCAC40_HighCAC40_LowCAC40_CloseCAC40_Adj_CloseCAC40_Volume
02014-11-034225.8100594238.4599614185.4101564194.0297854194.029785123590300.0
12014-11-044177.2001954208.5200204118.5000004130.1899414130.189941142148700.0
22014-11-054163.5097664214.3500984145.6098634208.4199224208.419922126747900.0
32014-11-064193.4799804275.2998054180.3198244227.6801764227.680176163811600.0
42014-11-074238.8701174239.5600594161.1499024189.8901374189.890137144094600.0
\n", "
" ], "text/plain": [ " Date CAC40_Open CAC40_High CAC40_Low CAC40_Close \\\n", "0 2014-11-03 4225.810059 4238.459961 4185.410156 4194.029785 \n", "1 2014-11-04 4177.200195 4208.520020 4118.500000 4130.189941 \n", "2 2014-11-05 4163.509766 4214.350098 4145.609863 4208.419922 \n", "3 2014-11-06 4193.479980 4275.299805 4180.319824 4227.680176 \n", "4 2014-11-07 4238.870117 4239.560059 4161.149902 4189.890137 \n", "\n", " CAC40_Adj_Close CAC40_Volume \n", "0 4194.029785 123590300.0 \n", "1 4130.189941 142148700.0 \n", "2 4208.419922 126747900.0 \n", "3 4227.680176 163811600.0 \n", "4 4189.890137 144094600.0 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# re-labeling headers to maintain related table-data together\n", "\n", "df = df.rename(columns={'Open':'CAC40_Open', 'High':'CAC40_High', 'Low':'CAC40_Low', 'Close':'CAC40_Close', 'Adj_Close':'CAC40_Adj_Close', 'Volume':'CAC40_Volume'})\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DateOpenHighLowCloseAdj_CloseVolume
02014-11-0326.04999926.04999926.04999926.04999923.429771200.0
12014-11-0425.50000025.50000025.50000025.50000022.9350972500.0
22014-11-0525.63999925.63999925.63999925.63999923.061012300.0
32014-11-0625.55999925.55999925.55999925.55999922.989059200.0
42014-11-0725.45999925.45999925.45999925.45999922.899120100.0
\n", "
" ], "text/plain": [ " Date Open High Low Close Adj_Close Volume\n", "0 2014-11-03 26.049999 26.049999 26.049999 26.049999 23.429771 200.0\n", "1 2014-11-04 25.500000 25.500000 25.500000 25.500000 22.935097 2500.0\n", "2 2014-11-05 25.639999 25.639999 25.639999 25.639999 23.061012 300.0\n", "3 2014-11-06 25.559999 25.559999 25.559999 25.559999 22.989059 200.0\n", "4 2014-11-07 25.459999 25.459999 25.459999 25.459999 22.899120 100.0" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load second data table to review available information sorting by \"Date\" in ascending order\n", "\n", "df2 = pd.read_sql_query('select * '\n", " 'from dax '\n", " 'order by \"Date\" ASC', conn)\n", "df2.head()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DateOpenHighLowCloseAdj_CloseVolume
02015-01-2226.20999926.44000126.17799926.32000023.67261793600.0
12015-01-2326.87000126.87000126.23000026.23000023.591669106100.0
22015-01-2926.48000027.00000026.48000026.97300024.25993335300.0
32015-02-0327.88999927.88999927.38999927.66799924.88502552300.0
42015-02-0427.67000027.67000027.03000127.13999924.41013380800.0
52015-02-0627.36000127.36000126.73200026.83000024.13131530600.0
62015-02-1328.00000028.00000027.43000027.54999924.77889656200.0
72015-02-1727.87999927.87999927.20000127.37299924.61969957100.0
82015-02-2427.86000128.02000027.67000027.97200025.15844932800.0
92015-03-0228.55999928.55999927.78400028.12999925.30055837700.0
\n", "
" ], "text/plain": [ " Date Open High Low Close Adj_Close Volume\n", "0 2015-01-22 26.209999 26.440001 26.177999 26.320000 23.672617 93600.0\n", "1 2015-01-23 26.870001 26.870001 26.230000 26.230000 23.591669 106100.0\n", "2 2015-01-29 26.480000 27.000000 26.480000 26.973000 24.259933 35300.0\n", "3 2015-02-03 27.889999 27.889999 27.389999 27.667999 24.885025 52300.0\n", "4 2015-02-04 27.670000 27.670000 27.030001 27.139999 24.410133 80800.0\n", "5 2015-02-06 27.360001 27.360001 26.732000 26.830000 24.131315 30600.0\n", "6 2015-02-13 28.000000 28.000000 27.430000 27.549999 24.778896 56200.0\n", "7 2015-02-17 27.879999 27.879999 27.200001 27.372999 24.619699 57100.0\n", "8 2015-02-24 27.860001 28.020000 27.670000 27.972000 25.158449 32800.0\n", "9 2015-03-02 28.559999 28.559999 27.784000 28.129999 25.300558 37700.0" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load data table to review available data with Volume larger than the specified amount\n", "\n", "df2 = pd.read_sql_query('select * '\n", " 'from dax '\n", " 'where \"Volume\" > 30000', conn)\n", "df2.head(10)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DateDAX_OpenDAX_HighDAX_LowDAX_CloseDAX_Adj_CloseDAX_Volume
02015-01-2226.20999926.44000126.17799926.32000023.67261793600.0
12015-01-2326.87000126.87000126.23000026.23000023.591669106100.0
22015-01-2926.48000027.00000026.48000026.97300024.25993335300.0
32015-02-0327.88999927.88999927.38999927.66799924.88502552300.0
42015-02-0427.67000027.67000027.03000127.13999924.41013380800.0
\n", "
" ], "text/plain": [ " Date DAX_Open DAX_High DAX_Low DAX_Close DAX_Adj_Close \\\n", "0 2015-01-22 26.209999 26.440001 26.177999 26.320000 23.672617 \n", "1 2015-01-23 26.870001 26.870001 26.230000 26.230000 23.591669 \n", "2 2015-01-29 26.480000 27.000000 26.480000 26.973000 24.259933 \n", "3 2015-02-03 27.889999 27.889999 27.389999 27.667999 24.885025 \n", "4 2015-02-04 27.670000 27.670000 27.030001 27.139999 24.410133 \n", "\n", " DAX_Volume \n", "0 93600.0 \n", "1 106100.0 \n", "2 35300.0 \n", "3 52300.0 \n", "4 80800.0 " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# re-labeling headers to maintain related table-data together\n", "\n", "df2 = df2.rename(columns=\n", " {'Open':'DAX_Open', 'High':'DAX_High', 'Low':'DAX_Low', 'Close':'DAX_Close', \n", " 'Adj_Close':'DAX_Adj_Close', 'Volume':'DAX_Volume'})\n", "df2.head()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DateCAC40_OpenCAC40_HighCAC40_LowCAC40_CloseCAC40_Adj_CloseCAC40_VolumeDAX_OpenDAX_HighDAX_LowDAX_CloseDAX_Adj_CloseDAX_Volume
02015-01-224486.7597664569.5498054462.1699224552.7998054552.799805208073500.026.20999926.44000126.17799926.32000023.67261793600.0
12015-01-234588.4902344673.2998054585.6401374640.6899414640.689941222514400.026.87000126.87000126.23000026.23000023.591669106100.0
22015-01-294571.0498054632.3798834571.0498054631.4301764631.430176117222200.026.48000027.00000026.48000026.97300024.25993335300.0
32015-02-034651.0698244701.5200204645.1499024677.8999024677.899902146301200.027.88999927.88999927.38999927.66799924.88502552300.0
42015-02-044682.8100594696.2998054651.7797854696.2998054696.299805130750800.027.67000027.67000027.03000127.13999924.41013380800.0
\n", "
" ], "text/plain": [ " Date CAC40_Open CAC40_High CAC40_Low CAC40_Close \\\n", "0 2015-01-22 4486.759766 4569.549805 4462.169922 4552.799805 \n", "1 2015-01-23 4588.490234 4673.299805 4585.640137 4640.689941 \n", "2 2015-01-29 4571.049805 4632.379883 4571.049805 4631.430176 \n", "3 2015-02-03 4651.069824 4701.520020 4645.149902 4677.899902 \n", "4 2015-02-04 4682.810059 4696.299805 4651.779785 4696.299805 \n", "\n", " CAC40_Adj_Close CAC40_Volume DAX_Open DAX_High DAX_Low DAX_Close \\\n", "0 4552.799805 208073500.0 26.209999 26.440001 26.177999 26.320000 \n", "1 4640.689941 222514400.0 26.870001 26.870001 26.230000 26.230000 \n", "2 4631.430176 117222200.0 26.480000 27.000000 26.480000 26.973000 \n", "3 4677.899902 146301200.0 27.889999 27.889999 27.389999 27.667999 \n", "4 4696.299805 130750800.0 27.670000 27.670000 27.030001 27.139999 \n", "\n", " DAX_Adj_Close DAX_Volume \n", "0 23.672617 93600.0 \n", "1 23.591669 106100.0 \n", "2 24.259933 35300.0 \n", "3 24.885025 52300.0 \n", "4 24.410133 80800.0 " ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create new dataframe by joining tables using \"Date\" as primary key\n", "\n", "newdf = df.merge(df2, on='Date', how='inner')\n", "newdf.head()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "# Create a table in PostgreSQL database\n", "# New table called \"master\" in data base containing the newly created data-set\n", "\n", "name_Table = \"master\"\n", "\n", "# Create table statement\n", "\n", "NewTable = \"create table \"+name_Table+\"(Date DATE NOT NULL, CAC40_Open double precision,CAC40_High double precision, CAC40_Low double precision, CAC40_Close double precision, CAC40_Adj_Close double precision, CAC40_Volume numeric, DAX_Open double precision, DAX_High double precision, DAX_Low double precision, DAX_Close double precision, DAX_Adj_Close double precision, DAX_Volume numeric);\"\n", "\n", "cur.execute(NewTable)\n", "\n", "conn.commit()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "cell_style": "center", "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
schemanametablenametableownertablespacehasindexeshasruleshastriggersrowsecurity
0publicdaxpostgresNoneFalseFalseFalseFalse
1publicdowpostgresNoneFalseFalseFalseFalse
2publicstoxxpostgresNoneFalseFalseFalseFalse
3publiccac40postgresNoneTrueFalseFalseFalse
4publicsp500postgresNoneFalseFalseFalseFalse
5publicmasterpostgresNoneFalseFalseFalseFalse
\n", "
" ], "text/plain": [ " schemaname tablename tableowner tablespace hasindexes hasrules \\\n", "0 public dax postgres None False False \n", "1 public dow postgres None False False \n", "2 public stoxx postgres None False False \n", "3 public cac40 postgres None True False \n", "4 public sp500 postgres None False False \n", "5 public master postgres None False False \n", "\n", " hastriggers rowsecurity \n", "0 False False \n", "1 False False \n", "2 False False \n", "3 False False \n", "4 False False \n", "5 False False " ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# List ALL Available Tables in DB\n", "\n", "tables = pd.read_sql_query(\"select * \"\n", " \"from pg_catalog.pg_tables \"\n", " \"where schemaname != 'pg_catalog' and schemaname != 'information_schema'\"\n", " , conn)\n", "tables.head(8)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see on Line 5 of our output, the new table called \"master\" was created" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
datecac40_opencac40_highcac40_lowcac40_closecac40_adj_closecac40_volumedax_opendax_highdax_lowdax_closedax_adj_closedax_volume
\n", "
" ], "text/plain": [ "Empty DataFrame\n", "Columns: [date, cac40_open, cac40_high, cac40_low, cac40_close, cac40_adj_close, cac40_volume, dax_open, dax_high, dax_low, dax_close, dax_adj_close, dax_volume]\n", "Index: []" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# List contents of the new created table\n", "\n", "df3 = pd.read_sql_query('select * '\n", " 'from master ', conn)\n", "df3.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is clear that we have an empty table, thus we'll now load the data" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "# Update records with hard-copy of our new data-set\n", "\n", "newdf.to_csv('/Users/Luchano/Documents/SQL/master.csv', index = False)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "# Update Postgresql database master with new-data-frame information\n", "\n", "with open('/Users/Luchano/Documents/SQL/master.csv', 'r') as f:\n", " next(f) # Skip the header row.\n", " cur.copy_from(f, 'master', sep=',')\n", " conn.commit()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
datecac40_opencac40_highcac40_lowcac40_closecac40_adj_closecac40_volumedax_opendax_highdax_lowdax_closedax_adj_closedax_volume
02015-01-224486.7597664569.5498054462.1699224552.7998054552.799805208073500.026.20999926.44000126.17799926.32000023.67261793600.0
12015-01-234588.4902344673.2998054585.6401374640.6899414640.689941222514400.026.87000126.87000126.23000026.23000023.591669106100.0
22015-01-294571.0498054632.3798834571.0498054631.4301764631.430176117222200.026.48000027.00000026.48000026.97300024.25993335300.0
32015-02-034651.0698244701.5200204645.1499024677.8999024677.899902146301200.027.88999927.88999927.38999927.66799924.88502552300.0
42015-02-044682.8100594696.2998054651.7797854696.2998054696.299805130750800.027.67000027.67000027.03000127.13999924.41013380800.0
\n", "
" ], "text/plain": [ " date cac40_open cac40_high cac40_low cac40_close \\\n", "0 2015-01-22 4486.759766 4569.549805 4462.169922 4552.799805 \n", "1 2015-01-23 4588.490234 4673.299805 4585.640137 4640.689941 \n", "2 2015-01-29 4571.049805 4632.379883 4571.049805 4631.430176 \n", "3 2015-02-03 4651.069824 4701.520020 4645.149902 4677.899902 \n", "4 2015-02-04 4682.810059 4696.299805 4651.779785 4696.299805 \n", "\n", " cac40_adj_close cac40_volume dax_open dax_high dax_low dax_close \\\n", "0 4552.799805 208073500.0 26.209999 26.440001 26.177999 26.320000 \n", "1 4640.689941 222514400.0 26.870001 26.870001 26.230000 26.230000 \n", "2 4631.430176 117222200.0 26.480000 27.000000 26.480000 26.973000 \n", "3 4677.899902 146301200.0 27.889999 27.889999 27.389999 27.667999 \n", "4 4696.299805 130750800.0 27.670000 27.670000 27.030001 27.139999 \n", "\n", " dax_adj_close dax_volume \n", "0 23.672617 93600.0 \n", "1 23.591669 106100.0 \n", "2 24.259933 35300.0 \n", "3 24.885025 52300.0 \n", "4 24.410133 80800.0 " ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# List updated table contents of the new \"master\" table \n", "\n", "master = pd.read_sql_query('select * '\n", " 'from master ', conn)\n", "master.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": { "height": "calc(100% - 180px)", "left": "10px", "top": "150px", "width": "165px" }, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }