{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Case3-1: マジックコマンドを自作してみる \n", "Create own magic command" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2016-09-17T13:53:08.333228", "start_time": "2016-09-17T13:53:07.515201" }, "collapsed": false }, "outputs": [], "source": [ "import functools\n", "from IPython.core.magic import register_line_magic, register_cell_magic\n", "from IPython.display import IFrame\n", "import pandas as pd\n", "import yaml\n", "import ast\n", "from io import StringIO" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2016-09-02T17:54:45.409012", "start_time": "2016-09-02T17:54:45.405011" } }, "source": [ "## line magic" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2016-09-17T13:53:08.345200", "start_time": "2016-09-17T13:53:08.335197" }, "collapsed": true }, "outputs": [], "source": [ "@register_line_magic\n", "def ms(code):\n", " url = \"https://www.morningstar.co.jp/StockInfo/info/snap/{0}\".format(code)\n", " print(url)\n", " return IFrame(url, \"100%\", 600)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2016-09-17T13:53:08.394202", "start_time": "2016-09-17T13:53:08.351200" }, "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "https://www.morningstar.co.jp/StockInfo/info/snap/7974\n" ] }, { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%ms 7974" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## cell magic" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2016-09-17T13:53:08.409202", "start_time": "2016-09-17T13:53:08.398201" }, "collapsed": true }, "outputs": [], "source": [ "@register_cell_magic\n", "def csv(line, cell):\n", " sio = StringIO(cell)\n", " if line:\n", " options = dict(ast.literal_eval(line))\n", " return pd.read_csv(sio, **options)\n", " else:\n", " return pd.read_csv(sio)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2016-09-17T13:53:08.431202", "start_time": "2016-09-17T13:53:08.412199" }, "collapsed": false }, "outputs": [], "source": [ "@register_cell_magic\n", "def yml(line, cell):\n", " sio = StringIO(cell)\n", " return pd.DataFrame(yaml.load(sio))" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2016-09-17T13:53:08.449200", "start_time": "2016-09-17T13:53:08.434198" }, "collapsed": false }, "outputs": [], "source": [ "@register_cell_magic\n", "def json(line, cell):\n", " sio = StringIO(cell)\n", " return pd.read_json(sio)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### csv形式のデータをDataFrameに変換 \n", "convert csv data into DataFrame" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2016-09-05T17:21:25.187404", "start_time": "2016-09-05T17:21:25.181382" } }, "source": [ "pandas.read_html()では読み込めないがコピペすることでDataFrameとして取り込める \n", "cannot read data by pdandas.read_html(), but can fetch data as DataFrame by copy&paste" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2016-09-17T13:53:08.501202", "start_time": "2016-09-17T13:53:08.454200" }, "collapsed": false }, "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", "
012
0始値26,910(09/13 09:00)
1高値27,080(09/13 09:05)
2安値25,590(09/13 14:52)
3出来高(株)6,017,700(09/13 15:00)
4前日終値26,690(09/12)
5年初来高値32,700(2016/7/19)
6年初来安値13,360(2016/6/28)
7発行済株式数(千株)141,669
\n", "
" ], "text/plain": [ " 0 1 2\n", "0 始値 26,910 (09/13 09:00)\n", "1 高値 27,080 (09/13 09:05)\n", "2 安値 25,590 (09/13 14:52)\n", "3 出来高(株) 6,017,700 (09/13 15:00)\n", "4 前日終値 26,690 (09/12)\n", "5 年初来高値 32,700 (2016/7/19)\n", "6 年初来安値 13,360 (2016/6/28)\n", "7 発行済株式数(千株) 141,669 " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%csv {'sep': '\\t', 'header': None}\n", "始値\t26,910\t(09/13 09:00)\n", "高値\t27,080\t(09/13 09:05)\n", "安値\t25,590\t(09/13 14:52)\n", "出来高(株)\t6,017,700\t(09/13 15:00)\n", "前日終値\t26,690\t(09/12)\n", "年初来高値\t32,700\t(2016/7/19)\n", "年初来安値\t13,360\t(2016/6/28)\n", "発行済株式数(千株)\t141,669\t " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\_ に直前の結果が格納されている \n", "store the previous output in \\_" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2016-09-17T13:53:08.511198", "start_time": "2016-09-17T13:53:08.506202" }, "collapsed": true }, "outputs": [], "source": [ "df = _" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2016-09-17T13:53:08.546197", "start_time": "2016-09-17T13:53:08.515200" }, "collapsed": false }, "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", "
012
0始値26,910(09/13 09:00)
1高値27,080(09/13 09:05)
2安値25,590(09/13 14:52)
3出来高(株)6,017,700(09/13 15:00)
4前日終値26,690(09/12)
\n", "
" ], "text/plain": [ " 0 1 2\n", "0 始値 26,910 (09/13 09:00)\n", "1 高値 27,080 (09/13 09:05)\n", "2 安値 25,590 (09/13 14:52)\n", "3 出来高(株) 6,017,700 (09/13 15:00)\n", "4 前日終値 26,690 (09/12)" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2016-09-09T10:05:05.488199", "start_time": "2016-09-09T10:05:05.484195" }, "collapsed": true }, "source": [ "### json形式のデータをDataFrameに変換 \n", "Covert json type data into DataFrame" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> * json data \n", "> https://www.google.com/finance/info?q=NASDAQ%3aGOOG" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2016-09-17T13:53:08.643198", "start_time": "2016-09-17T13:53:08.552201" }, "collapsed": false, "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", "
cc_fixccolcpcp_fixdiveecec_fixeccol...ll_curl_fixltlt_dtslttpcls_fixstyld
000chb00NASDAQ0.840.84chg...767.05767.05767.05Aug 31, 4:00PM EDT2016-08-31T16:00:02Z4:00PM EDT767.051GOOG
\n", "

1 rows × 27 columns

\n", "
" ], "text/plain": [ " c c_fix ccol cp cp_fix div e ec ec_fix eccol ... l \\\n", "0 0 0 chb 0 0 NASDAQ 0.84 0.84 chg ... 767.05 \n", "\n", " l_cur l_fix lt lt_dts ltt \\\n", "0 767.05 767.05 Aug 31, 4:00PM EDT 2016-08-31T16:00:02Z 4:00PM EDT \n", "\n", " pcls_fix s t yld \n", "0 767.05 1 GOOG \n", "\n", "[1 rows x 27 columns]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%json\n", "[ { \"id\": \"304466804484872\" ,\"t\" : \"GOOG\" ,\"e\" : \"NASDAQ\" ,\"l\" : \"767.05\" ,\"l_fix\" : \"767.05\" ,\"l_cur\" : \"767.05\" ,\"s\": \"1\" ,\"ltt\":\"4:00PM EDT\" ,\"lt\" : \"Aug 31, 4:00PM EDT\" ,\"lt_dts\" : \"2016-08-31T16:00:02Z\" ,\"c\" : \"0.00\" ,\"c_fix\" : \"0.00\" ,\"cp\" : \"0.00\" ,\"cp_fix\" : \"0.00\" ,\"ccol\" : \"chb\" ,\"pcls_fix\" : \"767.05\" ,\"el\": \"767.89\" ,\"el_fix\": \"767.89\" ,\"el_cur\": \"767.89\" ,\"elt\" : \"Sep 1, 9:24AM EDT\" ,\"ec\" : \"+0.84\" ,\"ec_fix\" : \"0.84\" ,\"ecp\" : \"0.11\" ,\"ecp_fix\" : \"0.11\" ,\"eccol\" : \"chg\" ,\"div\" : \"\" ,\"yld\" : \"\" } ]" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2016-09-17T13:53:08.679198", "start_time": "2016-09-17T13:53:08.650198" }, "collapsed": false }, "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", " \n", "
0
c0
c_fix0
ccolchb
cp0
cp_fix0
div
eNASDAQ
ec0.84
ec_fix0.84
eccolchg
ecp0.11
ecp_fix0.11
el767.89
el_cur767.89
el_fix767.89
eltSep 1, 9:24AM EDT
id304466804484872
l767.05
l_cur767.05
l_fix767.05
ltAug 31, 4:00PM EDT
lt_dts2016-08-31T16:00:02Z
ltt4:00PM EDT
pcls_fix767.05
s1
tGOOG
yld
\n", "
" ], "text/plain": [ " 0\n", "c 0\n", "c_fix 0\n", "ccol chb\n", "cp 0\n", "cp_fix 0\n", "div \n", "e NASDAQ\n", "ec 0.84\n", "ec_fix 0.84\n", "eccol chg\n", "ecp 0.11\n", "ecp_fix 0.11\n", "el 767.89\n", "el_cur 767.89\n", "el_fix 767.89\n", "elt Sep 1, 9:24AM EDT\n", "id 304466804484872\n", "l 767.05\n", "l_cur 767.05\n", "l_fix 767.05\n", "lt Aug 31, 4:00PM EDT\n", "lt_dts 2016-08-31T16:00:02Z\n", "ltt 4:00PM EDT\n", "pcls_fix 767.05\n", "s 1\n", "t GOOG\n", "yld " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "_.T" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### yaml形式のデータをDataFrameに変換 \n", "convert yaml type data into DataFrame" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "yaml data at [Case2-3](Case2-3.ipynb)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2016-09-17T13:53:08.720197", "start_time": "2016-09-17T13:53:08.684203" }, "collapsed": false }, "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", "
1970-01-011970-01-151970-02-11
date1970-01-011970-01-151970-02-11
name元日成人の日建国記念の日
name_enNew Year's DayComing of Age DayNational Foundation Day
week
week_enThursdayThursdayWednesday
\n", "
" ], "text/plain": [ " 1970-01-01 1970-01-15 1970-02-11\n", "date 1970-01-01 1970-01-15 1970-02-11\n", "name 元日 成人の日 建国記念の日\n", "name_en New Year's Day Coming of Age Day National Foundation Day\n", "week 木 木 水\n", "week_en Thursday Thursday Wednesday" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%yml\n", "1970-01-01:\n", " date: 1970-01-01\n", " week: 木\n", " week_en: Thursday\n", " name: 元日\n", " name_en: \"New Year's Day\"\n", "\n", "1970-01-15:\n", " date: 1970-01-15\n", " week: 木\n", " week_en: Thursday\n", " name: 成人の日\n", " name_en: \"Coming of Age Day\"\n", "\n", "1970-02-11:\n", " date: 1970-02-11\n", " week: 水\n", " week_en: Wednesday\n", " name: 建国記念の日\n", " name_en: \"National Foundation Day\"" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2016-09-17T13:53:08.767201", "start_time": "2016-09-17T13:53:08.724202" }, "collapsed": false }, "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", "
datenamename_enweekweek_en
1970-01-011970-01-01元日New Year's DayThursday
1970-01-151970-01-15成人の日Coming of Age DayThursday
1970-02-111970-02-11建国記念の日National Foundation DayWednesday
\n", "
" ], "text/plain": [ " date name name_en week week_en\n", "1970-01-01 1970-01-01 元日 New Year's Day 木 Thursday\n", "1970-01-15 1970-01-15 成人の日 Coming of Age Day 木 Thursday\n", "1970-02-11 1970-02-11 建国記念の日 National Foundation Day 水 Wednesday" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "_.T" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "hide_input": false, "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.5.1" }, "nav_menu": {}, "toc": { "navigate_menu": true, "number_sections": true, "sideBar": true, "threshold": 6, "toc_cell": false, "toc_section_display": "block", "toc_window_display": true } }, "nbformat": 4, "nbformat_minor": 1 }