Created
March 29, 2016 02:04
-
-
Save tomokishii/25d04c1f73852762d9ac to your computer and use it in GitHub Desktop.
Pandas Date index parse
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Date | Open | High | Low | Close | |
---|---|---|---|---|---|
2014/12/31 | 17702.11914 | 17713.75977 | 17450.76953 | 17450.76953 | |
2014/12/30 | 17702.11914 | 17713.75977 | 17450.76953 | 17450.76953 | |
2014/12/29 | 17914.55078 | 17914.55078 | 17525.66016 | 17729.83984 | |
2014/12/26 | 17778.91016 | 17843.73047 | 17769.00977 | 17818.96094 | |
2014/12/25 | 17804.83984 | 17832.4707 | 17773.58984 | 17808.75 | |
2014/12/24 | 17842.03906 | 17875.41016 | 17800.41992 | 17854.23047 | |
2014/12/22 | 17685.5293 | 17692.58008 | 17572.61914 | 17635.14062 | |
2014/12/19 | 17511.00977 | 17621.40039 | 17471.59961 | 17621.40039 | |
2014/12/18 | 17210.05078 | 17210.05078 | 17210.05078 | 17210.05078 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Date | Open | High | Low | Close | Volume | |
---|---|---|---|---|---|---|
15-Mar-16 | 103.96 | 105.18 | 103.85 | 104.58 | 40067734 | |
14-Mar-16 | 101.91 | 102.91 | 101.78 | 102.52 | 25027426 | |
11-Mar-16 | 102.24 | 102.28 | 101.50 | 102.26 | 27200833 | |
10-Mar-16 | 101.41 | 102.24 | 100.15 | 101.17 | 33513577 | |
9-Mar-16 | 101.31 | 101.58 | 100.27 | 101.12 | 27130729 | |
8-Mar-16 | 100.78 | 101.76 | 100.40 | 101.03 | 31274161 | |
7-Mar-16 | 102.39 | 102.83 | 100.96 | 101.87 | 35828909 | |
4-Mar-16 | 102.37 | 103.75 | 101.37 | 103.01 | 45936485 | |
3-Mar-16 | 100.58 | 101.71 | 100.45 | 101.50 | 36792245 | |
2-Mar-16 | 100.51 | 100.89 | 99.64 | 100.75 | 33084941 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Date | Open | High | Low | Close | |
---|---|---|---|---|---|
2014年12月31日 | 17702.11914 | 17713.75977 | 17450.76953 | 17450.76953 | |
2014年12月30日 | 17702.11914 | 17713.75977 | 17450.76953 | 17450.76953 | |
2014年12月29日 | 17914.55078 | 17914.55078 | 17525.66016 | 17729.83984 | |
2014年12月26日 | 17778.91016 | 17843.73047 | 17769.00977 | 17818.96094 | |
2014年12月25日 | 17804.83984 | 17832.4707 | 17773.58984 | 17808.75 | |
2014年12月24日 | 17842.03906 | 17875.41016 | 17800.41992 | 17854.23047 | |
2014年12月22日 | 17685.5293 | 17692.58008 | 17572.61914 | 17635.14062 | |
2014年12月19日 | 17511.00977 | 17621.40039 | 17471.59961 | 17621.40039 | |
2014年12月18日 | 17210.05078 | 17210.05078 | 17210.05078 | 17210.05078 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Pandas Date Index handling\n", | |
"\n", | |
"python ver. 3.5.1 \n", | |
"pandas ver. 0.18.0 " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"import pandas as pd" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Date</th>\n", | |
" <th>Open</th>\n", | |
" <th>High</th>\n", | |
" <th>Low</th>\n", | |
" <th>Close</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>2014/12/31</td>\n", | |
" <td>17702.11914</td>\n", | |
" <td>17713.75977</td>\n", | |
" <td>17450.76953</td>\n", | |
" <td>17450.76953</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2014/12/30</td>\n", | |
" <td>17702.11914</td>\n", | |
" <td>17713.75977</td>\n", | |
" <td>17450.76953</td>\n", | |
" <td>17450.76953</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2014/12/29</td>\n", | |
" <td>17914.55078</td>\n", | |
" <td>17914.55078</td>\n", | |
" <td>17525.66016</td>\n", | |
" <td>17729.83984</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>2014/12/26</td>\n", | |
" <td>17778.91016</td>\n", | |
" <td>17843.73047</td>\n", | |
" <td>17769.00977</td>\n", | |
" <td>17818.96094</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>2014/12/25</td>\n", | |
" <td>17804.83984</td>\n", | |
" <td>17832.47070</td>\n", | |
" <td>17773.58984</td>\n", | |
" <td>17808.75000</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Date Open High Low Close\n", | |
"0 2014/12/31 17702.11914 17713.75977 17450.76953 17450.76953\n", | |
"1 2014/12/30 17702.11914 17713.75977 17450.76953 17450.76953\n", | |
"2 2014/12/29 17914.55078 17914.55078 17525.66016 17729.83984\n", | |
"3 2014/12/26 17778.91016 17843.73047 17769.00977 17818.96094\n", | |
"4 2014/12/25 17804.83984 17832.47070 17773.58984 17808.75000" | |
] | |
}, | |
"execution_count": 2, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df10 = pd.read_csv('./pandas_date_ex/example1.csv')\n", | |
"df10.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Open</th>\n", | |
" <th>High</th>\n", | |
" <th>Low</th>\n", | |
" <th>Close</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>2014-12-31</th>\n", | |
" <td>17702.11914</td>\n", | |
" <td>17713.75977</td>\n", | |
" <td>17450.76953</td>\n", | |
" <td>17450.76953</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2014-12-30</th>\n", | |
" <td>17702.11914</td>\n", | |
" <td>17713.75977</td>\n", | |
" <td>17450.76953</td>\n", | |
" <td>17450.76953</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2014-12-29</th>\n", | |
" <td>17914.55078</td>\n", | |
" <td>17914.55078</td>\n", | |
" <td>17525.66016</td>\n", | |
" <td>17729.83984</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2014-12-26</th>\n", | |
" <td>17778.91016</td>\n", | |
" <td>17843.73047</td>\n", | |
" <td>17769.00977</td>\n", | |
" <td>17818.96094</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2014-12-25</th>\n", | |
" <td>17804.83984</td>\n", | |
" <td>17832.47070</td>\n", | |
" <td>17773.58984</td>\n", | |
" <td>17808.75000</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Open High Low Close\n", | |
"Date \n", | |
"2014-12-31 17702.11914 17713.75977 17450.76953 17450.76953\n", | |
"2014-12-30 17702.11914 17713.75977 17450.76953 17450.76953\n", | |
"2014-12-29 17914.55078 17914.55078 17525.66016 17729.83984\n", | |
"2014-12-26 17778.91016 17843.73047 17769.00977 17818.96094\n", | |
"2014-12-25 17804.83984 17832.47070 17773.58984 17808.75000" | |
] | |
}, | |
"execution_count": 3, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df1 = pd.read_csv('./pandas_date_ex/example1.csv', index_col='Date', parse_dates='Date')\n", | |
"df1.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"pandas.tslib.Timestamp" | |
] | |
}, | |
"execution_count": 4, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# what type of date?\n", | |
"type(df1.index[0])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Date</th>\n", | |
" <th>Open</th>\n", | |
" <th>High</th>\n", | |
" <th>Low</th>\n", | |
" <th>Close</th>\n", | |
" <th>Volume</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>15-Mar-16</td>\n", | |
" <td>103.96</td>\n", | |
" <td>105.18</td>\n", | |
" <td>103.85</td>\n", | |
" <td>104.58</td>\n", | |
" <td>40067734</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>14-Mar-16</td>\n", | |
" <td>101.91</td>\n", | |
" <td>102.91</td>\n", | |
" <td>101.78</td>\n", | |
" <td>102.52</td>\n", | |
" <td>25027426</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>11-Mar-16</td>\n", | |
" <td>102.24</td>\n", | |
" <td>102.28</td>\n", | |
" <td>101.50</td>\n", | |
" <td>102.26</td>\n", | |
" <td>27200833</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>10-Mar-16</td>\n", | |
" <td>101.41</td>\n", | |
" <td>102.24</td>\n", | |
" <td>100.15</td>\n", | |
" <td>101.17</td>\n", | |
" <td>33513577</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>9-Mar-16</td>\n", | |
" <td>101.31</td>\n", | |
" <td>101.58</td>\n", | |
" <td>100.27</td>\n", | |
" <td>101.12</td>\n", | |
" <td>27130729</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Date Open High Low Close Volume\n", | |
"0 15-Mar-16 103.96 105.18 103.85 104.58 40067734\n", | |
"1 14-Mar-16 101.91 102.91 101.78 102.52 25027426\n", | |
"2 11-Mar-16 102.24 102.28 101.50 102.26 27200833\n", | |
"3 10-Mar-16 101.41 102.24 100.15 101.17 33513577\n", | |
"4 9-Mar-16 101.31 101.58 100.27 101.12 27130729" | |
] | |
}, | |
"execution_count": 5, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df20 = pd.read_csv('./pandas_date_ex/example2.csv')\n", | |
"df20.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Open</th>\n", | |
" <th>High</th>\n", | |
" <th>Low</th>\n", | |
" <th>Close</th>\n", | |
" <th>Volume</th>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>Date</th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>2016-03-15</th>\n", | |
" <td>103.96</td>\n", | |
" <td>105.18</td>\n", | |
" <td>103.85</td>\n", | |
" <td>104.58</td>\n", | |
" <td>40067734</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2016-03-14</th>\n", | |
" <td>101.91</td>\n", | |
" <td>102.91</td>\n", | |
" <td>101.78</td>\n", | |
" <td>102.52</td>\n", | |
" <td>25027426</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2016-03-11</th>\n", | |
" <td>102.24</td>\n", | |
" <td>102.28</td>\n", | |
" <td>101.50</td>\n", | |
" <td>102.26</td>\n", | |
" <td>27200833</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2016-03-10</th>\n", | |
" <td>101.41</td>\n", | |
" <td>102.24</td>\n", | |
" <td>100.15</td>\n", | |
" <td>101.17</td>\n", | |
" <td>33513577</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2016-03-09</th>\n", | |
" <td>101.31</td>\n", | |
" <td>101.58</td>\n", | |
" <td>100.27</td>\n", | |
" <td>101.12</td>\n", | |
" <td>27130729</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Open High Low Close Volume\n", | |
"Date \n", | |
"2016-03-15 103.96 105.18 103.85 104.58 40067734\n", | |
"2016-03-14 101.91 102.91 101.78 102.52 25027426\n", | |
"2016-03-11 102.24 102.28 101.50 102.26 27200833\n", | |
"2016-03-10 101.41 102.24 100.15 101.17 33513577\n", | |
"2016-03-09 101.31 101.58 100.27 101.12 27130729" | |
] | |
}, | |
"execution_count": 6, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df2 = pd.read_csv('./pandas_date_ex/example2.csv', index_col=0, parse_dates=0)\n", | |
"df2.head()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### 日付表記のいろいろなケース\n", | |
"- 年,月,日の順番が変わるケース.\n", | |
"- 月,日が1桁の数字になるとき,ゼロ埋めして桁数を2桁にしている,or 1桁で表示している.\n", | |
"- 年の表示が4桁,または下2桁.\n", | |
"- 月が数字表記,英字(3文字の略称)のケース\n", | |
"\n", | |
"ほとんどのケースにread_csv()のパーサは対応可能のようだ." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Date</th>\n", | |
" <th>Open</th>\n", | |
" <th>High</th>\n", | |
" <th>Low</th>\n", | |
" <th>Close</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>2014年12月31日</td>\n", | |
" <td>17702.11914</td>\n", | |
" <td>17713.75977</td>\n", | |
" <td>17450.76953</td>\n", | |
" <td>17450.76953</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2014年12月30日</td>\n", | |
" <td>17702.11914</td>\n", | |
" <td>17713.75977</td>\n", | |
" <td>17450.76953</td>\n", | |
" <td>17450.76953</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2014年12月29日</td>\n", | |
" <td>17914.55078</td>\n", | |
" <td>17914.55078</td>\n", | |
" <td>17525.66016</td>\n", | |
" <td>17729.83984</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>2014年12月26日</td>\n", | |
" <td>17778.91016</td>\n", | |
" <td>17843.73047</td>\n", | |
" <td>17769.00977</td>\n", | |
" <td>17818.96094</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>2014年12月25日</td>\n", | |
" <td>17804.83984</td>\n", | |
" <td>17832.47070</td>\n", | |
" <td>17773.58984</td>\n", | |
" <td>17808.75000</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Date Open High Low Close\n", | |
"0 2014年12月31日 17702.11914 17713.75977 17450.76953 17450.76953\n", | |
"1 2014年12月30日 17702.11914 17713.75977 17450.76953 17450.76953\n", | |
"2 2014年12月29日 17914.55078 17914.55078 17525.66016 17729.83984\n", | |
"3 2014年12月26日 17778.91016 17843.73047 17769.00977 17818.96094\n", | |
"4 2014年12月25日 17804.83984 17832.47070 17773.58984 17808.75000" | |
] | |
}, | |
"execution_count": 7, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Japanese Date Expression?\n", | |
"df30 = pd.read_csv('./pandas_date_ex/example3.csv')\n", | |
"df30.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Open</th>\n", | |
" <th>High</th>\n", | |
" <th>Low</th>\n", | |
" <th>Close</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>2014年12月31日</th>\n", | |
" <td>17702.11914</td>\n", | |
" <td>17713.75977</td>\n", | |
" <td>17450.76953</td>\n", | |
" <td>17450.76953</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2014年12月30日</th>\n", | |
" <td>17702.11914</td>\n", | |
" <td>17713.75977</td>\n", | |
" <td>17450.76953</td>\n", | |
" <td>17450.76953</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2014年12月29日</th>\n", | |
" <td>17914.55078</td>\n", | |
" <td>17914.55078</td>\n", | |
" <td>17525.66016</td>\n", | |
" <td>17729.83984</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2014年12月26日</th>\n", | |
" <td>17778.91016</td>\n", | |
" <td>17843.73047</td>\n", | |
" <td>17769.00977</td>\n", | |
" <td>17818.96094</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2014年12月25日</th>\n", | |
" <td>17804.83984</td>\n", | |
" <td>17832.47070</td>\n", | |
" <td>17773.58984</td>\n", | |
" <td>17808.75000</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Open High Low Close\n", | |
"Date \n", | |
"2014年12月31日 17702.11914 17713.75977 17450.76953 17450.76953\n", | |
"2014年12月30日 17702.11914 17713.75977 17450.76953 17450.76953\n", | |
"2014年12月29日 17914.55078 17914.55078 17525.66016 17729.83984\n", | |
"2014年12月26日 17778.91016 17843.73047 17769.00977 17818.96094\n", | |
"2014年12月25日 17804.83984 17832.47070 17773.58984 17808.75000" | |
] | |
}, | |
"execution_count": 8, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df31 = pd.read_csv('./pandas_date_ex/example3.csv', index_col='Date', parse_dates='Date')\n", | |
"df31.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"str" | |
] | |
}, | |
"execution_count": 9, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# In this case, index is not TimeStamp type.\n", | |
"type(df31.index[0])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Open</th>\n", | |
" <th>High</th>\n", | |
" <th>Low</th>\n", | |
" <th>Close</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>2014-12-31</th>\n", | |
" <td>17702.11914</td>\n", | |
" <td>17713.75977</td>\n", | |
" <td>17450.76953</td>\n", | |
" <td>17450.76953</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2014-12-30</th>\n", | |
" <td>17702.11914</td>\n", | |
" <td>17713.75977</td>\n", | |
" <td>17450.76953</td>\n", | |
" <td>17450.76953</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2014-12-29</th>\n", | |
" <td>17914.55078</td>\n", | |
" <td>17914.55078</td>\n", | |
" <td>17525.66016</td>\n", | |
" <td>17729.83984</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2014-12-26</th>\n", | |
" <td>17778.91016</td>\n", | |
" <td>17843.73047</td>\n", | |
" <td>17769.00977</td>\n", | |
" <td>17818.96094</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2014-12-25</th>\n", | |
" <td>17804.83984</td>\n", | |
" <td>17832.47070</td>\n", | |
" <td>17773.58984</td>\n", | |
" <td>17808.75000</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Open High Low Close\n", | |
"Date \n", | |
"2014-12-31 17702.11914 17713.75977 17450.76953 17450.76953\n", | |
"2014-12-30 17702.11914 17713.75977 17450.76953 17450.76953\n", | |
"2014-12-29 17914.55078 17914.55078 17525.66016 17729.83984\n", | |
"2014-12-26 17778.91016 17843.73047 17769.00977 17818.96094\n", | |
"2014-12-25 17804.83984 17832.47070 17773.58984 17808.75000" | |
] | |
}, | |
"execution_count": 10, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"f3 = '%Y年%m月%d日'\n", | |
"my_parser = lambda date: pd.datetime.strptime(date, f3)\n", | |
"df3 = pd.read_csv('./pandas_date_ex/example3.csv', index_col=0, parse_dates=0, \n", | |
" date_parser=my_parser)\n", | |
"df3.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"pandas.tslib.Timestamp" | |
] | |
}, | |
"execution_count": 11, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"type(df3.index[0])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Open</th>\n", | |
" <th>High</th>\n", | |
" <th>Low</th>\n", | |
" <th>Close</th>\n", | |
" <th>Volume</th>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>Date</th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>2016-03-15</th>\n", | |
" <td>103.96</td>\n", | |
" <td>105.18</td>\n", | |
" <td>103.85</td>\n", | |
" <td>104.58</td>\n", | |
" <td>40067734</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2016-03-14</th>\n", | |
" <td>101.91</td>\n", | |
" <td>102.91</td>\n", | |
" <td>101.78</td>\n", | |
" <td>102.52</td>\n", | |
" <td>25027426</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2016-03-11</th>\n", | |
" <td>102.24</td>\n", | |
" <td>102.28</td>\n", | |
" <td>101.50</td>\n", | |
" <td>102.26</td>\n", | |
" <td>27200833</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2016-03-10</th>\n", | |
" <td>101.41</td>\n", | |
" <td>102.24</td>\n", | |
" <td>100.15</td>\n", | |
" <td>101.17</td>\n", | |
" <td>33513577</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2016-03-09</th>\n", | |
" <td>101.31</td>\n", | |
" <td>101.58</td>\n", | |
" <td>100.27</td>\n", | |
" <td>101.12</td>\n", | |
" <td>27130729</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Open High Low Close Volume\n", | |
"Date \n", | |
"2016-03-15 103.96 105.18 103.85 104.58 40067734\n", | |
"2016-03-14 101.91 102.91 101.78 102.52 25027426\n", | |
"2016-03-11 102.24 102.28 101.50 102.26 27200833\n", | |
"2016-03-10 101.41 102.24 100.15 101.17 33513577\n", | |
"2016-03-09 101.31 101.58 100.27 101.12 27130729" | |
] | |
}, | |
"execution_count": 12, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"f2 = '%d-%b-%y'\n", | |
"my_parser = lambda date: pd.datetime.strptime(date, f2)\n", | |
"df21 = pd.read_csv('./pandas_date_ex/example2.csv', index_col=0, parse_dates=0, \n", | |
" date_parser=my_parser)\n", | |
"df21.head()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## 日付フォーマットについて\n", | |
"日付フォーマットの仕様は,C言語から来ているとのことで,Python Datetimeのドキュメントに記載されている. \n", | |
"\n", | |
"日付関連でよく使いそうなフォーマットについて,ドキュメントから抜粋してみる. \n", | |
"\n", | |
"| ディレクティブ | 意味 | 例 |\n", | |
"|:----------------:|:--------|:-------|\n", | |
"| %d\t| 0埋め(zero padding)した10進数で表記した月中の日にち. | 01, 02, ..., 31 |\n", | |
"| %b | ロケールの月名を短縮形で表示します. | Jan, Feb, ..., Dec (en_US); Jan, Feb, ..., Dez (de_DE) |\n", | |
"| %B | ロケールの月名を表示します. | January, February, ..., |\n", | |
"| %m | 0埋めした10進数で表記した月. | 01, 02, ..., 12 |\n", | |
"| %y | 0埋めした10進数で表記した世紀あり(2桁)の年. | 00, 01, ..., 99 |\n", | |
"| %Y | 西暦 ( 4桁) の 10 進表記を表します. | 2011, 2012, 2013, ... |" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"2016-03-28 00:00:00\n" | |
] | |
} | |
], | |
"source": [ | |
"# Confirmation of the table\n", | |
"from datetime import datetime\n", | |
"s2 = '28-Mar-16'\n", | |
"f2 = '%d-%b-%y'\n", | |
"print(datetime.strptime(s2, f2))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"2009-12-01 00:00:00\n" | |
] | |
} | |
], | |
"source": [ | |
"s3 = '1-Dec-09'\n", | |
"f3 = '%d-%b-%y'\n", | |
"print(datetime.strptime(s3, f3))\n", | |
"# s3 = '1-Dec-9' is No good" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"2015-09-01 00:00:00\n" | |
] | |
} | |
], | |
"source": [ | |
"s4 = '1-9-2015'\n", | |
"f4 = '%d-%m-%Y'\n", | |
"print(datetime.strptime(s4, f4))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"datetime.datetime" | |
] | |
}, | |
"execution_count": 16, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"type(datetime.strptime(s4, f4))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Open</th>\n", | |
" <th>High</th>\n", | |
" <th>Low</th>\n", | |
" <th>Close</th>\n", | |
" <th>Volume</th>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>Date</th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>2016-03-15</th>\n", | |
" <td>103.96</td>\n", | |
" <td>105.18</td>\n", | |
" <td>103.85</td>\n", | |
" <td>104.58</td>\n", | |
" <td>40067734</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2016-03-14</th>\n", | |
" <td>101.91</td>\n", | |
" <td>102.91</td>\n", | |
" <td>101.78</td>\n", | |
" <td>102.52</td>\n", | |
" <td>25027426</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2016-03-11</th>\n", | |
" <td>102.24</td>\n", | |
" <td>102.28</td>\n", | |
" <td>101.50</td>\n", | |
" <td>102.26</td>\n", | |
" <td>27200833</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2016-03-10</th>\n", | |
" <td>101.41</td>\n", | |
" <td>102.24</td>\n", | |
" <td>100.15</td>\n", | |
" <td>101.17</td>\n", | |
" <td>33513577</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2016-03-09</th>\n", | |
" <td>101.31</td>\n", | |
" <td>101.58</td>\n", | |
" <td>100.27</td>\n", | |
" <td>101.12</td>\n", | |
" <td>27130729</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Open High Low Close Volume\n", | |
"Date \n", | |
"2016-03-15 103.96 105.18 103.85 104.58 40067734\n", | |
"2016-03-14 101.91 102.91 101.78 102.52 25027426\n", | |
"2016-03-11 102.24 102.28 101.50 102.26 27200833\n", | |
"2016-03-10 101.41 102.24 100.15 101.17 33513577\n", | |
"2016-03-09 101.31 101.58 100.27 101.12 27130729" | |
] | |
}, | |
"execution_count": 17, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"f2 = '%d-%b-%y'\n", | |
"my_parser = lambda date: pd.datetime.strptime(date, f2)\n", | |
"df21 = pd.read_csv('./pandas_date_ex/example2.csv', index_col=0, parse_dates=0, \n", | |
" date_parser=my_parser)\n", | |
"df21.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 18, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.axes._subplots.AxesSubplot at 0x7fedd7e7f518>" | |
] | |
}, | |
"execution_count": 18, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\nAA+CIAiCHuR/B6i3g6XmmugAAAAASUVORK5CYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7fedd7e63a20>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"%matplotlib inline\n", | |
"df3[['High', 'Low']].plot(figsize=(8,4), grid=True)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"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.5.1" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 0 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You need to locate 3 example files in sub-directory ('pandas_date_ex').
プログラムを動かす際,3つのexampleファイルは,サブディレクトリ 'pandas_date_ex' にいれて下さい.