7 분 소요

대한항공

# 필수 라이브러리 불러오기
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]
'적자전환'

태그:

업데이트:

댓글남기기