Skip to content

Instantly share code, notes, and snippets.

@tomokishii
Created March 29, 2016 02:04
Show Gist options
  • Save tomokishii/25d04c1f73852762d9ac to your computer and use it in GitHub Desktop.
Save tomokishii/25d04c1f73852762d9ac to your computer and use it in GitHub Desktop.
Pandas Date index parse
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
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
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
Display the source blob
Display the rendered blob
Raw
{
"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
}
@tomokishii
Copy link
Author

You need to locate 3 example files in sub-directory ('pandas_date_ex').

プログラムを動かす際,3つのexampleファイルは,サブディレクトリ 'pandas_date_ex' にいれて下さい.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment