반응형

파이썬 주식 / 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()
반응형
반응형

파이썬 기본 문법 - 출력 (end=, sep=)

 

기본 출력 print

기본 출력을 위해 print 함수를 이용합니다. 

default로 print로 문구를 출력하고, \n 한줄 개행하도록 되어 있습니다. 

print 함수에 전달인자로 end=' ' 또는 sep = ' '를 넣어면, 출력하려면 형식을 변형할 수 있습니다.

print("hello")
print("world")

#출력
#hello
#world

 

end = '[구분자]' 를 이용한 출력

end = ' [구분자]'는 print 함수로 문구를 출력하고, 마지막에 \n이 아닌 다른 값으로 설정할 수 있습니다. 

 

print("hello", end=' ')
print("world")

#출력 
#hello world

sep = '[구분자]'를 이용한 출력

sep 전달인자를 사용하면, print 함수 내에 여러 문구열을 표시할 때, 그 사이에 출력할 구분자를 표시할 수 있습니다.

print("010","1234","5678", sep='-')

#출력
#010-1234-5678
반응형
반응형

파이썬 기본 문법 - 입력 input(), map()

 

하나의 입력 input

파이썬에서는 입력을 받기 위해 input() 함수를 사용합니다.

입력값은 string 형태로 값이 저장되며, 하나의 변수에 값이 저장됩니다.

a = input()
print('Input : ' + a)
print(type(a))

#입력
#hello world

#출력
#Input : hello world
#<class 'str'>

 

두개 이상의 입력 input.split()

두개 이상의 입력을 받기 위해 input.split() 함수를 사용합니다. 

모두 string 형태로 저장됩니다. 

int 형이나 다른 형으로 저장되도록 하려면 map 함수를 이용합니다.

a, b, c= input().split()
print('Input : ' + a)
print('Input : ' + b)
print('Input : ' + c)
print(type(a))
print(type(b))
print(type(c))

#입력 
hello world python

#출력
Input : hello
Input : world
Input : python
<class 'str'>
<class 'str'>
<class 'str'>

 

입력을 받을 때, 문구를 표시하고 싶다면, input함수 안에 string 형태로 기입하면 됩니다. 

또한, split 함수에 값이 없으면 ' ' 빈 공간(space 문자)으로 구분되는데, 

다른 특별한 기호로 값을 구분하려면, split 함수에 그 특별한 기호(구분자)를 기입하면 됩니다.

a, b, c= input("input >> ").split(',')
print('Input : ' + a)
print('Input : ' + b)
print('Input : ' + c)
print(type(a))
print(type(b))
print(type(c))

#입력
input >> 10,20,30

#출력
Input : 10
Input : 20
Input : 30
<class 'str'>
<class 'str'>
<class 'str'>

두개 이상의 입력 map()

input.split() 함수를 이용하면 두개 이상의 입력에 대해서 string 형태로 값이 저장됩니다. 

int 형으로 저장되기 위해 map 함수를 사용합니다.  

a, b, c= map(int, input().split())
print('Input : ' + str(a))
print('Input : ' + str(b))
print('Input : ' + str(c))
sum = a + b  + c

print("sum : " + str(sum))
print(type(a))
print(type(b))
print(type(c))

#입력
10 20 30

#출력
Input : 10
Input : 20
Input : 30
sum : 60
<class 'int'>
<class 'int'>
<class 'int'>

 

반응형
반응형

파이썬 정렬하기 - sort(), sorted(), reverse()

 

sort()

기본값은 오름차순 정렬이고, reverse옵션 True는 내림차순으로 정렬하게 됩니다. 

a= [3, 1, 9, 7, 5]
a.sort()
print(a)

[1, 3, 5, 7, 9]
a= [3, 1, 9, 7, 5]
a.sort(reverse=True)
print(a)

[9, 7, 5, 3, 1]

sort는 key 값을 전달인자로 주어 정렬을 할 수도 있습니다. 

아래는 string 객체를 단어로 구분하여 리스트로 만들고, 단어의 수를 key로 설정하여 정렬을 해보았습니다.

a= "hello. my name is zidarn"
a = a.split()
a.sort(key=len)
print(a)

['my', 'is', 'name', 'hello.', 'zidarn']

 

reverse()

reverse()는 내림차순으로 정렬하고, sort(reverse=True) 한 것과 동일합니다.

a= [3, 1, 9, 7, 5]
a.reverse()
print(a)

[9, 7, 5, 3, 1]

 

sorted()

핵심이 되는 것은 이 sorted() 함수입니다. 

이 함수를 사용하는 방법은 두가지가 있습니다. 

 

1) 전달인자 1개로 리스트를 넣는 방법이 있습니다. 

sorted 함수는 리스트를 반환하게 되고, 오름차순으로 정렬하게 됩니다.

a= [3, 1, 9, 7, 5]
b = sorted(a)
print(b)

[1, 3, 5, 7, 9]

 

2) 전달인자 2개로 하나는 리스트를 넣고, 하나는 key 값을 넣게 됩니다.  

( sorted(strings, key=lambda element:element[n])  : lambda는 익명 함수 )

 

string 객체를 단어로 구분하여 리스트로 만들고, 단어의 수를 key로 설정하여 정렬을 해보았습니다.

a= "hello. my name is zidarn"
a = a.split()
b = sorted(a, key=len)
print(b)

튜플로 되어 있는 내용도 정렬이 가능합니다. 

key 값은 여러 개를 설정할 수 있습니다. 첫번째 element로 정렬하였을 때, 동일하다면, 그 다음 설정된 element로 정렬할 수 있습니다. 

아래 예시를 보시면 쉽게 파악할 수 있을 것입니다. 

student_tuples = [
    (2016, 'brown', 'A', 15),
    (2015, 'Kevin', 'B', 12),
	(2014, 'Cain',  'B', 10),
    (2015, 'Crown', 'B', 5)
]

t = sorted(student_tuples, key=lambda student: (student[0], student[1]))
print(t)

[(2014, 'Cain', 'B', 10), (2015, 'Crown', 'B', 5), (2015, 'Kevin', 'B', 12), (2016, 'brown', 'A', 15)]

key 값에 마이너스 '-'를 붙이면 내림차순으로 정렬하게 됩니다. 

student_tuples = [
    (2016, 'brown', 'A', 15),
    (2015, 'Kevin', 'B', 12),
	(2014, 'Cain',  'B', 10),
    (2015, 'Crown', 'B', 5)
]

t = sorted(student_tuples, key=lambda student: (-student[0], student[1]))
print(t)

[(2016, 'brown', 'A', 15), (2015, 'Crown', 'B', 5), (2015, 'Kevin', 'B', 12), (2014, 'Cain', 'B', 10)]
반응형

+ Recent posts