Skip to content

Instantly share code, notes, and snippets.

@keimina
Created June 10, 2020 11:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save keimina/107b6fcd655aca669cba244877554ea1 to your computer and use it in GitHub Desktop.
Save keimina/107b6fcd655aca669cba244877554ea1 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"data = pd.read_csv('examples/macrodata.csv')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"periods = pd.PeriodIndex(year=data.year, quarter=data.quarter, name='date')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 1959.0\n",
"1 1959.0\n",
"2 1959.0\n",
"3 1959.0\n",
"4 1960.0\n",
" ... \n",
"198 2008.0\n",
"199 2008.0\n",
"200 2009.0\n",
"201 2009.0\n",
"202 2009.0\n",
"Name: year, Length: 203, dtype: float64"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.year"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 1.0\n",
"1 2.0\n",
"2 3.0\n",
"3 4.0\n",
"4 1.0\n",
" ... \n",
"198 3.0\n",
"199 4.0\n",
"200 1.0\n",
"201 2.0\n",
"202 3.0\n",
"Name: quarter, Length: 203, dtype: float64"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.quarter"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"PeriodIndex(['1959Q1', '1959Q2', '1959Q3', '1959Q4', '1960Q1', '1960Q2',\n",
" '1960Q3', '1960Q4', '1961Q1', '1961Q2',\n",
" ...\n",
" '2007Q2', '2007Q3', '2007Q4', '2008Q1', '2008Q2', '2008Q3',\n",
" '2008Q4', '2009Q1', '2009Q2', '2009Q3'],\n",
" dtype='period[Q-DEC]', name='date', length=203, freq='Q-DEC')"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"periods"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"columns = pd.Index(['realgdp', 'infl', 'unemp'], name='item')"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"data = data.reindex(columns=columns)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"DatetimeIndex(['1959-03-31 23:59:59.999999999',\n",
" '1959-06-30 23:59:59.999999999',\n",
" '1959-09-30 23:59:59.999999999',\n",
" '1959-12-31 23:59:59.999999999',\n",
" '1960-03-31 23:59:59.999999999',\n",
" '1960-06-30 23:59:59.999999999',\n",
" '1960-09-30 23:59:59.999999999',\n",
" '1960-12-31 23:59:59.999999999',\n",
" '1961-03-31 23:59:59.999999999',\n",
" '1961-06-30 23:59:59.999999999',\n",
" ...\n",
" '2007-06-30 23:59:59.999999999',\n",
" '2007-09-30 23:59:59.999999999',\n",
" '2007-12-31 23:59:59.999999999',\n",
" '2008-03-31 23:59:59.999999999',\n",
" '2008-06-30 23:59:59.999999999',\n",
" '2008-09-30 23:59:59.999999999',\n",
" '2008-12-31 23:59:59.999999999',\n",
" '2009-03-31 23:59:59.999999999',\n",
" '2009-06-30 23:59:59.999999999',\n",
" '2009-09-30 23:59:59.999999999'],\n",
" dtype='datetime64[ns]', name='date', length=203, freq='Q-DEC')"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"periods.to_timestamp('D', 'end')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"data.index = periods.to_timestamp('D', 'end')"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"date item \n",
"1959-03-31 23:59:59.999999999 realgdp 2710.349\n",
" infl 0.000\n",
" unemp 5.800\n",
"1959-06-30 23:59:59.999999999 realgdp 2778.801\n",
" infl 2.340\n",
" ... \n",
"2009-06-30 23:59:59.999999999 infl 3.370\n",
" unemp 9.200\n",
"2009-09-30 23:59:59.999999999 realgdp 12990.341\n",
" infl 3.560\n",
" unemp 9.600\n",
"Length: 609, dtype: float64"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ldata = data.stack()\n",
"ldata"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>date</th>\n",
" <th>item</th>\n",
" <th>0</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>1959-03-31 23:59:59.999999999</td>\n",
" <td>realgdp</td>\n",
" <td>2710.349</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>1959-03-31 23:59:59.999999999</td>\n",
" <td>infl</td>\n",
" <td>0.000</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>1959-03-31 23:59:59.999999999</td>\n",
" <td>unemp</td>\n",
" <td>5.800</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>1959-06-30 23:59:59.999999999</td>\n",
" <td>realgdp</td>\n",
" <td>2778.801</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>1959-06-30 23:59:59.999999999</td>\n",
" <td>infl</td>\n",
" <td>2.340</td>\n",
" </tr>\n",
" <tr>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <td>604</td>\n",
" <td>2009-06-30 23:59:59.999999999</td>\n",
" <td>infl</td>\n",
" <td>3.370</td>\n",
" </tr>\n",
" <tr>\n",
" <td>605</td>\n",
" <td>2009-06-30 23:59:59.999999999</td>\n",
" <td>unemp</td>\n",
" <td>9.200</td>\n",
" </tr>\n",
" <tr>\n",
" <td>606</td>\n",
" <td>2009-09-30 23:59:59.999999999</td>\n",
" <td>realgdp</td>\n",
" <td>12990.341</td>\n",
" </tr>\n",
" <tr>\n",
" <td>607</td>\n",
" <td>2009-09-30 23:59:59.999999999</td>\n",
" <td>infl</td>\n",
" <td>3.560</td>\n",
" </tr>\n",
" <tr>\n",
" <td>608</td>\n",
" <td>2009-09-30 23:59:59.999999999</td>\n",
" <td>unemp</td>\n",
" <td>9.600</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>609 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" date item 0\n",
"0 1959-03-31 23:59:59.999999999 realgdp 2710.349\n",
"1 1959-03-31 23:59:59.999999999 infl 0.000\n",
"2 1959-03-31 23:59:59.999999999 unemp 5.800\n",
"3 1959-06-30 23:59:59.999999999 realgdp 2778.801\n",
"4 1959-06-30 23:59:59.999999999 infl 2.340\n",
".. ... ... ...\n",
"604 2009-06-30 23:59:59.999999999 infl 3.370\n",
"605 2009-06-30 23:59:59.999999999 unemp 9.200\n",
"606 2009-09-30 23:59:59.999999999 realgdp 12990.341\n",
"607 2009-09-30 23:59:59.999999999 infl 3.560\n",
"608 2009-09-30 23:59:59.999999999 unemp 9.600\n",
"\n",
"[609 rows x 3 columns]"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ldata = ldata.reset_index()\n",
"ldata"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>date</th>\n",
" <th>item</th>\n",
" <th>value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>1959-03-31 23:59:59.999999999</td>\n",
" <td>realgdp</td>\n",
" <td>2710.349</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>1959-03-31 23:59:59.999999999</td>\n",
" <td>infl</td>\n",
" <td>0.000</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>1959-03-31 23:59:59.999999999</td>\n",
" <td>unemp</td>\n",
" <td>5.800</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>1959-06-30 23:59:59.999999999</td>\n",
" <td>realgdp</td>\n",
" <td>2778.801</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>1959-06-30 23:59:59.999999999</td>\n",
" <td>infl</td>\n",
" <td>2.340</td>\n",
" </tr>\n",
" <tr>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <td>604</td>\n",
" <td>2009-06-30 23:59:59.999999999</td>\n",
" <td>infl</td>\n",
" <td>3.370</td>\n",
" </tr>\n",
" <tr>\n",
" <td>605</td>\n",
" <td>2009-06-30 23:59:59.999999999</td>\n",
" <td>unemp</td>\n",
" <td>9.200</td>\n",
" </tr>\n",
" <tr>\n",
" <td>606</td>\n",
" <td>2009-09-30 23:59:59.999999999</td>\n",
" <td>realgdp</td>\n",
" <td>12990.341</td>\n",
" </tr>\n",
" <tr>\n",
" <td>607</td>\n",
" <td>2009-09-30 23:59:59.999999999</td>\n",
" <td>infl</td>\n",
" <td>3.560</td>\n",
" </tr>\n",
" <tr>\n",
" <td>608</td>\n",
" <td>2009-09-30 23:59:59.999999999</td>\n",
" <td>unemp</td>\n",
" <td>9.600</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>609 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" date item value\n",
"0 1959-03-31 23:59:59.999999999 realgdp 2710.349\n",
"1 1959-03-31 23:59:59.999999999 infl 0.000\n",
"2 1959-03-31 23:59:59.999999999 unemp 5.800\n",
"3 1959-06-30 23:59:59.999999999 realgdp 2778.801\n",
"4 1959-06-30 23:59:59.999999999 infl 2.340\n",
".. ... ... ...\n",
"604 2009-06-30 23:59:59.999999999 infl 3.370\n",
"605 2009-06-30 23:59:59.999999999 unemp 9.200\n",
"606 2009-09-30 23:59:59.999999999 realgdp 12990.341\n",
"607 2009-09-30 23:59:59.999999999 infl 3.560\n",
"608 2009-09-30 23:59:59.999999999 unemp 9.600\n",
"\n",
"[609 rows x 3 columns]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ldata = ldata.rename(columns={0: 'value'})\n",
"ldata"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"# pd.pivot は reset_index と unstack でも実現できる"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"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.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment