개요
데이터분석에 대한 기본 개념과 파이썬이라는 언어에 익숙해졌다면, 여러 종류의 데이터를 가지고 연습을 해봐야
실력이 늘기 마련이다. 여러 도메인 (경제, 사회, 자연어, 정치 등) 에 대한 지식을 쌓는 것과 동시에
세상을 객관적으로 바라볼 수 있는 능력이 새기는 것이 데이터 분석의 매력인 것 같다.
이번 글에서는, 야후에서 제공하는 주가 데이터를 파이썬을 통해 전처리, 시각화, 예측 등을 해볼 것이다.
요즘 엔비디아와 관련해서 많은 이야기들이 오고 가는 것 같다. 객관적인 시각이 중요한 시점이다.
(사용하는 라이브러리 : 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) 나중에 조작이 힘들 수 있으니
미리 따로 입력을 해서 바꿔놓는 것이 편하다.
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달러 선에서 변동성이 심한 것을 확인할 수 있다.
실습 파일
관련 포스팅
[파이썬/Python] Seaborn + Matplotlib 으로 시각화 총정리 (1)
개요파이썬의 시각화 라이브러리 하면 Matplotlib 이지만, 코드가 너무 자유로운 탓에 다양한 시각화를 하기엔코드가 길어질 수 있다. Heatmap, Grid 등 유용한 플롯들을 코드 한두줄로 작성할 수 있는
skrrdevlog.tistory.com
[Python] 파이썬 데이터 분석 쌩 기본기 : 데이터 다루기
기본 코드 ~ 함수import pandas as pddf = pd.read_csv('iris.csv')df.head()👉 판다스 불러오고, 데이터프레임 받고 위의 일부 데이터 확인df.indexdf.columns👉 얘네 은근 중요!인덱스만 따로 뽑고 싶다면 df.index 객
skrrdevlog.tistory.com
[파이썬] 엔비디아 주가 분포 & 추세 분석하기 (시각화 편)
개요이전 편에서 야후 금융 데이터를 받아서 필요한 전처리를 모두 수행했다. 올바른 데이터가 모두 갖춰졌다면 분석을 통해서 인사이트를 얻고, 그것을 직관적인 형태로 보고까지 해야한다."
skrrdevlog.tistory.com
'Project > 주식 & 비트코인 분석' 카테고리의 다른 글
[파이썬/Python] AI 반도체 주식 분석하기!📉📈(이동평균 & 수익률) (3) | 2025.01.28 |
---|---|
[파이썬/Python] 나스닥 AI 반도체 주요 기업들 주식 분석하기!📉📈(주가 편) (10) | 2025.01.25 |
[파이썬] 엔비디아 주식 예측 머신러닝 모델 만들고 평가까지 (최종) (11) | 2025.01.23 |
[파이썬] 엔비디아 주식 분포 & 추세 분석하기 (시각화 편) (16) | 2025.01.21 |