[파이썬] 야후 주식API와 파이썬으로 엔비디아 주가분석 (전처리/스케일링 편)

2025. 1. 19. 15:16·Project/주식 & 비트코인 분석

개요

데이터분석에 대한 기본 개념과 파이썬이라는 언어에 익숙해졌다면, 여러 종류의 데이터를 가지고 연습을 해봐야

실력이 늘기 마련이다. 여러 도메인 (경제, 사회, 자연어, 정치 등) 에 대한 지식을 쌓는 것과 동시에

세상을 객관적으로 바라볼 수 있는 능력이 새기는 것이 데이터 분석의 매력인 것 같다.

이번 글에서는, 야후에서 제공하는 주가 데이터를 파이썬을 통해 전처리, 시각화, 예측 등을 해볼 것이다.

요즘 엔비디아와 관련해서 많은 이야기들이 오고 가는 것 같다. 객관적인 시각이 중요한 시점이다.

 

(사용하는 라이브러리 : pandas, matplotlib, seaborn, sklearn, yfinance)

 

 

데이터 생성

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import yfinance as yf
import datetime as dt

일단 필요한 라이브러리를 import 해주자.

 

start = dt.datetime(2024,1,1)
end =  dt.datetime.now()

yfinance 에서 데이터를 받아 오는 함수인 yf.download 의 파라미터에는 시작 시점과 끝 시점이 있기에,

datetime 라이브러리의 함수를 사용하여 설정해준다. now() 메서드는 현 시점의 시간을 리턴한다.

 

df = yf.download('NVDA',start,end)

받고 싶은 회사의 티커(약자)와 시작 및 끝 시점을 입력해준다. 

 

df.columns = ['Close','High','Low','Open','Volume']

주의) yfinance 에서 받은 데이터의 열 이름

위에서 받은 데이터프레임은 열 이름이 2개로 겹쳐 있는 형태이다. (Multi Index) 나중에 조작이 힘들 수 있으니

미리 따로 입력을 해서 바꿔놓는 것이 편하다.

 

yfinance로 받아온 주식 데이터. 순서대로 종가, 고가, 저가, 시가, 거래량을 의미한다.
yfinance로 받아온 주식 데이터. 순서대로 종가, 고가, 저가, 시가, 거래량을 의미한다.

 

df.reset_index(drop=True, inplace=True)

reset_index(drop = True)를 통해 날짜 형식으로 되어 있는 인덱스를 기본 숫자형태로 바꿔준다. (나중에 귀찮다)

 

 

요약통계

df.describe()
df.info()
df.isnull().sum()
df.duplicated().sum()

이것 이외에도 더 많은 요약 통계 기법이 있겠지만, 충분하다고 생각한다.

  • describe : 합, 평균, 표준편차, 분산, 최대최소, 퍼센타일 등 다양한 수치 데이터 제공.
  • info : 각 열의 결측치를 제외한 데이터 수 및 데이터 타입 리턴.
  • isnull().sum() : 각 열의 결측치 개수.
  • duplicated().sum() : 중복 데이터의 개수.

 

데이터 스케일링

df1 = df

주의) 기존 데이터 유지하기

항상 유념해두어야 하는 것이라고 생각한다. 기존 데이터에다가 그대로 각종 조작을 수행하다 보면,

나중에 기존 데이터가 필요한 순간에 대처를 하는데 또다른 시간이 소요된다.

 

from sklearn.preprocessing import MinMaxScaler
mms = MinMaxScaler()
df = mms.fit_transform(df1)

MinMaxScaler 로 스케일링을 수행해준다. (0과 1 사이로 데이터의 정규화)

기존 데이터를 df1로 둔 채, df를 스케일링된 데이터로 만든다.

 

df = pd.DataFrame(df,columns=['Close','High','Low','Open','Volume'])
df1 = df1.drop('Volume',axis=1)

스케일링된 데이터는 2차원 array 형식으로 리턴되기에 pd.DataFrame 함수를 통해 데이터프레임으로 변경해준다.

 

주의) 스케일링을 하지 않은 df1에는 Volume 열이 있다.

거래량은 가격보다 매우 큰 수치이기에, 나중에 시각화할 때 상대적으로 거래량만 매우 크게 나타날 수 있다.

그래서 미리 drop 시켜준다.

 

 

히스토그램

df1.hist(bins = 40, figsize = (12,8), color = '#76B900', alpha = 0.6)
plt.suptitle('NVDA Stock Price : Histograms of Numerical Values')
plt.show()

데이터프레임의 수치형 변수를 히스토그램으로 확인해준다.

히스토그램은 수치형 변수들에 대한 빈도 분석을 해주는 그래프이다. 막대 개수(bins) 조정이 중요하다.

 

수치형 변수에 대한 히스토그램.
수치형 변수에 대한 히스토그램.

 

엔비디아의 시그니처 색인 연한 초록빛을 적용하니 더욱 예뻐(?)보인다.

90달러와 120~140달러 선에서 변동성이 심한 것을 확인할 수 있다.

 

실습 파일

Stock_Price_Prediction.ipynb
0.68MB

 

관련 포스팅

https://skrrdevlog.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%ACPython-Seaborn-Matplotlib-%EC%9C%BC%EB%A1%9C-%EC%8B%9C%EA%B0%81%ED%99%94-%EC%B4%9D%EC%A0%95%EB%A6%AC-1

 

[파이썬/Python] Seaborn + Matplotlib 으로 시각화 총정리 (1)

개요파이썬의 시각화 라이브러리 하면 Matplotlib 이지만, 코드가 너무 자유로운 탓에 다양한 시각화를 하기엔코드가 길어질 수 있다. Heatmap, Grid 등 유용한 플롯들을 코드 한두줄로 작성할 수 있는

skrrdevlog.tistory.com

https://skrrdevlog.tistory.com/entry/Python-%ED%8C%8C%EC%9D%B4%EC%8D%ACPython-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D-%EA%B8%B0%EB%B3%B8%EA%B8%B0-%EC%B4%9D%EC%A0%95%EB%A6%AC-1

 

[Python] 파이썬 데이터 분석 쌩 기본기 : 데이터 다루기

기본 코드 ~ 함수import pandas as pddf = pd.read_csv('iris.csv')df.head()👉 판다스 불러오고, 데이터프레임 받고 위의 일부 데이터 확인df.indexdf.columns👉 얘네 은근 중요!인덱스만 따로 뽑고 싶다면 df.index 객

skrrdevlog.tistory.com

https://skrrdevlog.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%95%BC%ED%9B%84-%EC%A3%BC%EC%8B%9DAPI%EC%99%80-%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9C%BC%EB%A1%9C-%EC%97%94%EB%B9%84%EB%94%94%EC%95%84-%EC%A3%BC%EA%B0%80%EB%B6%84%EC%84%9D-%EC%8B%9C%EA%B0%81%ED%99%94-%ED%8E%B8

 

[파이썬] 엔비디아 주가 분포 & 추세 분석하기 (시각화 편)

개요이전 편에서 야후 금융 데이터를 받아서 필요한 전처리를 모두 수행했다. 올바른 데이터가 모두 갖춰졌다면 분석을 통해서 인사이트를 얻고, 그것을 직관적인 형태로 보고까지 해야한다."

skrrdevlog.tistory.com

 

'Project > 주식 & 비트코인 분석' 카테고리의 다른 글

[파이썬/Python] AI 반도체 주식 분석하기!📉📈(이동평균 & 수익률)  (3) 2025.01.28
[파이썬/Python] 나스닥 AI 반도체 주요 기업들 주식 분석하기!📉📈(주가 편)  (10) 2025.01.25
[파이썬] 엔비디아 주식 예측 머신러닝 모델 만들고 평가까지 (최종)  (11) 2025.01.23
[파이썬] 엔비디아 주식 분포 & 추세 분석하기 (시각화 편)  (16) 2025.01.21
'Project/주식 & 비트코인 분석' 카테고리의 다른 글
  • [파이썬/Python] AI 반도체 주식 분석하기!📉📈(이동평균 & 수익률)
  • [파이썬/Python] 나스닥 AI 반도체 주요 기업들 주식 분석하기!📉📈(주가 편)
  • [파이썬] 엔비디아 주식 예측 머신러닝 모델 만들고 평가까지 (최종)
  • [파이썬] 엔비디아 주식 분포 & 추세 분석하기 (시각화 편)
흑석동사는시골쥐
흑석동사는시골쥐
문과 경영학도 숫자 배우기 프로젝트
  • 흑석동사는시골쥐
    NaN
    흑석동사는시골쥐
  • 전체
    오늘
    어제
  • 링크

    • 독서 일지
    • 올리고 싶은 거 올려요
    • 분류 전체보기 (75)
      • Coding & Data Analysis (52)
        • Python (23)
        • R (21)
        • Excel & Data (2)
        • Git & Github (4)
        • Certificate (2)
      • Project (15)
        • 일자리 스크래핑 서비스 (8)
        • 최적의 인스타 피드 (2)
        • 주식 & 비트코인 분석 (5)
      • Economics (1)
        • 경제기사 스크랩 (1)
      • Records & Thoughts (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 공지사항

  • 인기 글

  • 태그

    데이터분석
    시각화
    데이터
    동아리
    개발
    다항회귀
    머신러닝
    데이터수집
    심장병 데이터
    전처리
    git
    자격증
    Colab
    파이썬
    주식
    AI반도체
    지도
    FLASK
    ADSP
    r
    웹스크래퍼
    matplotlib
    프로그래밍
    기초
    adsp공부법
    엔비디아
    코랩
    Python
    비전공자
    주가분석
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
흑석동사는시골쥐
[파이썬] 야후 주식API와 파이썬으로 엔비디아 주가분석 (전처리/스케일링 편)
상단으로

티스토리툴바