{
"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",
" 0 | \n",
" 1 | \n",
" 2 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 始値 | \n",
" 26,910 | \n",
" (09/13 09:00) | \n",
"
\n",
" \n",
" 1 | \n",
" 高値 | \n",
" 27,080 | \n",
" (09/13 09:05) | \n",
"
\n",
" \n",
" 2 | \n",
" 安値 | \n",
" 25,590 | \n",
" (09/13 14:52) | \n",
"
\n",
" \n",
" 3 | \n",
" 出来高(株) | \n",
" 6,017,700 | \n",
" (09/13 15:00) | \n",
"
\n",
" \n",
" 4 | \n",
" 前日終値 | \n",
" 26,690 | \n",
" (09/12) | \n",
"
\n",
" \n",
" 5 | \n",
" 年初来高値 | \n",
" 32,700 | \n",
" (2016/7/19) | \n",
"
\n",
" \n",
" 6 | \n",
" 年初来安値 | \n",
" 13,360 | \n",
" (2016/6/28) | \n",
"
\n",
" \n",
" 7 | \n",
" 発行済株式数(千株) | \n",
" 141,669 | \n",
" | \n",
"
\n",
" \n",
"
\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",
" 0 | \n",
" 1 | \n",
" 2 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 始値 | \n",
" 26,910 | \n",
" (09/13 09:00) | \n",
"
\n",
" \n",
" 1 | \n",
" 高値 | \n",
" 27,080 | \n",
" (09/13 09:05) | \n",
"
\n",
" \n",
" 2 | \n",
" 安値 | \n",
" 25,590 | \n",
" (09/13 14:52) | \n",
"
\n",
" \n",
" 3 | \n",
" 出来高(株) | \n",
" 6,017,700 | \n",
" (09/13 15:00) | \n",
"
\n",
" \n",
" 4 | \n",
" 前日終値 | \n",
" 26,690 | \n",
" (09/12) | \n",
"
\n",
" \n",
"
\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",
" c | \n",
" c_fix | \n",
" ccol | \n",
" cp | \n",
" cp_fix | \n",
" div | \n",
" e | \n",
" ec | \n",
" ec_fix | \n",
" eccol | \n",
" ... | \n",
" l | \n",
" l_cur | \n",
" l_fix | \n",
" lt | \n",
" lt_dts | \n",
" ltt | \n",
" pcls_fix | \n",
" s | \n",
" t | \n",
" yld | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" chb | \n",
" 0 | \n",
" 0 | \n",
" | \n",
" NASDAQ | \n",
" 0.84 | \n",
" 0.84 | \n",
" chg | \n",
" ... | \n",
" 767.05 | \n",
" 767.05 | \n",
" 767.05 | \n",
" Aug 31, 4:00PM EDT | \n",
" 2016-08-31T16:00:02Z | \n",
" 4:00PM EDT | \n",
" 767.05 | \n",
" 1 | \n",
" GOOG | \n",
" | \n",
"
\n",
" \n",
"
\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",
" 0 | \n",
"
\n",
" \n",
" \n",
" \n",
" c | \n",
" 0 | \n",
"
\n",
" \n",
" c_fix | \n",
" 0 | \n",
"
\n",
" \n",
" ccol | \n",
" chb | \n",
"
\n",
" \n",
" cp | \n",
" 0 | \n",
"
\n",
" \n",
" cp_fix | \n",
" 0 | \n",
"
\n",
" \n",
" div | \n",
" | \n",
"
\n",
" \n",
" e | \n",
" NASDAQ | \n",
"
\n",
" \n",
" ec | \n",
" 0.84 | \n",
"
\n",
" \n",
" ec_fix | \n",
" 0.84 | \n",
"
\n",
" \n",
" eccol | \n",
" chg | \n",
"
\n",
" \n",
" ecp | \n",
" 0.11 | \n",
"
\n",
" \n",
" ecp_fix | \n",
" 0.11 | \n",
"
\n",
" \n",
" el | \n",
" 767.89 | \n",
"
\n",
" \n",
" el_cur | \n",
" 767.89 | \n",
"
\n",
" \n",
" el_fix | \n",
" 767.89 | \n",
"
\n",
" \n",
" elt | \n",
" Sep 1, 9:24AM EDT | \n",
"
\n",
" \n",
" id | \n",
" 304466804484872 | \n",
"
\n",
" \n",
" l | \n",
" 767.05 | \n",
"
\n",
" \n",
" l_cur | \n",
" 767.05 | \n",
"
\n",
" \n",
" l_fix | \n",
" 767.05 | \n",
"
\n",
" \n",
" lt | \n",
" Aug 31, 4:00PM EDT | \n",
"
\n",
" \n",
" lt_dts | \n",
" 2016-08-31T16:00:02Z | \n",
"
\n",
" \n",
" ltt | \n",
" 4:00PM EDT | \n",
"
\n",
" \n",
" pcls_fix | \n",
" 767.05 | \n",
"
\n",
" \n",
" s | \n",
" 1 | \n",
"
\n",
" \n",
" t | \n",
" GOOG | \n",
"
\n",
" \n",
" yld | \n",
" | \n",
"
\n",
" \n",
"
\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",
" 1970-01-01 | \n",
" 1970-01-15 | \n",
" 1970-02-11 | \n",
"
\n",
" \n",
" \n",
" \n",
" date | \n",
" 1970-01-01 | \n",
" 1970-01-15 | \n",
" 1970-02-11 | \n",
"
\n",
" \n",
" name | \n",
" 元日 | \n",
" 成人の日 | \n",
" 建国記念の日 | \n",
"
\n",
" \n",
" name_en | \n",
" New Year's Day | \n",
" Coming of Age Day | \n",
" National Foundation Day | \n",
"
\n",
" \n",
" week | \n",
" 木 | \n",
" 木 | \n",
" 水 | \n",
"
\n",
" \n",
" week_en | \n",
" Thursday | \n",
" Thursday | \n",
" Wednesday | \n",
"
\n",
" \n",
"
\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",
" date | \n",
" name | \n",
" name_en | \n",
" week | \n",
" week_en | \n",
"
\n",
" \n",
" \n",
" \n",
" 1970-01-01 | \n",
" 1970-01-01 | \n",
" 元日 | \n",
" New Year's Day | \n",
" 木 | \n",
" Thursday | \n",
"
\n",
" \n",
" 1970-01-15 | \n",
" 1970-01-15 | \n",
" 成人の日 | \n",
" Coming of Age Day | \n",
" 木 | \n",
" Thursday | \n",
"
\n",
" \n",
" 1970-02-11 | \n",
" 1970-02-11 | \n",
" 建国記念の日 | \n",
" National Foundation Day | \n",
" 水 | \n",
" Wednesday | \n",
"
\n",
" \n",
"
\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
}