반응형

파이썬 주식 / yfinance를 이용하여 주가 일간 변동률 구하기

 

 

최근 삼성전자의 주가 일간 변동률이 어떤지 분석하는 주가 수익률에 대한 히스토그램을 표시해보도룩 하겠습니다.

 

주가 정보가져오는 부분은 아래 링크를 참조하시면 됩니다. 

https://zidarn87.tistory.com/36?category=416525

 

파이썬 주식 / yfinance를 이용하여 삼성전자 주식 정보 가져와 그래프로 표시하기

파이썬 주식 / yfinance를 이용하여 삼성전자 주식 정보 가져와 그래프로 표시하기 필요 라이브러리 먼저 주식 정보를 받아오기 위해 야후 파이낸스에서 제공하는 yfinace 라이브러리를 사용

zidarn87.tistory.com

일간 변동률

일간 변동률은 아래와 같은 식으로 계산하게 됩니다. 

오늘 변동률 = (오늘 종가 - 어제 종가)/어제 종가 * 100 

 

'DailyChange' 열을 만들어 오늘 종가에서 어제 종가를 뺀 값을 구합니다. 

'DailyChange_rate' 열을 만들어 오늘 변동률 값을 넣습니다. 

두 열의 첫번째 행의 값은 0으로 지정합니다. 

samsung['DailyChange'] = samsung['Close']- samsung['Close'].shift(1)
samsung['DailyChange_rate'] = (samsung['Close']- samsung['Close'].shift(1))/samsung['Close'].shift(1)*100

samsung['DailyChange'][0] = 0
samsung['DailyChange_rate'][0] = 0

print(samsung[['Close', 'DailyChange', 'DailyChange_rate']])

주가 일간 변동률이 1.0 이상인 일자를 구해보도록 하겠습니다. 

아래 코드는 조건을 지정해 그 조건에 해당하는 데이터를 출력하도록 하였습니다.

condition = (samsung['DailyChange_rate']>=1.0)
print(samsung[condition])

 

일간 변동률 히스토그램

우선 위에서 만들었던 주가 일간 변동률에 대한 정보를 보겠습니다. 

describe() 함수를 이용하면 표본, 평균값, 표준편차, 최소값, 25% 값, 50% 값, 75% 값, 최대값을 확인할 수 있습니다. 

아래 정보는 삼성전자의 주식의 주가 일간 변동률에 대한  '2020-07-01'부터 '2020-08-14'의 데이터 정보입니다. 

표본(데이터 수)는 33개, 평균 변동률값은 0.30, 표준편차는 1.62, 최소 변동률값은 -2.91, 최대 변동률값은 5.40입니다.  

 

이러한 내용을 히스토그램으로 표시하여, 변동률 분포를 보도록 하겠습니다. 

히스토그램을 보기위해 matplotlib.pyplot의 hist 함수를 이용합니다. 

전달인자는 bins는 관측한 데이터 특성을 잘 보여주도록 사용하는 값으로 기본값은 10입니다. 

print(samsung['DailyChange_rate'].describe())

plt.hist(samsung['DailyChange_rate'], bins=20)
plt.grid(True)
plt.show()

 

아래 히스토그램 분포도를 보면 변동률은 0.8 ~ 1.2% 대가 가장 많은 것을 볼 수 있습니다. 

반응형
반응형

파이썬 데이터 분석 / pandas DataFrame 열 추가 및 삭제

DataFrame 데이터 가져오기

야후에서 제공하는 API를 사용해 데이터를 가져와 보겠습니다. 

아래는 삼성전자의 주식 정보를 가져오는 구문입니다. 

기간은 2020/07/01 이후의 데이터를 가져옵니다. 

 

아래의 samsung 변수는 dataframe 형식으로 반환됩니다. 

from pandas_datareader import data as pdr

samsung = pdr.get_data_yahoo('005930.KS', start='2020-07-01')

DataFrame 열 확인

데이터를 출력하는 것은 간단합니다. 

DataFrame의 열을 확인하기 위해서는 columns 속성을 이용합니다. 

아래를 보면 6개의 열을 가지고 있음을 볼 수 있습니다. 

print(samsung)
print(samsung.columns)

DataFrame 열 삭제

열을 삭제해 보겠습니다. 

del 명령어를 이용하여 DataFrame의 속성을 지정해주면 삭제됩니다. 

del samsung["High"]
print(samsung.columns)

DataFrame 열 추가

아래 구문은 NewOne 이라는 열을 추가하는데, 값은 모두 0으로 지정하여 값을 추가하였습니다. 

samsung['NewOne'] = 0
print(samsung.columns)
print(samsung)

 

이번에는 새로운 열을 추가할 때, 각 행의 값을 다른 열의 값을 이용하여 넣어보도록 하겠습니다. 

'Close'는 주가의 그 날의 종가 데이터입니다. 

새로운 열은 그 전날의 종가 데이터의 변동 차이에 대한 값을 넣도록 하였습니다. 

shift(1)을 하면 전체 데이터가 1행씩 뒤로 이동되는데, samsum['Close'].shift(1)을 하면 이전 날의 종가 데이터가 됩니다.

 

하여, 새로운 열인 'DailyChange'를 추가하여, 종가 변동차이 값을 지정하였습니다. 

samsung['DailyChange'] = samsung['Close']- samsung['Close'].shift(1)

print(samsung.columns)
print(samsung)
print(samsung['DailyChange'])

전체 코드

from pandas_datareader import data as pdr

samsung = pdr.get_data_yahoo('005930.KS', start='2020-07-01')

samsung['DailyChange'] = samsung['Close']- samsung['Close'].shift(1)

print(samsung.columns)
print(samsung)
print(samsung['DailyChange'])
반응형
반응형

파이썬 시스템 / wmi를 이용한 윈도우 프로세스 정보 표시하기 

라이브러리 설치

wmi 모듈을 사용하기 위해 아래 라이브러리를 설치합니다.

pip install WMI 
pip install pywin32

 

프로세스 정보 가져오기

WMI() 함수를 인스턴스화하여, 프로세스 정보를 가진 리스트를 가져옵니다. 

WMI_OBJ = wmi.WMI()
process_list = WMI_OBJ.Win32_process()

 

가져온 리스트 중 프로세스 하나의 모든 정보를 출력해 봅니다. 

프로세스의 많은 정보를 가지고 있습니다. 

이 중에 실행중인 모든 프로세스의 Name과 ProcessID를 출력해 보도록 하겠습니다. 

아래 전체 코드를 참조해 주시면 됩니다. 

instance of Win32_Process
{
Caption = "System Idle Process";
CreationClassName = "Win32_Process";
CreationDate = "20200814212106.670400+540";
CSCreationClassName = "Win32_ComputerSystem";
CSName = "";
Description = "System Idle Process";
Handle = "0";
HandleCount = 0;
KernelModeTime = "49782727118";
Name = "System Idle Process";
OSCreationClassName = "Win32_OperatingSystem";
OSName = "Microsoft Windows 7 Ultimate K |C:\\Windows|\\Device\\Harddisk0\\Partition2";
OtherOperationCount = "0";
OtherTransferCount = "0";
PageFaults = 1;
PageFileUsage = 0;
ParentProcessId = 0;
PeakPageFileUsage = 0;
PeakVirtualSize = "0";
PeakWorkingSetSize = 24;
Priority = 0;
PrivatePageCount = "0";
ProcessId = 0;
QuotaNonPagedPoolUsage = 0;
QuotaPagedPoolUsage = 0;
QuotaPeakNonPagedPoolUsage = 0;
QuotaPeakPagedPoolUsage = 0;
ReadOperationCount = "0";
ReadTransferCount = "0";
SessionId = 0;
ThreadCount = 4;
UserModeTime = "0";
VirtualSize = "0";
WindowsVersion = "6.1.7601";
WorkingSetSize = "24576";
WriteOperationCount = "0";
WriteTransferCount = "0";
};

전체 코드

import wmi

WMI_OBJ = wmi.WMI()
process_list = WMI_OBJ.Win32_process()

for process in process_list:
    print(process.ProcessId, process.Name)
반응형
반응형

파이썬 주식 / yfinance를 이용하여 삼성전자 주식 정보 가져와 그래프로 표시하기

필요 라이브러리

먼저 주식 정보를 받아오기 위해 야후 파이낸스에서 제공하는 yfinace 라이브러리를 사용합니다. 

받아온 정보를 데이터프레임으로 만들기 위해 panda_datareader 라이브러리를 사용합니다. 

그리고 그래프를 그려주기 위해 matplotlib.pyplot 라이브러리를 사용합니다 

from pandas_datareader import data as pdr
import yfinance as yf
import matplotlib.pyplot as plt

 

주식 시세 구하기

주식 시세를 구하기 위해 get_data_yahoo() 함수를 이용합니다. 

이 함수에는 주식 종목(코드)와 조회 기간을 전달인자로 넘겨주게 됩니다. 국내 주식은 주식 종목 코드가 보통 6자리 숫자 코드로 표현됩니다. 

get_data_yahoo(주식 종목(코드), 조회 기간)

 

아래는 삼성전자 코드인 '005930.KS'와 시작 날짜인 '2020-07-01'를 전달 인자로 넣어 가져온 데이터 입니다.

가져온 데이터를 분석해보면, index에는 시작 날짜부터 오늘 날짜까지의 날짜 정보가 저장됩니다. 

Columns에는 6가지의 데이터를 가져오게 됩니다. 

여기서 Close 열은 종가 데이터를 의미합니다. 

이 데이터를 가지고 그래프에 그려보겠습니다. 

 

간단하게, x 축은 index (날짜 정보)로 설정하고, y 축은 Close(종가 정보)로 설정하여, 그래프를 출력하도록 하였습니다.

plt.plot(samsung.index, samsung.Close, 'b', label='Samsung Electronics')
plt.show()

 

전체 코드

from pandas_datareader import data as pdr
import yfinance as yf
import matplotlib.pyplot as plt

yf.pdr_override()

samsung = pdr.get_data_yahoo('005930.KS', start='2020-07-01')
print(samsung)

print(samsung.index)
print(samsung.columns)

plt.plot(samsung.index, samsung.Close, 'b', label='Samsung Electronics')
plt.show()
반응형

+ Recent posts