Python에서 Altair를 사용하여 Tesla 주식 실적 시각화

이전 게시물에서는 Python에서 시각화를 위해 이미 seaborn 및 matplotlib.pyplot을 소개했습니다. 이 글에서는 altair 모듈을 소개하고 싶습니다. 이것은 Python에서 시각화를 지원하는 대체 모듈입니다.

altair 모듈은 명령 프롬프트에서 pip install로 설치할 수 있습니다.

아래에서는 pandas 및 pandas_datareader와 함께 altair 모듈을 가져옵니다. pandas_datareader를 사용하여 Tesla의 주가 데이터를 읽습니다. 알테어에서 만든 차트로 주가 전개를 시각화하겠습니다. 하지만 먼저 Yahoo Finance에서 데이터를 쿼리하고 검색된 데이터 프레임의 헤더를 표시합니다.

# 관련 모듈 가져 오기
import pandas as pd
import altair as alt
import pandas_datareader.data as web
import datetime
# 지난 5 년간 테슬라 주가 데이터 읽기
start = datetime.datetime(2015,10,11)
end = datetime.datetime(2020,10,11)
df = web.DataReader("TSLA","yahoo",start,end)
# 주가 데이터 프레임의 헤더 표시
df.head()
HighLowOpenCloseVolumeAdj Close
Date
2015-10-1244.59999843.05400144.59800043.11600119181500.043.116001
2015-10-1344.50400242.22600242.65599843.84999825857500.043.849998
2015-10-1444.18999943.08599944.13399943.37599915522000.043.375999
2015-10-1544.34600142.74000243.28599944.26200114221000.044.262001
2015-10-1646.09600144.57400144.60800245.40200021672500.045.402000

현재 날짜는 데이터 프레임의 행 인덱스입니다. altair로 작업하려면 지정된 열 헤더가있는 별도의 열로 추가하는 것이 좋습니다.

df["Dates"] = df.index

이제 데이터가 있으므로 Python의 altair 모듈을 사용하여 주가 차트를 만들 수 있습니다.

# altair로 차트 만들기
chart = alt.Chart(df).mark_area().encode(
    x="Dates",
    y="Close"
)
# altair 차트 표시
chart

아주 기본적인 차트였습니다. 아래에서 색상 그라디언트를 사용하여 다른 영역 차트를 만듭니다.

# altair 차트 생성
chart = alt.Chart(df).mark_area(line={'color':'darkgreen'},color=alt.Gradient(
        gradient='linear',
        stops=[alt.GradientStop(color='white', offset=0),
               alt.GradientStop(color='darkgreen', offset=1)])).encode(x="Dates",y="Close")
# altair 차트 표시
chart

차트에 제목을 추가하고 싶습니다. x 축과 y 축 제목도 변경하고 싶습니다. 아래 코드에서 이렇게합니다.

# 차트 제목 추가
chart.title = "Daily TSLA stock closing prices [USD]"
# x 및 y 축 레이블 조정
chart.encoding.x.title = "Time"
chart.encoding.y.title = "Daily closing price [USD]"
# 수정 된 차트 표시
chart

이제 캔들 스틱 다이어그램을 만들어 보겠습니다. 캔들 스틱 다이어그램으로 주식 분석에 대한 설명은 예를 들면 다음과 같습니다. 여기에서 찾을 수 있습니다 : https://diagrammm.com/candlestick_chart

# 색상 조건 생성
color_conditions = alt.condition("datum.Open <= datum.Close",
                                 alt.value("green"),
                                 alt.value("red"))# build chart
chart = alt.Chart(df).encode(x = "Dates")
# 차트 제목 설정
chart.title = "Candle-stick diagram of TSLA stock prices"
# 차트의 x 축 레이블 설정
chart.encoding.x.title = "Time"
# mark_rule () 메서드를 사용하여 규칙 표시를 구성합니다.
rules = chart.mark_rule().encode(
    y = "Low",
    y2 = "High")
# 규칙에 대한 y 축 레이블 조정
rules.encoding.y.title = "Price"
# 구성 막대
bars = chart.mark_bar().encode(
    y="Open",
    y2="Close",
    color = color_conditions)
# 표시 규칙과 막대 (둘 다 동일한 기본 차트를 기반으로 함)
rules + bars

위의 캔들 스틱 다이어그램에서 altair bar는 altair 규칙 위에 두 번째 레이어로 배치되었습니다.

Tesla의 주가 데이터를 사용하여 더 많은 플로팅 예제를 만들어 보겠습니다. 아래 코드에서 Tesla 일일 종가에 대한 주가 라인 플롯을 생성합니다.

# 라인 플롯 생성
chart = alt.Chart(df).mark_line().encode(x="Dates",y="Close")
# 제목 및 축 라벨 설정
chart.title = "Daily TSLA stock closing prices"
chart.encoding.x.title = "Time"
chart.encoding.y.title = "Price [USD]"
# 디스플레이 라인 플롯
chart

차트를 만들 때 예를 들어 몇 가지 추가 속성을 지정할 수도 있습니다. 차트의 너비 :

# 색상 조건 생성
color_conditions = alt.condition("datum.Open <= datum.Close",
                                 alt.value("green"),
                                 alt.value("red"))# build chart
chart = alt.Chart(df).encode(x = "Dates").properties(width=800)
# 차트 제목 설정
chart.title = "Candle-stick diagram of TSLA stock prices"
# 차트의 x 축 레이블 설정
chart.encoding.x.title = "Time"
# mark_rule () 메서드를 사용하여 규칙 표시를 구성합니다.
rules = chart.mark_rule().encode(
    y = "Low",
    y2 = "High")
# 규칙에 대한 y 축 레이블 조정
rules.encoding.y.title = "Price"
# 구성 막대
bars = chart.mark_bar().encode(
    y="Open",
    y2="Close",
    color = color_conditions)
# 표시 규칙과 막대 (둘 다 동일한 기본 차트를 기반으로 함)
rules + bars

이것으로 Python의 altair 모듈에 대한 기본적인 소개를 마쳤습니다. 더 많은 정보를 원하시면 I e.g. 문서 확인을 권장합니다 : https://altair-viz.github.io/

예를 들어 Python 및 R의 시각화에 대한 다른 게시물을 확인할 수도 있습니다. R의 Leaflet을 사용한 공간 데이터 시각화, Python의 Folium 및 Leaflet을 사용한 지오 코딩 및 히트 매핑, R의 deckgl을 사용한 3D 히트 맵핑. 또한 Python의 Seaborn 및 Matplotlib.pyplot을 사용한 데이터 시각화에 대한 여러 자습서를 작성했습니다. 예 : 몬테카를로 시뮬레이션과 함께 Markowitz 포트폴리오 이론을 적용하여 트럭 운송 주식의 효율적인 경계를 시각화하기 위해 Matplotlib를 사용했습니다.

Leave a Reply

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.

Close

메타