import pandas as pd
from pandas_datareader import data
#삼성전자 주가 데이터
df = data.get_data_yahoo('005930.KS',start = '2020-01-01',end='2021-02-11')
# 데이터프레임 평균, 표준편차, 사분위수
df.describe()
# 종가 기준 최대값
df.Close.max()
# 종가 기준 최소값
df.Close.min()
# 종가 기준 평균값
df.Close.mean()
# 총 데이터 개수
df.shape[0]
# 특정 컬럼 선택
df.Close
# 상위 3개의 로우만 선택
df.iloc[:3]
# 시작가 대비 종가가 높았던 날 데이터
df[df.Open < df.Close]
# 종가 기준 가장 주가가 높았던 날의 데이터 선택
df[df.Close == df.Close.max()]
# 종가 기준 주가가 90000원 이상이었던 날짜 반환
df[df.Close >= 90000].index
# 2021년 1월 15일 데이터 반환
df.loc['2021-01-15']
# 2021년 1월 11일의 고가와 저가 반환
df.loc['2021-01-11'].High, df.loc['2021-01-11'].Low
# 데이터프레임 100번째 데이터 선택
df.iloc[100]
# 데이터 날짜 역순으로 정렬
df.sort_index(ascending=False)
# 종가 데이터를 가격이 높은 순서대로 정렬
df.Close.sort_values(ascending=False)
# 인덱스 컬럼을 0부터 순차적으로 증가하는 정수로 변경
df = df.reset_index()
# 컬럼명을 Date는 날짜로, High는 고가로, Low는 저가로
df.rename(columns={"Date":"날짜","High":"고가","Low":"저가"})
# 날짜 컬럼을 삭제
df.drop('Date',axis=1)
# diff 컬럼을 생성하고 종가와 시가의 차이를 계산
df['diff'] = df.Close - df.Open
# Date 필드에 저장된 값을 파싱하여 year, month, day 필드에 저장
n_df = df.reset_index()
n_df['year'] = n_df['Date'].apply(lambda x: x.year)
n_df['month'] = n_df['Date'].apply(lambda x: x.month)
n_df['day'] = n_df['Date'].apply(lambda x: x.day)
# 모든 데이터를 소수점 둘째자리까지 표시
df.drop('Date',axis=1).applymap(lambda x: round(x,2))
# 거래량 필드를 생성하고 세 자릿수마다 콤마가 들어가도록 변경
df.drop('Date',axis=1).applymap(lambda x: "{:,}".format(x))
# 주가 데이터 월별로 그룹핑하고 거래량의 평균값 표시
n_df.groupby('month').mean()['Volume']
# 결측치 확인하고 있을 경우 처리
df.isna().sum()
df.isnull().sum()
# 12월 데이터와 11월 데이터를 별도로 만들고 두 데이터프레임을 하나로
df12 = df[df.Date.between('2020-12-01','2020-12-31')]
df11 = df[df.Date.between('2020-11-01','2020-11-30')]
pd.concat([df11,df12])
반응형
'23년 이전 글 > python' 카테고리의 다른 글
시각화 라이브러리 plotly를 편하게 사용하는 방법 (0) | 2022.12.19 |
---|---|
FastAPI로 백엔드 CRUD - DB구성 - mysql, sqlalchemy (0) | 2021.11.12 |
FastAPI로 백엔드 만들어보기 - 개발환경 구성 - docker로 mysql (0) | 2021.11.12 |
FastAPI로 백엔드 만들어보기 - 개발환경 구성 - poetry (0) | 2021.11.11 |