대한항공 주가 분석
대한항공
# 필수 라이브러리 불러오기
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import yfinance as yf
from datetime import datetime
# 마이너스 부호 출력 설정
plt.rcParams['axes.unicode_minus'] = False
# matplotlib 한글 폰트 오류 문제 해결
from matplotlib import font_manager, rc
font_path = "./malgun.ttf" # 폰트 파일 위치
font_name = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font_name)
# 데이터 로드
FS = pd.read_csv('재무제표샘플데이터') # 재무제표샘플데이터
SPR = pd.read_csv('주가리포트_샘플') # 주가리포트_샘플 데이터
# 기존 칼럼 중 'ROA', 'ROE', 'PER' 등 비전공자인 내가 알아볼 수 있도록
# 구글링으로 뜻을 알고 칼럼 이름을 바꿈
FS.rename(columns={'ROA': '총자산이익률', 'ROE': '자기자본이익률', 'PER': '주가 수익비율'}, inplace=True)
# 분석할 기업인 '대한항공'의 재무제표샘플데이터
FS.query('기업=="대한항공"')
기업 | 연도 | 부채비율 | 매출액증가율 | 영업이익증가율 | 당기순이익증가율 | 매출액_상태 | 영업이익_상태 | 당기순이익_상태 | 총자산이익률 | 자기자본이익률 | 현재_주가 | 미래_주가 | 배당금 | 주가 수익비율 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3917 | 대한항공 | 2013 | 11.955326 | NaN | NaN | NaN | 흑자지속 | 적자전환 | 적자전환 | -1.673421 | NaN | 22179.0 | 30907.0 | 0.0 | 6.426833 |
3918 | 대한항공 | 2014 | 9.380314 | 0.512528 | 104.948227 | 37.421775 | 흑자지속 | 흑자전환 | 적자지속 | -2.611986 | -24.807745 | 30907.0 | 18898.0 | 0.0 | 2.907799 |
3919 | 대한항공 | 2015 | 10.334983 | -3.160872 | 55.232636 | -8.873370 | 흑자지속 | 흑자지속 | 적자지속 | -2.328201 | -23.955067 | 18898.0 | 20166.0 | 0.0 | 2.371737 |
3920 | 대한항공 | 2016 | 7.823962 | 1.594133 | 21.209756 | -1.099563 | 흑자지속 | 흑자지속 | 적자지속 | -2.324395 | -25.465144 | 20166.0 | 22273.0 | 0.0 | 2.639874 |
3921 | 대한항공 | 2017 | 15.218276 | 2.980091 | -19.262645 | 169.440890 | 흑자지속 | 흑자지속 | 흑자전환 | 3.253307 | 28.509597 | 22273.0 | 21106.0 | 250.0 | 2.578192 |
3922 | 대한항공 | 2018 | 11.319243 | 7.066237 | -50.625610 | 503.675181 | 흑자지속 | 흑자지속 | 적자전환 | -0.776738 | -5.978028 | 21106.0 | 12126.0 | 250.0 | 9.825885 |
3923 | 대한항공 | 2018 | 12.237975 | -2.435602 | -9.687638 | -23.317651 | 흑자지속 | 흑자지속 | 적자지속 | -0.623343 | -5.318634 | 21106.0 | 12126.0 | 250.0 | 9.825885 |
3924 | 대한항공 | 2019 | 10.293849 | -2.567814 | -223.031298 | 74.133388 | 흑자지속 | 흑자지속 | 적자지속 | -2.305319 | -20.956435 | 12126.0 | 27200.0 | 0.0 | 1.822089 |
3925 | 대한항공 | 2020 | 13.146948 | -62.817498 | -61.668720 | -170.743934 | 흑자지속 | 흑자지속 | 적자지속 | -0.913133 | -7.550858 | 27200.0 | NaN | 0.0 | 13.744315 |
# 주가리포트_샘플 데이터에서 분석할 기업인 '대한항공'의 유무 확인
SPR.query('종목명=="대한항공"')
종목명 | 리포트제목 | 적정가격 | 의견 | 증권사 | 날짜 | |
---|---|---|---|---|---|---|
805 | 대한항공 | 2분기에도 화물 호조로 기대이상의 영업실적 전망 | 41000 | 매수 | 하나금융투자 | 2021.7.5 |
978 | 대한항공 | 이미 반영된 여행 수요 회복 기대감 | 33000 | 중립 | SK증권 | 2021.6.7 |
1123 | 대한항공 | 다시 한 번 확인된 화물 저력 | 30000 | 중립 | SK증권 | 2021.5.17 |
1142 | 대한항공 | 변함없는 화물 수요 호조, 국제여객 수요 부진 트렌드 | 35000 | 매수 | 하나금융투자 | 2021.5.17 |
# 2013년 1월 1일부터 2020년 12월 31일까지의 대한항공 주가 데이터를 가져옴
df_KA = yf.download('003490.KS', start='2013-01-01', end='2020-12-31', progress=False)
df_KA
Open | High | Low | Close | Adj Close | Volume | |
---|---|---|---|---|---|---|
Date | ||||||
2013-01-02 | 45615.832031 | 46414.359375 | 45366.292969 | 46414.359375 | 45941.554688 | 626175 |
2013-01-03 | 46364.449219 | 47512.332031 | 45865.371094 | 47212.886719 | 46731.949219 | 990061 |
2013-01-04 | 47412.515625 | 48809.937500 | 47113.070312 | 48310.859375 | 47818.738281 | 1383641 |
2013-01-07 | 48310.859375 | 48610.308594 | 47861.687500 | 48310.859375 | 47818.738281 | 490415 |
2013-01-08 | 48011.410156 | 48310.859375 | 47462.425781 | 47562.242188 | 47077.746094 | 401873 |
... | ... | ... | ... | ... | ... | ... |
2020-12-23 | 20668.078125 | 21147.802734 | 20588.125000 | 21027.871094 | 21027.871094 | 1719705 |
2020-12-24 | 21187.779297 | 21867.386719 | 21147.802734 | 21507.593750 | 21507.593750 | 2743391 |
2020-12-28 | 21187.779297 | 21267.732422 | 20788.009766 | 21067.847656 | 21067.847656 | 2286435 |
2020-12-29 | 21467.617188 | 21827.410156 | 21147.802734 | 21507.593750 | 21507.593750 | 1946074 |
2020-12-30 | 21547.572266 | 21747.457031 | 21307.708984 | 21747.457031 | 21747.457031 | 1893276 |
1966 rows × 6 columns
df_KA의 칼럼 설명
칼럼 | 설명 |
---|---|
Open | 시가 |
High | 고가 |
Low | 저가 |
Close | 종가 |
Adj Close | 조정종가(액면 분할, 증자 등의 영향을 고려한 종가) |
Volume | 거래량 |
# df_KA의 요약정보
df_KA.info()
<class 'pandas.core.frame.DataFrame'> DatetimeIndex: 1966 entries, 2013-01-02 to 2020-12-30 Data columns (total 6 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Open 1966 non-null float64 1 High 1966 non-null float64 2 Low 1966 non-null float64 3 Close 1966 non-null float64 4 Adj Close 1966 non-null float64 5 Volume 1966 non-null int64 dtypes: float64(5), int64(1) memory usage: 107.5 KB
df_KA의 인덱스를 보면 2013년 1월 1일부터 2020년 12월 31일까지의 DatetimeIndex 형태다.
df_KA.index
DatetimeIndex(['2013-01-02', '2013-01-03', '2013-01-04', '2013-01-07', '2013-01-08', '2013-01-09', '2013-01-10', '2013-01-11', '2013-01-14', '2013-01-15', ... '2020-12-16', '2020-12-17', '2020-12-18', '2020-12-21', '2020-12-22', '2020-12-23', '2020-12-24', '2020-12-28', '2020-12-29', '2020-12-30'], dtype='datetime64[ns]', name='Date', length=1966, freq=None)
다음은 df_KA의 ‘Close’(종가)를 기준으로 선그래프를 그려보았다.
df_KA['Close'].min()
9228.734375
fig = plt.figure(figsize=(15, 5))
ax = fig.add_subplot(1, 1, 1)
date = df_KA.iloc[df_KA['Close'].argmin()].name
ax.plot(df_KA['Close'])
ax.grid(axis='y')
ax.annotate('코로나 직격', xy=(date, df_KA['Close'].asof(date)),
xytext=((datetime(date.year-2, date.month, date.day)), df_KA['Close'].asof(date)),
arrowprops=dict(facecolor='black', headwidth=10, width=4, headlength=15),
horizontalalignment='left', verticalalignment='center', size=15,
rotation=0)
ax.set_title('연도', size=20)
ax.set_ylabel('대한항공 종가', size=18)
plt.xticks(fontsize=16)
plt.yticks(fontsize=16)
plt.show()

코로나 19의 영향을 크게 받은 2020년의 주가가 최하인 것을 확인할 수 있다.
2014년
2014년 12월에도 대한항공에서는 문제가 있었는데 바로 “대한항공 086편 이륙 지연 사건”이다. 2014년 12월 5일 사건이 일어나고 대한항공의 주식이 타격을 입을 것으로 생각을 했었고 당시 그런 전망이 우세했었으나 실제로는 그렇지 않았다.
df_KA.loc['2014-12']['Close'].plot();
이유를 알아보니, 원유 급락이라는 호재가 작용하면서 대한항공 주가도 올랐다. 이는 호재가 악재를 덮어버려서 주가가 오르는 것이라는 분석이 많다. 흥미로운 점은 원유 급락으로 인한 항공주의 상승세가 계속되는 가운데 아시아나항공 주가가 9.19%로 급등한 데 비해 대한항공은 3.94% 오르는 데 그쳤다. 이에 따라 위 사건의 영향이 있는 걸로 짐작한다.

위에서 언급한대로 2014년 12월 8일 대한항공과 아시아나항공의 주가는 각각 3.94%, 9.19% 상승한 것을 볼 수 있다.
# 2014년 12월 1일부터 2020년 12월 31일까지의 아시아나항공 주가 데이터를 가져옴
df_AA = yf.download('020560.KS', start='2014-12-01', end='2020-12-31', progress=False)
# 종가 데이터를 퍼센트 변화율로 계산 후 2014년 12월 8일자 값을 가져오는 함수
stock_per = lambda x: np.round(x['Close'].pct_change().loc['2014-12-08'] * 100, 2)
print('2014년 12월 8일 대한항공의 주가 상승률:', stock_per(df_KS), '%')
print('2014년 12월 8일 아시아나항공의 주가 상승률:', stock_per(df_AA), '%')
2014년 12월 8일 대한항공의 주가 상승률: 3.94 % 2014년 12월 8일 아시아나항공의 주가 상승률: 9.19 %
fig = plt.figure(figsize=(15, 10))
ax = fig.add_subplot(1, 1, 1)
date = datetime(2014, 12, 8)
ax.plot(df_KS.loc['2014-12']['Close'].pct_change(), label='대한항공', linewidth=3, color='#8b0000')
ax.plot(df_AA.loc['2014-12']['Close'].pct_change(), label='아시아나항공', linewidth=3, color='#808080')
ax.annotate(str(stock_per(df_KS)) + ' %', xy=(date, df_KA['Close'].pct_change().asof(date)),
xytext=(datetime(date.year, date.month, date.day-1), df_KA['Close'].pct_change().asof(date)-0.005),
horizontalalignment='left', verticalalignment='center', size=15,
rotation=0)
ax.annotate(str(stock_per(df_AA)) + ' %', xy=(date, df_AA['Close'].pct_change().asof(date)),
xytext=(datetime(date.year, date.month, date.day-1), df_AA['Close'].pct_change().asof(date)-0.005),
horizontalalignment='left', verticalalignment='center', size=15,
rotation=0)
ax.plot(date, df_KA['Close'].pct_change().asof(date), marker='o', markersize=10, color='#8b0000')
ax.plot(date, df_AA['Close'].pct_change().asof(date), marker='o', markersize=10, color='#808080')
ax.set_title('날짜\n2014', size=20)
ax.grid(axis='y')
ax.set_ylabel('퍼센트 변화율', size=18)
plt.xticks(fontsize=16)
plt.yticks(fontsize=16)
plt.ylim([-0.05, 0.1])
plt.legend(bbox_to_anchor=(1.02, 1.0), loc='upper left',
fontsize=16, title='항공사 구분', title_fontsize=18)
plt.tight_layout()
plt.show()
2016년
또한, 코로나의 영향을 받은 2020년을 제외하고 2016년의 주가가 하락한 걸 확인할 수 있다.
# 연도별 평균 종가 선 그래프
df_KA.groupby(lambda x: x.year).mean()['Close'].plot();
2016년 초반 유가 상승과 화물 운송 문제로 떨어졌던 주가가 반등했다가, 5월 후반부터 다시 떨어지는 추세다.
# 2016년 대한항공의 종가 선 그래프
df_KA.loc['2016']['Close'].plot();
대한항공 2708편 화재 사고의 영향이 있는 걸로 짐작된다.

2017년
재무제표샘플데이터에서의 2017년 대한항공 ‘당기순이익증가율’과 ‘당기순이익_상태’의 상태를 보면 엄청난 실적이 있었던 걸로 보인다.
# 분석할 기업인 '대한항공'의 재무제표샘플데이터
FS_KA = FS.query('기업=="대한항공"')
FS_KA
기업 | 연도 | 부채비율 | 매출액증가율 | 영업이익증가율 | 당기순이익증가율 | 매출액_상태 | 영업이익_상태 | 당기순이익_상태 | 총자산이익률 | 자기자본이익률 | 현재_주가 | 미래_주가 | 배당금 | 주가 수익비율 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3917 | 대한항공 | 2013 | 11.955326 | NaN | NaN | NaN | 흑자지속 | 적자전환 | 적자전환 | -1.673421 | NaN | 22179.0 | 30907.0 | 0.0 | 6.426833 |
3918 | 대한항공 | 2014 | 9.380314 | 0.512528 | 104.948227 | 37.421775 | 흑자지속 | 흑자전환 | 적자지속 | -2.611986 | -24.807745 | 30907.0 | 18898.0 | 0.0 | 2.907799 |
3919 | 대한항공 | 2015 | 10.334983 | -3.160872 | 55.232636 | -8.873370 | 흑자지속 | 흑자지속 | 적자지속 | -2.328201 | -23.955067 | 18898.0 | 20166.0 | 0.0 | 2.371737 |
3920 | 대한항공 | 2016 | 7.823962 | 1.594133 | 21.209756 | -1.099563 | 흑자지속 | 흑자지속 | 적자지속 | -2.324395 | -25.465144 | 20166.0 | 22273.0 | 0.0 | 2.639874 |
3921 | 대한항공 | 2017 | 15.218276 | 2.980091 | -19.262645 | 169.440890 | 흑자지속 | 흑자지속 | 흑자전환 | 3.253307 | 28.509597 | 22273.0 | 21106.0 | 250.0 | 2.578192 |
3922 | 대한항공 | 2018 | 11.319243 | 7.066237 | -50.625610 | 503.675181 | 흑자지속 | 흑자지속 | 적자전환 | -0.776738 | -5.978028 | 21106.0 | 12126.0 | 250.0 | 9.825885 |
3923 | 대한항공 | 2018 | 12.237975 | -2.435602 | -9.687638 | -23.317651 | 흑자지속 | 흑자지속 | 적자지속 | -0.623343 | -5.318634 | 21106.0 | 12126.0 | 250.0 | 9.825885 |
3924 | 대한항공 | 2019 | 10.293849 | -2.567814 | -223.031298 | 74.133388 | 흑자지속 | 흑자지속 | 적자지속 | -2.305319 | -20.956435 | 12126.0 | 27200.0 | 0.0 | 1.822089 |
3925 | 대한항공 | 2020 | 13.146948 | -62.817498 | -61.668720 | -170.743934 | 흑자지속 | 흑자지속 | 적자지속 | -0.913133 | -7.550858 | 27200.0 | NaN | 0.0 | 13.744315 |
FS_KA.query('연도==2017')
기업 | 연도 | 부채비율 | 매출액증가율 | 영업이익증가율 | 당기순이익증가율 | 매출액_상태 | 영업이익_상태 | 당기순이익_상태 | 총자산이익률 | 자기자본이익률 | 현재_주가 | 미래_주가 | 배당금 | 주가 수익비율 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3921 | 대한항공 | 2017 | 15.218276 | 2.980091 | -19.262645 | 169.44089 | 흑자지속 | 흑자지속 | 흑자전환 | 3.253307 | 28.509597 | 22273.0 | 21106.0 | 250.0 | 2.578192 |
fig = plt.figure(figsize=(15, 10))
ax = fig.add_subplot(1, 1, 1)
ax.plot(FS_KA['당기순이익증가율'], linewidth=3)
ax.set_title('연도', size=20)
ax.grid(axis='y')
ax.set_ylabel('대한항공 당기순이익증가율', size=18)
plt.xticks(FS_KA.index, labels=FS_KA['연도'], fontsize=16)
plt.yticks(fontsize=16)
plt.ylim(ax.get_ylim()[0]-50, ax.get_ylim()[1]+50)
plt.tight_layout()
plt.show()
2017년 기사
https://www.hani.co.kr/arti/economy/marketing/831455.html

2018년
2018년 4월의 주가도 흥미롭게 주목할 부분이 있다. 2018년 4월 12일에는 바로 “물벼락 갑질” 사건이 있었는데 대한항공 주가가 12일 주식시장에서 급락한 모습을 볼 수 있다. 이때 국제유가의 상승으로 다른 항공주도 내림세를 보였지만 대한항공의 하락폭은 더욱 큰걸 보아 갑질사건의 영향이 있는 것으로 보인다.
# 종가 데이터를 퍼센트 변화율로 계산 후 2018년 4월 12일자 값을 가져오는 함수
stock_per = lambda x: np.round(x['Close'].pct_change().loc['2018-04-12'] * 100, 2)
fig = plt.figure(figsize=(15, 10))
ax = fig.add_subplot(1, 1, 1)
date = datetime(2018, 4, 12)
ax.plot(df_KS.loc['2018-04']['Close'].pct_change(), label='대한항공', linewidth=3, color='#8b0000')
ax.plot(df_AA.loc['2018-04']['Close'].pct_change(), label='아시아나항공', linewidth=3, color='#808080')
ax.annotate(str(stock_per(df_KS)) + ' %', xy=(date, df_KA['Close'].pct_change().asof(date)),
xytext=(datetime(date.year, date.month, date.day-1), df_KA['Close'].pct_change().asof(date)-0.005),
horizontalalignment='left', verticalalignment='center', size=15,
rotation=0)
ax.annotate(str(stock_per(df_AA)) + ' %', xy=(date, df_AA['Close'].pct_change().asof(date)),
xytext=(datetime(date.year, date.month, date.day-1), df_AA['Close'].pct_change().asof(date)-0.005),
horizontalalignment='left', verticalalignment='center', size=15,
rotation=0)
ax.plot(date, df_KA['Close'].pct_change().asof(date), marker='o', markersize=10, color='#8b0000')
ax.plot(date, df_AA['Close'].pct_change().asof(date), marker='o', markersize=10, color='#808080')
ax.set_title('날짜\n2018', size=20)
ax.grid(axis='y')
ax.set_ylabel('퍼센트 변화율', size=18)
plt.xticks(fontsize=16)
plt.yticks(fontsize=16)
plt.ylim([-0.08, 0.08])
plt.legend(bbox_to_anchor=(1.02, 1.0), loc='upper left',
fontsize=16, title='항공사 구분', title_fontsize=18)
plt.tight_layout()
plt.show()
2018년에 주목할 점이 또 있다. 그래프를 통해 먼저 살펴보자.
FS_KA
기업 | 연도 | 부채비율 | 매출액증가율 | 영업이익증가율 | 당기순이익증가율 | 매출액_상태 | 영업이익_상태 | 당기순이익_상태 | 총자산이익률 | 자기자본이익률 | 현재_주가 | 미래_주가 | 배당금 | 주가 수익비율 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3917 | 대한항공 | 2013 | 11.955326 | NaN | NaN | NaN | 흑자지속 | 적자전환 | 적자전환 | -1.673421 | NaN | 22179.0 | 30907.0 | 0.0 | 6.426833 |
3918 | 대한항공 | 2014 | 9.380314 | 0.512528 | 104.948227 | 37.421775 | 흑자지속 | 흑자전환 | 적자지속 | -2.611986 | -24.807745 | 30907.0 | 18898.0 | 0.0 | 2.907799 |
3919 | 대한항공 | 2015 | 10.334983 | -3.160872 | 55.232636 | -8.873370 | 흑자지속 | 흑자지속 | 적자지속 | -2.328201 | -23.955067 | 18898.0 | 20166.0 | 0.0 | 2.371737 |
3920 | 대한항공 | 2016 | 7.823962 | 1.594133 | 21.209756 | -1.099563 | 흑자지속 | 흑자지속 | 적자지속 | -2.324395 | -25.465144 | 20166.0 | 22273.0 | 0.0 | 2.639874 |
3921 | 대한항공 | 2017 | 15.218276 | 2.980091 | -19.262645 | 169.440890 | 흑자지속 | 흑자지속 | 흑자전환 | 3.253307 | 28.509597 | 22273.0 | 21106.0 | 250.0 | 2.578192 |
3922 | 대한항공 | 2018 | 11.319243 | 7.066237 | -50.625610 | 503.675181 | 흑자지속 | 흑자지속 | 적자전환 | -0.776738 | -5.978028 | 21106.0 | 12126.0 | 250.0 | 9.825885 |
3923 | 대한항공 | 2018 | 12.237975 | -2.435602 | -9.687638 | -23.317651 | 흑자지속 | 흑자지속 | 적자지속 | -0.623343 | -5.318634 | 21106.0 | 12126.0 | 250.0 | 9.825885 |
3924 | 대한항공 | 2019 | 10.293849 | -2.567814 | -223.031298 | 74.133388 | 흑자지속 | 흑자지속 | 적자지속 | -2.305319 | -20.956435 | 12126.0 | 27200.0 | 0.0 | 1.822089 |
3925 | 대한항공 | 2020 | 13.146948 | -62.817498 | -61.668720 | -170.743934 | 흑자지속 | 흑자지속 | 적자지속 | -0.913133 | -7.550858 | 27200.0 | NaN | 0.0 | 13.744315 |
fig = plt.figure(figsize=(15, 10), constrained_layout=True)
ax1 = fig.add_subplot(1, 2, 1)
ax2 = fig.add_subplot(1, 2, 2)
ax1.plot(FS_KA['영업이익증가율'][:-1], linewidth=3)
ax1.grid(axis='y')
ax1.set_ylabel('대한항공 영업이익증가율', size=18)
ax1.set_xticklabels(FS_KA['연도'], fontsize=16)
ax1.set_yticklabels(ax1.get_yticks(), fontsize=16)
ax1.set_ylim(ax1.get_ylim()[0]-1, ax1.get_ylim()[1]+1)
ax2.plot(FS_KA['당기순이익증가율'], linewidth=3)
ax2.grid(axis='y')
ax2.set_ylabel('대한항공 당기순이익증가율', size=18)
ax2.set_xticklabels(FS_KA['연도'], fontsize=16)
ax2.set_yticklabels(ax2.get_yticks(), fontsize=16)
ax2.set_ylim(ax2.get_ylim()[0]-50, ax2.get_ylim()[1]+50)
plt.suptitle('연도', size=40)
plt.tight_layout()
plt.show()
2018년 영업이익증가율은 줄었지만, 당기순이익증가율이 최대인 것을 확인할 수 있다.
https://www.hankookilbo.com/News/Read/201901291824323435

위 자료처럼 당기순이익_상태를 보면 ‘적자전환’인 것을 확인할 수 있다.
FS_KA.query('연도==2018')['당기순이익_상태'].iloc[0]
'적자전환'
댓글남기기