Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save FinanceData/48e73e4b3267f378934092fd8b697429 to your computer and use it in GitHub Desktop.
Save FinanceData/48e73e4b3267f378934092fd8b697429 to your computer and use it in GitHub Desktop.
시가총액 분석 04 - plotly 데이터 시각화
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# 시가총액 분석 04 - plotly 데이터 시각화\n",
"\n",
"\n",
"<img width=\"320\" src=\"http://i.imgur.com/XquT22Y.jpg\" >\n",
"\n",
"\n",
"\n",
"#### (c) 2016 이승준 fb.com/plusjune"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"from IPython.display import display"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>rank</th>\n",
" <th>code</th>\n",
" <th>corp_name</th>\n",
" <th>marcap</th>\n",
" <th>marcap_pct</th>\n",
" <th>year</th>\n",
" </tr>\n",
" <tr>\n",
" <th>code</th>\n",
" <th></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>015760</th>\n",
" <td>1</td>\n",
" <td>015760</td>\n",
" <td>한국전력</td>\n",
" <td>18.994194</td>\n",
" <td>0.134566</td>\n",
" <td>1995-12-01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>005930</th>\n",
" <td>2</td>\n",
" <td>005930</td>\n",
" <td>삼성전자</td>\n",
" <td>7.665979</td>\n",
" <td>0.054310</td>\n",
" <td>1995-12-01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>005490</th>\n",
" <td>3</td>\n",
" <td>005490</td>\n",
" <td>POSCO</td>\n",
" <td>4.760822</td>\n",
" <td>0.033728</td>\n",
" <td>1995-12-01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>017670</th>\n",
" <td>4</td>\n",
" <td>017670</td>\n",
" <td>SK텔레콤</td>\n",
" <td>3.229820</td>\n",
" <td>0.022882</td>\n",
" <td>1995-12-01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>000200</th>\n",
" <td>5</td>\n",
" <td>000200</td>\n",
" <td>대우중공업</td>\n",
" <td>3.019233</td>\n",
" <td>0.021390</td>\n",
" <td>1995-12-01</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" rank code corp_name marcap marcap_pct year\n",
"code \n",
"015760 1 015760 한국전력 18.994194 0.134566 1995-12-01\n",
"005930 2 005930 삼성전자 7.665979 0.054310 1995-12-01\n",
"005490 3 005490 POSCO 4.760822 0.033728 1995-12-01\n",
"017670 4 017670 SK텔레콤 3.229820 0.022882 1995-12-01\n",
"000200 5 000200 대우중공업 3.019233 0.021390 1995-12-01"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_master = pd.read_csv('data/marcap-all.csv')\n",
"df_master.set_index('code', inplace=True, drop=False)\n",
"df_master.head()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 삼성전자\n",
"1 현대차\n",
"2 한국전력\n",
"3 삼성물산\n",
"4 현대모비스\n",
"5 아모레\n",
"6 하이닉스\n",
"Name: corp_name, dtype: object\n"
]
}
],
"source": [
"# 관심 종목 (favorite stocks)\n",
"fav_code_corp = [\n",
" ('005930', '삼성전자'),\n",
" ('005380', '현대차'),\n",
" ('015760', '한국전력'),\n",
" ('028260', '삼성물산'),\n",
" ('012330', '현대모비스'),\n",
" ('090430', '아모레'),\n",
" ('000660', '하이닉스'),\n",
" ('051910', 'LG화학'),\n",
" ('032830', '삼성생명'),\n",
" ('000270', '기아차'),\n",
" ('035420', 'NAVER'),\n",
" ('018260', '삼성SDS'),\n",
" ('055550', '신한지주'),\n",
" ('017670', 'SK텔레콤'),\n",
" ('034730', 'SK'),\n",
" ('051900', 'LG생활건강'),\n",
" ('005490', 'POSCO'),\n",
" ('033780', 'KT&G'),\n",
" ('000810', '삼성화재'),\n",
" ('105560', 'KB금융'),\n",
"]\n",
"\n",
"fav_stocks = pd.DataFrame(data=fav_code_corp , columns=['code', 'corp_name'])\n",
"fav_stocks\n",
"\n",
"# 이름을 관심종목(fav_stocks)에 동일하게 맞춘다.\n",
"for index, row in fav_stocks.iterrows():\n",
" df_master.loc[row['code'], 'corp_name'] = row['corp_name']\n",
"\n",
"# 선두 7개 종목의 코드만 추출\n",
"top7_codes = fav_stocks[:7]['code']\n",
"top7_codes\n",
"\n",
"# 관심종목에 해당하는 종목만 추출\n",
"df_fav = df_master.loc[df_master['code'].isin(top7_codes)]\n",
"\n",
"# 피봇\n",
"pivoted = df_fav.pivot('year', 'corp_name', 'rank')\n",
"pivoted\n",
"\n",
"#fav_stocks[:7]['corp_name'].values\n",
"\n",
"## 상위 7개 관심종목(fav_stocks) 의 종목명\n",
"cols = fav_stocks[:7]['corp_name']\n",
"print (cols)\n",
"\n",
"# 컬럼 순서를 관심종목(fav_stocks) 순서로 바꾸기\n",
"pivoted = pivoted[cols]"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/html": [
"<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~plusjune/13.embed\" height=\"525px\" width=\"100%\"></iframe>"
],
"text/plain": [
"<plotly.tools.PlotlyDisplay object>"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## plotly chart\n",
"\n",
"import plotly.plotly as py\n",
"import plotly.graph_objs as go\n",
"\n",
"data = []\n",
"for col in pivoted.columns:\n",
" trace = go.Scatter(\n",
" x = pivoted.index,\n",
" y = pivoted[col],\n",
" name = col,\n",
" )\n",
" data.append(trace)\n",
"\n",
"layout = go.Layout(\n",
" title='시총상위 7종목의 과거 20년간 순위 변화)',\n",
" yaxis=dict(\n",
" autorange='reversed',\n",
" title='순위',\n",
" ),\n",
")\n",
"\n",
"fig = go.Figure(data=data, layout=layout)\n",
"py.iplot(fig, filename='marcap/spike01')"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>corp_name</th>\n",
" <th>삼성전자</th>\n",
" <th>현대차</th>\n",
" <th>한국전력</th>\n",
" <th>삼성물산</th>\n",
" <th>현대모비스</th>\n",
" <th>아모레</th>\n",
" <th>하이닉스</th>\n",
" <th>LG화학</th>\n",
" <th>삼성생명</th>\n",
" <th>기아차</th>\n",
" <th>NAVER</th>\n",
" <th>삼성SDS</th>\n",
" <th>신한지주</th>\n",
" <th>SK텔레콤</th>\n",
" <th>SK</th>\n",
" <th>LG생활건강</th>\n",
" <th>POSCO</th>\n",
" <th>KT&amp;G</th>\n",
" <th>삼성화재</th>\n",
" <th>KB금융</th>\n",
" </tr>\n",
" <tr>\n",
" <th>year</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></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>1995-12-01</th>\n",
" <td>2</td>\n",
" <td>13</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>57</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>15</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>29</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1996-12-01</th>\n",
" <td>3</td>\n",
" <td>24</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>49</td>\n",
" <td>NaN</td>\n",
" <td>16</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>28</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1997-12-01</th>\n",
" <td>3</td>\n",
" <td>16</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>73</td>\n",
" <td>NaN</td>\n",
" <td>6</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>26</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>29</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1998-12-01</th>\n",
" <td>3</td>\n",
" <td>24</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>92</td>\n",
" <td>NaN</td>\n",
" <td>10</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>146</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>23</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1999-12-01</th>\n",
" <td>2</td>\n",
" <td>18</td>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>101</td>\n",
" <td>NaN</td>\n",
" <td>8</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>22</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>7</td>\n",
" <td>15</td>\n",
" <td>47</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2000-12-01</th>\n",
" <td>2</td>\n",
" <td>13</td>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>62</td>\n",
" <td>NaN</td>\n",
" <td>19</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>11</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>6</td>\n",
" <td>9</td>\n",
" <td>28</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2001-12-01</th>\n",
" <td>1</td>\n",
" <td>8</td>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>33</td>\n",
" <td>NaN</td>\n",
" <td>22</td>\n",
" <td>35</td>\n",
" <td>NaN</td>\n",
" <td>13</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>9</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>80</td>\n",
" <td>6</td>\n",
" <td>11</td>\n",
" <td>17</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2002-12-01</th>\n",
" <td>1</td>\n",
" <td>7</td>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>25</td>\n",
" <td>NaN</td>\n",
" <td>32</td>\n",
" <td>20</td>\n",
" <td>NaN</td>\n",
" <td>13</td>\n",
" <td>112</td>\n",
" <td>NaN</td>\n",
" <td>10</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>68</td>\n",
" <td>6</td>\n",
" <td>18</td>\n",
" <td>16</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2003-12-01</th>\n",
" <td>1</td>\n",
" <td>7</td>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>12</td>\n",
" <td>NaN</td>\n",
" <td>32</td>\n",
" <td>21</td>\n",
" <td>NaN</td>\n",
" <td>17</td>\n",
" <td>58</td>\n",
" <td>NaN</td>\n",
" <td>11</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>99</td>\n",
" <td>4</td>\n",
" <td>19</td>\n",
" <td>23</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2004-12-01</th>\n",
" <td>1</td>\n",
" <td>7</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>16</td>\n",
" <td>NaN</td>\n",
" <td>20</td>\n",
" <td>31</td>\n",
" <td>NaN</td>\n",
" <td>26</td>\n",
" <td>57</td>\n",
" <td>NaN</td>\n",
" <td>13</td>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>116</td>\n",
" <td>3</td>\n",
" <td>18</td>\n",
" <td>25</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2005-12-01</th>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>19</td>\n",
" <td>NaN</td>\n",
" <td>7</td>\n",
" <td>38</td>\n",
" <td>NaN</td>\n",
" <td>15</td>\n",
" <td>33</td>\n",
" <td>NaN</td>\n",
" <td>10</td>\n",
" <td>9</td>\n",
" <td>NaN</td>\n",
" <td>113</td>\n",
" <td>5</td>\n",
" <td>20</td>\n",
" <td>24</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2006-12-01</th>\n",
" <td>1</td>\n",
" <td>9</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>25</td>\n",
" <td>44</td>\n",
" <td>8</td>\n",
" <td>52</td>\n",
" <td>NaN</td>\n",
" <td>35</td>\n",
" <td>31</td>\n",
" <td>NaN</td>\n",
" <td>5</td>\n",
" <td>6</td>\n",
" <td>NaN</td>\n",
" <td>71</td>\n",
" <td>3</td>\n",
" <td>19</td>\n",
" <td>22</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2007-12-01</th>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>33</td>\n",
" <td>58</td>\n",
" <td>19</td>\n",
" <td>37</td>\n",
" <td>NaN</td>\n",
" <td>65</td>\n",
" <td>22</td>\n",
" <td>NaN</td>\n",
" <td>6</td>\n",
" <td>7</td>\n",
" <td>NaN</td>\n",
" <td>72</td>\n",
" <td>2</td>\n",
" <td>20</td>\n",
" <td>18</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2008-12-01</th>\n",
" <td>1</td>\n",
" <td>13</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>25</td>\n",
" <td>37</td>\n",
" <td>41</td>\n",
" <td>26</td>\n",
" <td>NaN</td>\n",
" <td>61</td>\n",
" <td>20</td>\n",
" <td>NaN</td>\n",
" <td>7</td>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>43</td>\n",
" <td>2</td>\n",
" <td>8</td>\n",
" <td>12</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2009-12-01</th>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>8</td>\n",
" <td>38</td>\n",
" <td>12</td>\n",
" <td>9</td>\n",
" <td>NaN</td>\n",
" <td>29</td>\n",
" <td>23</td>\n",
" <td>NaN</td>\n",
" <td>6</td>\n",
" <td>11</td>\n",
" <td>81</td>\n",
" <td>41</td>\n",
" <td>2</td>\n",
" <td>24</td>\n",
" <td>21</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2010-12-01</th>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>11</td>\n",
" <td>NaN</td>\n",
" <td>5</td>\n",
" <td>43</td>\n",
" <td>17</td>\n",
" <td>6</td>\n",
" <td>9</td>\n",
" <td>10</td>\n",
" <td>24</td>\n",
" <td>NaN</td>\n",
" <td>7</td>\n",
" <td>18</td>\n",
" <td>61</td>\n",
" <td>45</td>\n",
" <td>2</td>\n",
" <td>33</td>\n",
" <td>25</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2011-12-01</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>9</td>\n",
" <td>NaN</td>\n",
" <td>4</td>\n",
" <td>41</td>\n",
" <td>14</td>\n",
" <td>6</td>\n",
" <td>10</td>\n",
" <td>5</td>\n",
" <td>21</td>\n",
" <td>NaN</td>\n",
" <td>8</td>\n",
" <td>15</td>\n",
" <td>44</td>\n",
" <td>30</td>\n",
" <td>3</td>\n",
" <td>17</td>\n",
" <td>22</td>\n",
" <td>12</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-12-01</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>7</td>\n",
" <td>NaN</td>\n",
" <td>4</td>\n",
" <td>37</td>\n",
" <td>12</td>\n",
" <td>6</td>\n",
" <td>9</td>\n",
" <td>5</td>\n",
" <td>22</td>\n",
" <td>NaN</td>\n",
" <td>10</td>\n",
" <td>15</td>\n",
" <td>49</td>\n",
" <td>24</td>\n",
" <td>3</td>\n",
" <td>20</td>\n",
" <td>23</td>\n",
" <td>14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-12-01</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>10</td>\n",
" <td>NaN</td>\n",
" <td>3</td>\n",
" <td>45</td>\n",
" <td>5</td>\n",
" <td>12</td>\n",
" <td>11</td>\n",
" <td>8</td>\n",
" <td>6</td>\n",
" <td>NaN</td>\n",
" <td>9</td>\n",
" <td>14</td>\n",
" <td>38</td>\n",
" <td>29</td>\n",
" <td>4</td>\n",
" <td>23</td>\n",
" <td>19</td>\n",
" <td>15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014-12-01</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>12</td>\n",
" <td>9</td>\n",
" <td>17</td>\n",
" <td>3</td>\n",
" <td>19</td>\n",
" <td>8</td>\n",
" <td>13</td>\n",
" <td>7</td>\n",
" <td>10</td>\n",
" <td>14</td>\n",
" <td>11</td>\n",
" <td>21</td>\n",
" <td>24</td>\n",
" <td>5</td>\n",
" <td>23</td>\n",
" <td>16</td>\n",
" <td>15</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"corp_name 삼성전자 현대차 한국전력 삼성물산 현대모비스 아모레 하이닉스 LG화학 삼성생명 기아차 NAVER \\\n",
"year \n",
"1995-12-01 2 13 1 NaN 57 NaN NaN NaN NaN 15 NaN \n",
"1996-12-01 3 24 1 NaN 49 NaN 16 NaN NaN 10 NaN \n",
"1997-12-01 3 16 1 NaN 73 NaN 6 NaN NaN 26 NaN \n",
"1998-12-01 3 24 1 NaN 92 NaN 10 NaN NaN 146 NaN \n",
"1999-12-01 2 18 5 NaN 101 NaN 8 NaN NaN 22 NaN \n",
"2000-12-01 2 13 5 NaN 62 NaN 19 NaN NaN 11 NaN \n",
"2001-12-01 1 8 5 NaN 33 NaN 22 35 NaN 13 NaN \n",
"2002-12-01 1 7 5 NaN 25 NaN 32 20 NaN 13 112 \n",
"2003-12-01 1 7 5 NaN 12 NaN 32 21 NaN 17 58 \n",
"2004-12-01 1 7 2 NaN 16 NaN 20 31 NaN 26 57 \n",
"2005-12-01 1 4 3 NaN 19 NaN 7 38 NaN 15 33 \n",
"2006-12-01 1 9 2 NaN 25 44 8 52 NaN 35 31 \n",
"2007-12-01 1 10 4 NaN 33 58 19 37 NaN 65 22 \n",
"2008-12-01 1 13 3 NaN 25 37 41 26 NaN 61 20 \n",
"2009-12-01 1 3 5 NaN 8 38 12 9 NaN 29 23 \n",
"2010-12-01 1 3 11 NaN 5 43 17 6 9 10 24 \n",
"2011-12-01 1 2 9 NaN 4 41 14 6 10 5 21 \n",
"2012-12-01 1 2 7 NaN 4 37 12 6 9 5 22 \n",
"2013-12-01 1 2 10 NaN 3 45 5 12 11 8 6 \n",
"2014-12-01 1 2 4 12 9 17 3 19 8 13 7 \n",
"\n",
"corp_name 삼성SDS 신한지주 SK텔레콤 SK LG생활건강 POSCO KT&G 삼성화재 KB금융 \n",
"year \n",
"1995-12-01 NaN NaN 4 NaN NaN 3 NaN 29 NaN \n",
"1996-12-01 NaN NaN 4 NaN NaN 2 NaN 28 NaN \n",
"1997-12-01 NaN NaN 4 NaN NaN 2 NaN 29 NaN \n",
"1998-12-01 NaN NaN 5 NaN NaN 4 NaN 23 NaN \n",
"1999-12-01 NaN NaN 4 NaN NaN 7 15 47 NaN \n",
"2000-12-01 NaN NaN 3 NaN NaN 6 9 28 NaN \n",
"2001-12-01 NaN 9 2 NaN 80 6 11 17 NaN \n",
"2002-12-01 NaN 10 2 NaN 68 6 18 16 NaN \n",
"2003-12-01 NaN 11 2 NaN 99 4 19 23 NaN \n",
"2004-12-01 NaN 13 4 NaN 116 3 18 25 NaN \n",
"2005-12-01 NaN 10 9 NaN 113 5 20 24 NaN \n",
"2006-12-01 NaN 5 6 NaN 71 3 19 22 NaN \n",
"2007-12-01 NaN 6 7 NaN 72 2 20 18 NaN \n",
"2008-12-01 NaN 7 4 NaN 43 2 8 12 6 \n",
"2009-12-01 NaN 6 11 81 41 2 24 21 4 \n",
"2010-12-01 NaN 7 18 61 45 2 33 25 8 \n",
"2011-12-01 NaN 8 15 44 30 3 17 22 12 \n",
"2012-12-01 NaN 10 15 49 24 3 20 23 14 \n",
"2013-12-01 NaN 9 14 38 29 4 23 19 15 \n",
"2014-12-01 10 14 11 21 24 5 23 16 15 "
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 시총상위 20개 종목의 코드\n",
"top20_codes = fav_stocks[:20]['code']\n",
"\n",
"# 전체에서 시총상위 20개 종목(top20_codes) row들을 추출하고 인덱스 지정\n",
"df_fav = df_master.loc[df_master['code'].isin(top20_codes)]\n",
"df_fav.set_index('code', inplace=True)\n",
"\n",
"# 년도(시간), 종목명, 순위로 피벗\n",
"pivoted = df_fav.pivot('year', 'corp_name', 'rank')\n",
"\n",
"# 컬럼 순서를 관심종목(fav_stocks) 순서로 바꾸기\n",
"pivoted = pivoted[fav_stocks[:20]['corp_name']]\n",
"pivoted.head(20)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/html": [
"<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~plusjune/21.embed\" height=\"525px\" width=\"100%\"></iframe>"
],
"text/plain": [
"<plotly.tools.PlotlyDisplay object>"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## plotly chart\n",
"\n",
"import plotly.plotly as py\n",
"import plotly.graph_objs as go\n",
"\n",
"data = []\n",
"for col in pivoted.columns:\n",
" trace = go.Scatter(\n",
" x = pivoted.index,\n",
" y = pivoted[col],\n",
" name = col,\n",
" )\n",
" data.append(trace)\n",
"\n",
"layout = go.Layout(\n",
" title='시총상위 20 종목의 과거 20년간 순위 변화',\n",
" yaxis=dict(\n",
" autorange='reversed',\n",
" title='순위',\n",
" ),\n",
")\n",
"\n",
"fig = go.Figure(data=data, layout=layout)\n",
"py.iplot(fig, filename='marcap/spike02')"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>rank</th>\n",
" <th>code</th>\n",
" <th>name</th>\n",
" <th>marcap</th>\n",
" <th>marcap_pct</th>\n",
" <th>year</th>\n",
" <th>name_en</th>\n",
" <th>sector</th>\n",
" <th>market</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>015760</td>\n",
" <td>한국전력</td>\n",
" <td>18.994194</td>\n",
" <td>0.134566</td>\n",
" <td>1995-12-01</td>\n",
" <td>KEPCO</td>\n",
" <td>전기가스</td>\n",
" <td>KOSPI</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>005930</td>\n",
" <td>삼성전자</td>\n",
" <td>7.665979</td>\n",
" <td>0.054310</td>\n",
" <td>1995-12-01</td>\n",
" <td>Samsung Electronics</td>\n",
" <td>전기전자</td>\n",
" <td>KOSPI</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>005490</td>\n",
" <td>POSCO</td>\n",
" <td>4.760822</td>\n",
" <td>0.033728</td>\n",
" <td>1995-12-01</td>\n",
" <td>POSCO</td>\n",
" <td>철강금속</td>\n",
" <td>KOSPI</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>017670</td>\n",
" <td>SK텔레콤</td>\n",
" <td>3.229820</td>\n",
" <td>0.022882</td>\n",
" <td>1995-12-01</td>\n",
" <td>SK Telecom</td>\n",
" <td>통신업</td>\n",
" <td>KOSPI</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>000200</td>\n",
" <td>대우중공업</td>\n",
" <td>3.019233</td>\n",
" <td>0.021390</td>\n",
" <td>1995-12-01</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>6</td>\n",
" <td>002610</td>\n",
" <td>엘지전자</td>\n",
" <td>2.147247</td>\n",
" <td>0.015212</td>\n",
" <td>1995-12-01</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>7</td>\n",
" <td>015940</td>\n",
" <td>데이콤</td>\n",
" <td>1.621128</td>\n",
" <td>0.011485</td>\n",
" <td>1995-12-01</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>8</td>\n",
" <td>000720</td>\n",
" <td>현대건설</td>\n",
" <td>1.595383</td>\n",
" <td>0.011303</td>\n",
" <td>1995-12-01</td>\n",
" <td>Hyundai Eng. &amp; Constr.</td>\n",
" <td>건설업</td>\n",
" <td>KOSPI</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>9</td>\n",
" <td>015580</td>\n",
" <td>신한은행</td>\n",
" <td>1.568640</td>\n",
" <td>0.011113</td>\n",
" <td>1995-12-01</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>10</td>\n",
" <td>005931</td>\n",
" <td>삼성전자(1신)</td>\n",
" <td>1.492631</td>\n",
" <td>0.010575</td>\n",
" <td>1995-12-01</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" rank code name marcap marcap_pct year \\\n",
"0 1 015760 한국전력 18.994194 0.134566 1995-12-01 \n",
"1 2 005930 삼성전자 7.665979 0.054310 1995-12-01 \n",
"2 3 005490 POSCO 4.760822 0.033728 1995-12-01 \n",
"3 4 017670 SK텔레콤 3.229820 0.022882 1995-12-01 \n",
"4 5 000200 대우중공업 3.019233 0.021390 1995-12-01 \n",
"5 6 002610 엘지전자 2.147247 0.015212 1995-12-01 \n",
"6 7 015940 데이콤 1.621128 0.011485 1995-12-01 \n",
"7 8 000720 현대건설 1.595383 0.011303 1995-12-01 \n",
"8 9 015580 신한은행 1.568640 0.011113 1995-12-01 \n",
"9 10 005931 삼성전자(1신) 1.492631 0.010575 1995-12-01 \n",
"\n",
" name_en sector market \n",
"0 KEPCO 전기가스 KOSPI \n",
"1 Samsung Electronics 전기전자 KOSPI \n",
"2 POSCO 철강금속 KOSPI \n",
"3 SK Telecom 통신업 KOSPI \n",
"4 NaN NaN NaN \n",
"5 NaN NaN NaN \n",
"6 NaN NaN NaN \n",
"7 Hyundai Eng. & Constr. 건설업 KOSPI \n",
"8 NaN NaN NaN \n",
"9 NaN NaN NaN "
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_master = pd.read_csv('data/marcap-all-with-sector.csv', dtype={'code':np.str})\n",
"df_master.head(10)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"36634"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(df_master)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## 2015년 분석"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>rank</th>\n",
" <th>code</th>\n",
" <th>name</th>\n",
" <th>marcap</th>\n",
" <th>marcap_pct</th>\n",
" <th>year</th>\n",
" <th>name_en</th>\n",
" <th>sector</th>\n",
" <th>market</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>34501</th>\n",
" <td>1</td>\n",
" <td>005930</td>\n",
" <td>삼성전자</td>\n",
" <td>190.752641</td>\n",
" <td>0.130428</td>\n",
" <td>2015-12-01</td>\n",
" <td>Samsung Electronics</td>\n",
" <td>전기전자</td>\n",
" <td>KOSPI</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34502</th>\n",
" <td>2</td>\n",
" <td>005380</td>\n",
" <td>현대차</td>\n",
" <td>33.371887</td>\n",
" <td>0.022818</td>\n",
" <td>2015-12-01</td>\n",
" <td>Hyundai Motor</td>\n",
" <td>운수장비</td>\n",
" <td>KOSPI</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34503</th>\n",
" <td>3</td>\n",
" <td>015760</td>\n",
" <td>한국전력</td>\n",
" <td>32.290793</td>\n",
" <td>0.022079</td>\n",
" <td>2015-12-01</td>\n",
" <td>KEPCO</td>\n",
" <td>전기가스</td>\n",
" <td>KOSPI</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34504</th>\n",
" <td>4</td>\n",
" <td>028260</td>\n",
" <td>삼성물산</td>\n",
" <td>27.979281</td>\n",
" <td>0.019131</td>\n",
" <td>2015-12-01</td>\n",
" <td>Samsung C&amp;T Corporation</td>\n",
" <td>유통업</td>\n",
" <td>KOSPI</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34505</th>\n",
" <td>5</td>\n",
" <td>005935</td>\n",
" <td>삼성전자우</td>\n",
" <td>24.888435</td>\n",
" <td>0.017018</td>\n",
" <td>2015-12-01</td>\n",
" <td>Samsung Electronics</td>\n",
" <td>전기전자</td>\n",
" <td>KOSPI</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34506</th>\n",
" <td>6</td>\n",
" <td>012330</td>\n",
" <td>현대모비스</td>\n",
" <td>24.384638</td>\n",
" <td>0.016673</td>\n",
" <td>2015-12-01</td>\n",
" <td>Hyundai Mobis</td>\n",
" <td>운수장비</td>\n",
" <td>KOSPI</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34507</th>\n",
" <td>7</td>\n",
" <td>090430</td>\n",
" <td>아모레퍼시픽</td>\n",
" <td>24.231044</td>\n",
" <td>0.016568</td>\n",
" <td>2015-12-01</td>\n",
" <td>AmorePacific</td>\n",
" <td>화학</td>\n",
" <td>KOSPI</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34508</th>\n",
" <td>8</td>\n",
" <td>000660</td>\n",
" <td>SK하이닉스</td>\n",
" <td>23.805677</td>\n",
" <td>0.016277</td>\n",
" <td>2015-12-01</td>\n",
" <td>SK Hynix</td>\n",
" <td>전기전자</td>\n",
" <td>KOSPI</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34509</th>\n",
" <td>9</td>\n",
" <td>051910</td>\n",
" <td>LG화학</td>\n",
" <td>22.499038</td>\n",
" <td>0.015384</td>\n",
" <td>2015-12-01</td>\n",
" <td>LG Chem</td>\n",
" <td>화학</td>\n",
" <td>KOSPI</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34510</th>\n",
" <td>10</td>\n",
" <td>032830</td>\n",
" <td>삼성생명</td>\n",
" <td>21.900000</td>\n",
" <td>0.014974</td>\n",
" <td>2015-12-01</td>\n",
" <td>Samsung Life Insurance</td>\n",
" <td>보험업</td>\n",
" <td>KOSPI</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" rank code name marcap marcap_pct year \\\n",
"34501 1 005930 삼성전자 190.752641 0.130428 2015-12-01 \n",
"34502 2 005380 현대차 33.371887 0.022818 2015-12-01 \n",
"34503 3 015760 한국전력 32.290793 0.022079 2015-12-01 \n",
"34504 4 028260 삼성물산 27.979281 0.019131 2015-12-01 \n",
"34505 5 005935 삼성전자우 24.888435 0.017018 2015-12-01 \n",
"34506 6 012330 현대모비스 24.384638 0.016673 2015-12-01 \n",
"34507 7 090430 아모레퍼시픽 24.231044 0.016568 2015-12-01 \n",
"34508 8 000660 SK하이닉스 23.805677 0.016277 2015-12-01 \n",
"34509 9 051910 LG화학 22.499038 0.015384 2015-12-01 \n",
"34510 10 032830 삼성생명 21.900000 0.014974 2015-12-01 \n",
"\n",
" name_en sector market \n",
"34501 Samsung Electronics 전기전자 KOSPI \n",
"34502 Hyundai Motor 운수장비 KOSPI \n",
"34503 KEPCO 전기가스 KOSPI \n",
"34504 Samsung C&T Corporation 유통업 KOSPI \n",
"34505 Samsung Electronics 전기전자 KOSPI \n",
"34506 Hyundai Mobis 운수장비 KOSPI \n",
"34507 AmorePacific 화학 KOSPI \n",
"34508 SK Hynix 전기전자 KOSPI \n",
"34509 LG Chem 화학 KOSPI \n",
"34510 Samsung Life Insurance 보험업 KOSPI "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"2133"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df2 = df_master[df_master['year'] == '2015-12-01']\n",
"\n",
"display (df2.head(10))\n",
"display (len(df2))\n"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"64"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"Index(['화학', '서비스업', 'IT부품', '반도체', '기계,장비', '전기전자', '금속', '유통업', '제약',\n",
" '금융서비스', '운송장비,부품', '운수장비', '통신장비', '소프트웨어', '도매', '철강금속', '음식료', '의약품',\n",
" '기계', '건설업', '비금속', '미분류', '디지털컨텐츠', '의료,정밀기기', '일반전기전자', '증권', '섬유의복',\n",
" '종이목재', '컴퓨터서비스', '운수창고', '전문기술', '음식료,담배', '오락,문화', '정보기기', '보험업',\n",
" '금융', '기타금융업', '연구,개발', '섬유,의류', '사업지원', '종합건설', '전문건설', '인터넷', '전기가스',\n",
" '방송서비스', '종이,목재', '통신서비스', '출판,매체복제', '교육', '기타제조', '소매', '환경', '의료정밀',\n",
" '은행', '부동산', '통신업', '육상운송', '여행운송', '기타서비스', '전기,가스', '숙박,음식', '비금속광업',\n",
" '농업', '자동차판매'],\n",
" dtype='object')"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"array([160, 151, 109, 109, 76, 64, 64, 63, 62, 58, 57, 56, 55,\n",
" 53, 49, 48, 47, 47, 44, 41, 40, 37, 34, 34, 33, 32,\n",
" 27, 25, 25, 24, 22, 22, 21, 21, 16, 14, 14, 14, 12,\n",
" 12, 12, 12, 11, 11, 9, 9, 9, 9, 8, 8, 8, 5,\n",
" 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 1])"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# value_counts() Series내의 values 항목과 항목의 개수\n",
"\n",
"sector_counts = df2['sector'].value_counts()\n",
"\n",
"display (sector_counts.count()) # 업종수 \n",
"display (sector_counts.index) # 업종항목: '화학', '서비스업', '반도체', 'IT부품', 등 …\n",
"display (sector_counts.values) # 업종내 기업수: 160 151 109 109 76 64 64 …"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## 업종 분포 차트"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"화학 160\n",
"서비스업 151\n",
"IT부품 109\n",
"반도체 109\n",
"기계,장비 76\n",
"전기전자 64\n",
"금속 64\n",
"유통업 63\n",
"제약 62\n",
"금융서비스 58\n",
"운송장비,부품 57\n",
"운수장비 56\n",
"통신장비 55\n",
"소프트웨어 53\n",
"도매 49\n",
"철강금속 48\n",
"음식료 47\n",
"의약품 47\n",
"기계 44\n",
"건설업 41\n",
"Name: sector, dtype: int64"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"top20 = sector_counts[:20]\n",
"top20"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"Index(['화학', '서비스업', 'IT부품', '반도체', '기계,장비', '전기전자', '금속', '유통업', '제약',\n",
" '금융서비스', '운송장비,부품', '운수장비', '통신장비', '소프트웨어', '도매', '철강금속', '음식료', '의약품',\n",
" '기계', '건설업'],\n",
" dtype='object')"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"array([160, 151, 109, 109, 76, 64, 64, 63, 62, 58, 57, 56, 55,\n",
" 53, 49, 48, 47, 47, 44, 41])"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display (top20.index)\n",
"display (top20.values)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/html": [
"<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~plusjune/25.embed\" height=\"525px\" width=\"100%\"></iframe>"
],
"text/plain": [
"<plotly.tools.PlotlyDisplay object>"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import plotly.plotly as py\n",
"import plotly.graph_objs as go\n",
"\n",
"colors_list = [ \"#C41F3B\", \"#FF7D0A\", \"#ABD473\", \"#69CCF0\", \"#00FF96\", \"#F58CBA\", \"#FFFFFF\", \"#FFF569\", \"#0070DE\", \"#9482C9\", \"#C79C6E\" ]\n",
"\n",
"data = [\n",
" go.Bar(\n",
" x=top20.values[::-1],\n",
" y=top20.index[::-1],\n",
" orientation = 'h',\n",
" marker=dict(\n",
" color=colors_list * 2,\n",
" line=dict(\n",
" color='black',\n",
" width=1.0\n",
" ),\n",
" ),\n",
" )\n",
"]\n",
"\n",
"layout = go.Layout(\n",
" title='2015년 업종별 종목수',\n",
")\n",
"\n",
"fig = go.Figure(data=data, layout=layout)\n",
"py.iplot(fig, filename='marcap/sector_marcap00') "
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## 특정 섹터만 추출"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"시가총액: 1462.515474\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>rank</th>\n",
" <th>code</th>\n",
" <th>name</th>\n",
" <th>marcap</th>\n",
" <th>marcap_pct</th>\n",
" <th>year</th>\n",
" <th>name_en</th>\n",
" <th>sector</th>\n",
" <th>market</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>34646</th>\n",
" <td>146</td>\n",
" <td>039030</td>\n",
" <td>이오테크닉스</td>\n",
" <td>1.409895</td>\n",
" <td>0.000964</td>\n",
" <td>2015-12-01</td>\n",
" <td>EO Technics</td>\n",
" <td>반도체</td>\n",
" <td>KOSDAQ</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34668</th>\n",
" <td>168</td>\n",
" <td>036490</td>\n",
" <td>OCI머티리얼즈</td>\n",
" <td>1.142313</td>\n",
" <td>0.000781</td>\n",
" <td>2015-12-01</td>\n",
" <td>OCI Materials</td>\n",
" <td>반도체</td>\n",
" <td>KOSDAQ</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34703</th>\n",
" <td>203</td>\n",
" <td>046890</td>\n",
" <td>서울반도체</td>\n",
" <td>0.906649</td>\n",
" <td>0.000620</td>\n",
" <td>2015-12-01</td>\n",
" <td>Seoul Semiconductor</td>\n",
" <td>반도체</td>\n",
" <td>KOSDAQ</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34713</th>\n",
" <td>213</td>\n",
" <td>030530</td>\n",
" <td>원익IPS</td>\n",
" <td>0.841232</td>\n",
" <td>0.000575</td>\n",
" <td>2015-12-01</td>\n",
" <td>Wonik IPS</td>\n",
" <td>반도체</td>\n",
" <td>KOSDAQ</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34742</th>\n",
" <td>242</td>\n",
" <td>058470</td>\n",
" <td>리노공업</td>\n",
" <td>0.699625</td>\n",
" <td>0.000478</td>\n",
" <td>2015-12-01</td>\n",
" <td>Leeno Industrial Inc.</td>\n",
" <td>반도체</td>\n",
" <td>KOSDAQ</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" rank code name marcap marcap_pct year \\\n",
"34646 146 039030 이오테크닉스 1.409895 0.000964 2015-12-01 \n",
"34668 168 036490 OCI머티리얼즈 1.142313 0.000781 2015-12-01 \n",
"34703 203 046890 서울반도체 0.906649 0.000620 2015-12-01 \n",
"34713 213 030530 원익IPS 0.841232 0.000575 2015-12-01 \n",
"34742 242 058470 리노공업 0.699625 0.000478 2015-12-01 \n",
"\n",
" name_en sector market \n",
"34646 EO Technics 반도체 KOSDAQ \n",
"34668 OCI Materials 반도체 KOSDAQ \n",
"34703 Seoul Semiconductor 반도체 KOSDAQ \n",
"34713 Wonik IPS 반도체 KOSDAQ \n",
"34742 Leeno Industrial Inc. 반도체 KOSDAQ "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"반도체 업종 종목 수: 109\n",
"반도체 업종 시가총액: 16.858549\n",
"반도체 업종 시가총액 비중: 0.0115270910289\n"
]
}
],
"source": [
"# 2015년 시가총액\n",
"print( '시가총액: ', df2['marcap'].sum() )\n",
"\n",
"# 2015년 전체(df2)중에 반도체 종목만\n",
"df_semi = df2[df2['sector']=='반도체']\n",
"display( df_semi.head() )\n",
"\n",
"# 반도체 업종 종목수\n",
"print( '반도체 업종 종목 수: ', len(df_semi) ) \n",
"\n",
"# 반도체 업종 시가총액\n",
"print( '반도체 업종 시가총액: ', df_semi['marcap'].sum() ) \n",
"\n",
"# 반도체 업종 시가총액 비중\n",
"print( '반도체 업종 시가총액 비중: ', df_semi['marcap'].sum() / df2['marcap'].sum() )"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>rank</th>\n",
" <th>code</th>\n",
" <th>name</th>\n",
" <th>marcap</th>\n",
" <th>marcap_pct</th>\n",
" <th>year</th>\n",
" <th>name_en</th>\n",
" <th>sector</th>\n",
" <th>market</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>34501</th>\n",
" <td>1</td>\n",
" <td>005930</td>\n",
" <td>삼성전자</td>\n",
" <td>190.752641</td>\n",
" <td>0.130428</td>\n",
" <td>2015-12-01</td>\n",
" <td>Samsung Electronics</td>\n",
" <td>전기전자</td>\n",
" <td>KOSPI</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34502</th>\n",
" <td>2</td>\n",
" <td>005380</td>\n",
" <td>현대차</td>\n",
" <td>33.371887</td>\n",
" <td>0.022818</td>\n",
" <td>2015-12-01</td>\n",
" <td>Hyundai Motor</td>\n",
" <td>운수장비</td>\n",
" <td>KOSPI</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34503</th>\n",
" <td>3</td>\n",
" <td>015760</td>\n",
" <td>한국전력</td>\n",
" <td>32.290793</td>\n",
" <td>0.022079</td>\n",
" <td>2015-12-01</td>\n",
" <td>KEPCO</td>\n",
" <td>전기가스</td>\n",
" <td>KOSPI</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34504</th>\n",
" <td>4</td>\n",
" <td>028260</td>\n",
" <td>삼성물산</td>\n",
" <td>27.979281</td>\n",
" <td>0.019131</td>\n",
" <td>2015-12-01</td>\n",
" <td>Samsung C&amp;T Corporation</td>\n",
" <td>유통업</td>\n",
" <td>KOSPI</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34505</th>\n",
" <td>5</td>\n",
" <td>005935</td>\n",
" <td>삼성전자우</td>\n",
" <td>24.888435</td>\n",
" <td>0.017018</td>\n",
" <td>2015-12-01</td>\n",
" <td>Samsung Electronics</td>\n",
" <td>전기전자</td>\n",
" <td>KOSPI</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" rank code name marcap marcap_pct year \\\n",
"34501 1 005930 삼성전자 190.752641 0.130428 2015-12-01 \n",
"34502 2 005380 현대차 33.371887 0.022818 2015-12-01 \n",
"34503 3 015760 한국전력 32.290793 0.022079 2015-12-01 \n",
"34504 4 028260 삼성물산 27.979281 0.019131 2015-12-01 \n",
"34505 5 005935 삼성전자우 24.888435 0.017018 2015-12-01 \n",
"\n",
" name_en sector market \n",
"34501 Samsung Electronics 전기전자 KOSPI \n",
"34502 Hyundai Motor 운수장비 KOSPI \n",
"34503 KEPCO 전기가스 KOSPI \n",
"34504 Samsung C&T Corporation 유통업 KOSPI \n",
"34505 Samsung Electronics 전기전자 KOSPI "
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df2.head()"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"sector\n",
"전기전자 287.875933\n",
"서비스업 194.308660\n",
"화학 151.888602\n",
"운수장비 120.701497\n",
"유통업 85.366612\n",
"보험업 61.112385\n",
"기타금융업 57.289581\n",
"철강금속 41.355757\n",
"음식료 39.491417\n",
"전기가스 39.087887\n",
"제약 31.465322\n",
"통신업 31.047968\n",
"의약품 26.240103\n",
"미분류 22.613240\n",
"증권 22.194504\n",
"운수창고 21.744998\n",
"건설업 20.929716\n",
"기계 19.631011\n",
"반도체 16.858549\n",
"은행 14.247164\n",
"Name: marcap, dtype: float64"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 피벗테이블 (marcap)\n",
"piv = pd.pivot_table(df2, values='marcap', index=['sector'], aggfunc=np.sum)\n",
"\n",
"# 복사본을 만들고, 값 기준으로 내림차순 소트, 상위 20개 업종 표시\n",
"sector_marcap = piv.copy()\n",
"sector_marcap.sort_values(ascending=False, inplace=True)\n",
"sector_marcap[:20]\n"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/html": [
"<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~plusjune/23.embed\" height=\"525px\" width=\"100%\"></iframe>"
],
"text/plain": [
"<plotly.tools.PlotlyDisplay object>"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import plotly.plotly as py\n",
"import plotly.graph_objs as go\n",
"\n",
"data = [\n",
" go.Bar(\n",
" x=sector_marcap[:20].values[::-1],\n",
" y=sector_marcap[:20].index[::-1],\n",
" orientation = 'h',\n",
" )\n",
"]\n",
"\n",
"layout = go.Layout(\n",
" title='2015년 업종별 시가총액 (단위:조원)',\n",
")\n",
"\n",
"fig = go.Figure(data=data, layout=layout)\n",
"py.iplot(fig, filename='marcap/sector_marcap01')"
]
}
],
"metadata": {
"celltoolbar": "Slideshow",
"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.2"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment