03. ํ์ด์ฌ์ ์ด์ฉํ ๋ ์ง์ ์๊ฐ ๋ค๋ฃจ๊ธฐ
03. ํ์ด์ฌ์ ์ด์ฉํ ๋ ์ง์ ์๊ฐ ๋ค๋ฃจ๊ธฐ ๊ด๋ จ
์ด๋ฒ ์ฑํฐ์์๋ ๊ฐ์ฅ ์ค์ํ ์๊ฐ(time
) ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ๊ฒ์
๋๋ค. ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋๋ก๋ ์๊ณ์ด ๋ฐ์ดํฐ๋ผ๊ณ ๋ ๋ถ๋ฆ
๋๋ค. ์๊ณ์ด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฅ ์์ฃผ ์ ํ๋ ๊ณณ์ ๋จ์ฐ ๊ธ์ต๊ถ์
๋๋ค.
๋ฐ๋ผ์ ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฅ์ํ๊ฒ ๋ค๋ฃฐ ์ ์๋๋ก ํ์ด์ฌ ํจํค์ง์ธ ๋ฐ์ดํธํ์(datetime
), ๋ํ์ด(numpy
), ํ๋ค์ค(pandas
)์์ ์๊ฐ์ ์ด๋ป๊ฒ ๋ค๋ฃจ๋์ง ์ดํด๋ด
๋๋ค.
์ฌ๊ธฐ์ ์ธ๊ธํ๊ณ ์๋ 3๊ฐ์ ํจํค์ง๋ ๋ฐ์ดํฐ ๋ถ์์์ ๊ต์ฅํ ์ค์ํ ํจํค์ง์ด๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ๋ถ๋ค์ด ํจํค์ง ์ด๋ฆ, ํจํค์ง๊ฐ ํ๋ ์ญํ ์ ๋ํด์๋งํผ์ ๊ผญ ์๊ธฐ๋ฅผ ํด์ฃผ์๋ฉด ์ข๊ฒ ์ต๋๋ค.
ํจํค์ง์ ์ธ๋ถ์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ธฐ์ต ์๋๋ ๊ด์ฐฎ์์. ํ์ํ ๋๋ง๋ค ์ฐพ์๋ณด๋ฉด ๋๋๊น์. ๊ทธ๋ฐ๋ฐ, ์ด๋ฐ ๊ธฐ๋ฅ์ ์ํํ๋ ํจํค์ง๊ฐ ๋ฌด์์ด์๋์ง๋ ๊ธฐ์ต์ ํด์ผ ๋ค์์ ์ฐพ์๋ณด๊ธฐ ๋๋ฌธ์ ํจํค์ง ์ด๋ฆ์ ์๊ธฐํ๋ผ๋ ๊ฒ์ ๋๋ค.
01. datetime
๋ ์ง์ ์๊ฐ ๊ด๋ จ ํจ์๋ ์๊ณ์ด ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ค์ํ ์ํฉ์์ ์ฌ์ฉ๋ฉ๋๋ค. ์คํธ๋ง(String) ํ์
์ ๋ฌธ์๋ฅผ ๋ ์ง ํํ ํฌ๋งท(format
)์ผ๋ก ๋ฐ๊พธ๊ฑฐ๋ ์๊ฐ ๋จ์ ๋ณ๊ฒฝ, ์๊ฐํ ๋ฑ์ ์์ฉํ ์ ์์ต๋๋ค. ํ์ด์ฌ ํ์ค ํจํค์ง์ธ datetime
์ ๋ํด์ ์์๋ด
์๋ค.
datetime
์๋ time
, date
, datetime
, timedelta
์ธ์๋ ์ฌ๋ฌ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
time
์๊ฐ ๊ธฐ๋ฅ๋ง ์ ๊ณตํฉ๋๋ค, ์, ๋ถ, ์ด, ๋ง์ดํฌ๋ก์ด
datetime.time(hour=4, minute=3, second=10, microsecond=1000)
date
๋ ์ง ๊ธฐ๋ฅ๋ง ์ ๊ณตํฉ๋๋ค. ์ฐ, ์, ์ผ
datetime.date(year=2019, month=1, day=10)
datetime
๋ ์ง์ ์๊ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. - date + time
datetime.datetime(year=2019, month=10, day=24, hour=4, minute=3, second=10, microsecond=1000)
timedelta
datetime
์ธ์คํด์ค ๊ฐ์ ์ฐจ์ด๋ฅผ ๊ตฌํจ
datetime.datetime(year=2019, month=10, day=24, hour=4, minute=3, second=10, microsecond=1000)
์ค์ ๋ถ์์์ ๋ ์ง์ ์๊ฐ์ ๋ฌธ์์ด ํ์
์ผ๋ก ์ฃผ์ด์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ฐ๋ผ์ ์์ ๋กญ๊ฒ ๋ฐ์ดํฐ ํ์
์ ๋ณํํ๋ ๋ฐฉ๋ฒ์ ์ตํ์ผ ํฉ๋๋ค. ๋ค์ ์ค๋ช
์ ๋ณด๋ฉด์ ๋ ์ง ๋ณํ(conversion
)์ ๋ํด์ ์์๋ด
์๋ค. ๋จผ์ str
ํ์
์ ๋ฌธ์๋ฅผ datetime
ํ์์ผ๋ก ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ด
์๋ค.
import datetime
datetime_str = '2018-05-13 12:34:56'
strptime()
ํจ์์ datetime_str ๋ณ์์ ํ์์ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์
๋ ฅํ str
ํ์
์ ๋ ์ง์ ๋ ์ง๋ฅผ ํํํ๋ ํ์์ strtime()
ํจ์์ ์ ๋ฌํ ๊ฒ์
๋๋ค. ํจ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋, str
ํ์
์ ๋ฌธ์๊ฐ datetime
ํ์
์ผ๋ก ๋ณํํ ๊ฒ์ ์ ์ ์์ต๋๋ค.
format = '%Y-%m-%d %H:%M:%S'
datetime_dt = datetime.datetime.strptime(datetime_str, format)
print(datetime_dt)
print(type(datetime_dt))
์ด๋ฒ์๋ ๋ฐ๋๋ก datetime
์ str
ํ์
์ ๋ฌธ์๋ก ๋ณํํ ์ ์๋์ง ํ์ธํด๋ด
์๋ค. datetime_dt
๋ ์ฐ๋ฆฌ๊ฐ ์์ ํ์ธํ๋ฏ์ด ํ์ฌ datetime
ํ์
์
๋๋ค.
datetime_str = datetime_dt.strftime('%Y-%m-%d %H:%M:%S')
print(type(datetime_str)) # <class 'str'>
print(datetime_str) # 2018-08-24 18:00:25
#
#
# <class 'str'>
# 2018-05-13 12:34:56
์์์ strptime()
ํจ์๋ฅผ ํธ์ถํ ๋ ๋ณํ๋ datetime_dt
์์ strftime()
ํจ์๋ฅผ ํธ์ถํ ๊ฒ์ ์ ์ ์์ต๋๋ค. ํจ์ ๋งค๊ฐ๋ณ์์๋ ๋ณํํ๋ ค๋ ๋ ์ง, ์๊ฐ ํ์์ ์ ๋ฌํ๋ค. ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋, str
ํ์
์ผ๋ก ๋ณํ๋ ๊ฒ๊ณผ ์ฐ๋ฆฌ๊ฐ ์ ๋ฌํ ํ์์ ๋ง๊ฒ ๊ฐ์ด ๋์จ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ๋ ๋ค๋ฅธ ํ์์ผ๋ก ๋ณ๊ฒฝํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ ํด์ ์ ๋ฌํ๋ฉด ๋ฉ๋๋ค. ์ด๋ฒ์๋ ๋ถ, ์ด๋ฅผ ์ ์ธํ๊ณ ์๊ฐ๊น์ง๋ง ์ถ๋ ฅ์ ํด๋ด
์๋ค.
datetime_str = datetime_dt.strftime('%Y-%m-%d %H')
print(type(datetime_str)) # <class 'str'>
print(datetime_str) # 2018-08-24 18:00:25
#
#
# <class 'str'>
# 2018-05-13 12
์๊ฐ๊น์ง๋ง ์ถ๋ ฅ์ด ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ฒ์๋ ๋ ๋์ ๋ฌ๊น์ง๋ง ์ถ๋ ฅ์ ํด๋ณด๊ฒ ์ต๋๋ค.
datetime_str = datetime_dt.strftime('%Y-%m')
print(type(datetime_str)) # <class 'str'>
print(datetime_str) # 2018-08-24 18:00:25
#
#
# <class 'str'>
# 2018-05
์ ๋ฆฌํ๋ฉด '%Y-%m-%d %H'
ํ์์ ์ ๋ฌํ๋ฉด ์ฐ-์-์ผ-์ ํ์์ผ๋ก ์ถ๋ ฅ๋๊ณ , '%Y-%m'
์ ์ ๋ฌํ๋ฉด ์ฐ-์๋ง ์ถ๋ ฅ๋ฉ๋๋ค.
strptime()
ํจ์์ strftime()
ํจ์๋ ์๋ก ๋ฐ๋๋๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. String์ datetime
์ผ๋ก ๋ณํํ ๋๋ strptime()
ํจ์๋ฅผ ์ฌ์ฉํ๊ณ , ๊ทธ ๋ฐ๋์ ๊ฒฝ์ฐ์๋ strftime()
ํจ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
strptime()
:str
ํ์ ์ผ๋ก ๋ ๋ ์ง ๋ฐ์ดํฐ๋ฅผdatetime
ํํ๋ก ๋ณํstrftime()
:datetime
ํํ์ ๋ฐ์ดํฐ๋ฅผstr
ํ์ ์ผ๋ก ๋ณํ ์ฃผ์ํด์ผ ํ ์ ์ ์ฐ๋ฆฌ๊ฐ ํ์์ ์ ์ํ ๋ ์ง์ ํ ํ์์ด ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ฏ๋ก ํ์์ ๋ง์ถ๊ฑฐ๋ ์ ํํ ๋ ์ง๋ฅผ ํํํด์ผ ํฉ๋๋ค.
์๋ ๋งํฌ๋ก ์ด๋ํ์ ๋ค์์ ์๋ ๋งํฌ์์ ์ ๊ณต๋๋ ์๋ฃ์ ํ 47-4๋ฅผ ์ฐธ๊ณ ํ์ธ์. ์๊ธฐํ์ค ํ์๋ ์๊ณ ํ์ํ ๋ ์ฐพ์๋ณด์๋ฉด ๋ฉ๋๋ค.
๐์ฐธ๊ณ ์๋ฃ: https://dojang.io/mod/page/view.php?id=2463
02. ๋ ์ง์ ์๊ฐ์ ๋ค๋ฃจ๋ ๋ํ์ด(Numpy
)
๊ฐ์ฒด๋ผ๋ ํํ์ด ์ข ์ข ๋์ฌ ์ ์์ต๋๋ค. ๊ฐ์ฒด๋ผ๋ ํํ์ ์ต์ํ์ง ์์ผ์๋ค๋ฉด ์๋ ์ฐธ๊ณ ์๋ฃ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๐์ฐธ๊ณ ์๋ฃ: ํด๋์ค์ ๊ฐ์ฒด
๋ํ์ด์์๋ ๋ ์ง์ ์๊ฐ์ datetime64
๊ฐ์ฒด๋ก ํํํฉ๋๋ค. ๋ํ์ด์ datetime64
์ ํ์ด์ฌ์ datetime.datetime
๊ณผ ์ฐจ์ด์ ์ datetime
์์๋ ์๊ฐ์ ๋ง์ดํฌ๋ก์ด(10^-6) ๋จ์๊น์ง ๊ด๋ฆฌํ๋ค๋ฉด, ๋ํ์ด์ datetime64
๋ ์ํ ์ด(10^-18) ๋จ์๊น์ง ๊ด๋ฆฌํ๋ค๋ ๊ฒ์
๋๋ค.
๋ํ์ด์ ๋ ์ง์ ์๊ฐ์ ์ดํดํด์ผ ํ๋ ๊ฐ์ฅ ์ค์ฉํ ์ด์ ๋ ์ฐ๋ฆฌ๊ฐ ๊ถ๊ทน์ ์ผ๋ก ์ฌ์ฉํ ํ๋ค์ค์ ๋ ์ง์ ์๊ฐ ํจ์๊ฐ ๋ํ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ก๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ผ ๋ํ์ด์ ๋ ์ง์ ์๊ฐ ์ฌ์ฉ ์์ ๋ฅผ ์ดํด๋ด ์๋ค.
datetime64
Numpy ๊ฐ์ฒด๋ฅผ ์ด์ฉํด ๋ ์ง๋ฅผ ์์ฑํ๋ ๋ฐฉ์์๋ ๋ ๊ฐ์ง ๋ฐฉ์์ด ์์ต๋๋ค. ์ฒซ๋ฒ์งธ๋ ์๋์ ๊ฐ์ด ๋ฌธ์์ด ํ์์ผ๋ก ์ ๋ฌํด์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
import numpy as np
np.datetime64('2019-01-01')
๋๋ฒ์งธ๋ ์๋์ ๊ฐ์ด ์ ๋์ค ์๊ฐ์ ์ด์ฉํ ๋ฐฉ์์ ๋๋ค. ์ฒซ๋ฒ์งธ ์ ๋ ฅ ๋งค๊ฐ๋ณ์๋ ์์น ๋ฐ์ดํฐ, ๊ทธ๋ฆฌ๊ณ ๋๋ฒ์งธ ์ ๋ ฅ ๋งค๊ฐ๋ณ์๋ ๋จ์๋ฅผ ์๋ฏธํฉ๋๋ค. 'ns'๋ ๋๋ ธ์ด ๋จ์, 'D'๋ ์ผ ๋จ์, 's'๋ ์ด ๋จ์๋ฅผ ์๋ฏธํฉ๋๋ค. ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ ๋จ์์ ๋ฐ๋ผ์ ๊ฐ๊ธฐ ๋ค๋ฅธ ์ข ๋ฅ์ ๋ ์ง๊ฐ ๋ง๋ค์ด์ง๋๋ค.
import numpy as np
# ๋๋
ธ์ด ๋จ์
np.datetime64(1000,'ns')
numpy.datetime64('1970-01-01T00:00:00.000001000')
์ด๋ฒ์๋ ๋์ผํ๊ฒ ๋๋ ธ์ด ๋จ์๋ก ํ๋ ์์น๋ฅผ ๋ฐ๊ฟ๋ณด๊ฒ ์ต๋๋ค.
np.datetime64(10000000000,'ns')
numpy.datetime64('1970-01-01T00:00:10.000000000')
์ด ๋จ์๋ก ์ถ๋ ฅํด๋ด ์๋ค.
np.datetime64(1000000000,'s')
numpy.datetime64('2001-09-09T01:46:40')
์ผ ๋จ์๋ก ์ถ๋ ฅํด๋ด ์๋ค.
np.datetime64(10000,'D')
numpy.datetime64('1997-05-19')
array()
Numpy์ array()
ํจ์๋ฅผ ์ฌ์ฉํด์๋ ๋ ์ง๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. np.array()
ํจ์์ str
ํ์
์ ๋ ์ง ๋ฆฌ์คํธ๋ฅผ ์ ๋ฌํ๊ณ , dtype
(๋ฐ์ดํฐ ํ์
)์ 'datetime64
'๋ก ์ค์ ํ์ต๋๋ค.
np.array(['2007-07-13', '2006-01-13', '2010-08-13'], dtype='datetime64')
array(['2007-07-13', '2006-01-13', '2010-08-13'], dtype='datetime64[D]')
์ด๋ dtype
์์ datetime64
๋ฅผ ์ ์ด์ฃผ์ค ๋, [ ]
์์ ์ด๋ค ๊ฐ์ ๋ฃ๋๋์ ๋ฐ๋ผ์ ๋ ์ง ๋จ์๋ฅผ ์ง์ ํ ์๋ ์์ต๋๋ค.
# ๋ฌ๋จ์
np.array(['2007-07-13', '2006-01-13', '2010-08-13'], dtype='datetime64[M]')
array(['2007-07', '2006-01', '2010-08'], dtype='datetime64[M]')
arange()
arange()
ํจ์๋ฅผ ์ฌ์ฉํด์ ๋ฒ์๋ฅผ ์ค ์๋ ์์ต๋๋ค.
# ๋ฌ๋จ์
np.arange('2005-02', '2006-03', dtype='datetime64[M]')
array(['2005-02', '2005-03', '2005-04', '2005-05', '2005-06', '2005-07',
'2005-08', '2005-09', '2005-10', '2005-11', '2005-12', '2006-01',
'2006-02'], dtype='datetime64[M]')
# ์ฃผ๋จ์
np.arange('2005-02', '2006-03', dtype='datetime64[W]')
array(['2005-01-27', '2005-02-03', '2005-02-10', '2005-02-17',
'2005-02-24', '2005-03-03', '2005-03-10', '2005-03-17',
'2005-03-24', '2005-03-31', '2005-04-07', '2005-04-14',
'2005-04-21', '2005-04-28', '2005-05-05', '2005-05-12',
'2005-05-19', '2005-05-26', '2005-06-02', '2005-06-09',
'2005-06-16', '2005-06-23', '2005-06-30', '2005-07-07',
'2005-07-14', '2005-07-21', '2005-07-28', '2005-08-04',
'2005-08-11', '2005-08-18', '2005-08-25', '2005-09-01',
'2005-09-08', '2005-09-15', '2005-09-22', '2005-09-29',
'2005-10-06', '2005-10-13', '2005-10-20', '2005-10-27',
'2005-11-03', '2005-11-10', '2005-11-17', '2005-11-24',
'2005-12-01', '2005-12-08', '2005-12-15', '2005-12-22',
'2005-12-29', '2006-01-05', '2006-01-12', '2006-01-19',
'2006-01-26', '2006-02-02', '2006-02-09', '2006-02-16'],
dtype='datetime64[W]')
# ์ผ๋จ์
np.arange('2005-02', '2005-03', dtype='datetime64[D]')
array(['2005-02-01', '2005-02-02', '2005-02-03', '2005-02-04',
'2005-02-05', '2005-02-06', '2005-02-07', '2005-02-08',
'2005-02-09', '2005-02-10', '2005-02-11', '2005-02-12',
'2005-02-13', '2005-02-14', '2005-02-15', '2005-02-16',
'2005-02-17', '2005-02-18', '2005-02-19', '2005-02-20',
'2005-02-21', '2005-02-22', '2005-02-23', '2005-02-24',
'2005-02-25', '2005-02-26', '2005-02-27', '2005-02-28'],
dtype='datetime64[D]')
# ์๊ฐ๋จ์
np.arange('2005-02-01', '2005-02-02', dtype='datetime64[h]')
array(['2005-02-01T00', '2005-02-01T01', '2005-02-01T02', '2005-02-01T03',
'2005-02-01T04', '2005-02-01T05', '2005-02-01T06', '2005-02-01T07',
'2005-02-01T08', '2005-02-01T09', '2005-02-01T10', '2005-02-01T11',
'2005-02-01T12', '2005-02-01T13', '2005-02-01T14', '2005-02-01T15',
'2005-02-01T16', '2005-02-01T17', '2005-02-01T18', '2005-02-01T19',
'2005-02-01T20', '2005-02-01T21', '2005-02-01T22', '2005-02-01T23'],
dtype='datetime64[h]')
datetime64
์ ์ด์ฉํ ๋ ์ง ์ฐจ์ด ๊ตฌํ๊ธฐ
๊ฐ๊ฐ ๋ ์ง๋ฅผ ์์ฑํ ๋ ์ด๋ค ๋จ์๋ฅผ ์ ๋ฌํ๋์ง์ ๋ฐ๋ผ์ ์์ฑ๋๋ ๋ฒ์๊ฐ ๋ฌ๋ผ์ง๋๋ค. ๋ ๋ ์ง์ ๊ฐ๊ฒฉ์ ๊ตฌํ ๋๋ ๋จ์ํ๊ฒ ๋นผ์ฃผ๋ฉด ๋ฉ๋๋ค. ์ง๊ด์ ์ธ ๋ ์ง ๊ฐ๊ฒฉ์ ๊ตฌํ๊ธฐ ์ฝ์ต๋๋ค. ๋ ์ง ๊ฐ๊ฒฉ์ ๊ตฌํด๋ด ์๋ค. 2009๋ 1์ 1์ผ๊ณผ 2008๋ 1์์ ๋ฃ์ด๋ดค์ต๋๋ค.
np.datetime64('2009-01-01') - np.datetime64('2008-01')
numpy.timedelta64(366,'D')
366์ด๋ผ๋ ์ซ์๊ฐ ๋์ต๋๋ค. 2009๋ 1์ 1์ผ์ ๋จ์๊ฐ ์ผ(day)์ด๊ณ , 2008๋ 1์์ ๋จ์๊ฐ ์(month)์ธ๋ฐ ์ด๋ค ๊ธฐ์ค์ผ๋ก 366์ด ๋์จ ๊ฒ์ผ๊น์? ์ด๋ฒ์๋ 2009๋ 1์ 1์ผ๊ณผ 2008๋ 1์ 1์ผ์ ๋ฃ์ด๋ด ์๋ค.
np.datetime64('2009-01-01') - np.datetime64('2008-01-01')
numpy.timedelta64(366,'D')
๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋์ต๋๋ค. ๋ค์ ๋งํด ์์์ 2008๋ 1์์ ํ์ ๋ ์๋์ผ๋ก 2008๋ 1์ 1์ผ๋ก ์ธ์ํ์ฌ 366์ผ์ ์ฐจ์ด๊ฐ ๋์จ ๊ฒ์ด๋ผ๊ณ ์ถ์ ํด๋ณผ ์ ์์ต๋๋ค. ์ด๋ฒ์๋ 2009๋ ๊ณผ 2008๋ 1์์ ์ฐจ์ด๋ฅผ ๊ตฌํด๋ด ์๋ค. 2009๋ ์ ์ฐ(year)์ด๊ณ , 2008๋ 1์์ ์(month) ๋จ์์ธ๋ฐ ์ด๋ค ๊ฒฐ๊ณผ๊ฐ ๋์ฌ๊น์?
np.datetime64('2009') - np.datetime64('2008-01')
numpy.timedelta64(12,'M')
12๋ผ๋ ์ซ์๊ฐ ๋์ต๋๋ค. ์ถ์ธก์ปจ๋, 2009๋ 1์๊ณผ 2008๋ 1์์ ์ฐจ์ด๊ฐ 12๊ฐ์์ด๋ผ๋ ์๋ฏธ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํด๋ณด๋, ๋ ์ง ๊ฐ๊ฒฉ์ ๊ตฌํ ๋ ๋ ๋ ์ง ์ค ์์ ๋จ์ ๋ ์ง๋ก ๋ง์ถ๋ค๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์ฌ์ค ์์ ์ถ๋ ฅ ๊ฒฐ๊ณผ์์ 'D'์ 'M'์ ์ฐ์ฐ์ด ์ํ๋ ๋จ์๋ฅผ ์๋ฏธํฉ๋๋ค. ๊ฐ๊ฐ์ด ์๋ฏธํ๋ ๋จ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Y
: ์ฐM
: ์W
: ์ฃผD
: ์ผh
: ์๊ฐm
: ๋ถs
: ์ดms
: ๋ฐ๋ฆฌ์ดus
: ๋ง์ดํฌ๋ก์ดns
: ๋๋ ธ์ดps
: ํผ์ฝ์ดfs
: ํจํ ์ด
์์์ ์ดํด๋ณธ ๋จ์ ์ฝ๋๋ ๋ ์ง ํ์์ ๋ค๋ฃฐ ๋ ์ ์ฉ๋๋ ๋จ์์ ๋๋ค. ์ ์ ๋ฆฌ๋ฅผ ํตํด์ ๋ ๋ ์ง ๊ฐ ๊ฐ๊ฒฉ์ด ์ผ ๋จ์ ๊ฐ๊ฒฉ์ธ์ง, ์ ๋จ์ ๊ฐ๊ฒฉ์ธ์ง ๋ฑ์ ํ์ธํ ์ ์์ต๋๋ค. ์(M)๊ณผ ๋ถ(m)์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ฏ๋ก ์ฃผ์ํด ์ฌ์ฉํฉ์๋ค. ์ด์ธ์ ๋ํ์ด์์ ์ ๊ณตํ๋ ์ธ๋ถ์ ์ธ ๊ธฐ๋ฅ๋ ๋ง์ง๋ง, ์ฌ๊ธฐ์๋ ์ด ์ ๋๋ง ์์๋ณด๊ณ ํ๋ค์ค๋ก ๋์ด๊ฐ๋๋ก ํ๊ฒ ์ต๋๋ค.
03. ๋ ์ง์ ์๊ฐ์ ๋ค๋ฃจ๋ ํ๋ค์ค(Pandas)
ํ๋ค์ค๋ ํ
์ด๋ธ ๋ฐ์ดํฐ ๋ฐ ์๊ณ์ด ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์กฐ์ํ๋ ํ์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค. ํ๋ค์ค๋ ๋ด๋ถ์ ์ผ๋ก ๋ํ์ด๋ฅผ ํฌํจํ๊ณ ์์ด ๋ ์ง์ ์๊ฐ ๊ด๋ จ ๊ธฐ๋ฅ๋ datetime64
๋ฅผ ๋ฐํ์ผ๋ก ์ด๋ฃจ์ด์ง๊ณ ์์ต๋๋ค. ํ๋ค์ค๋ง ์ ํ์ฉํด๋ ์งง์ ์ฝ๋๋ก ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ๊ตฌ์ฌํ ์ ์์ต๋๋ค.
๋ํ์ ์ธ ๊ธฐ๋ฅ์ผ๋ก ๋ ์ง ๋ฒ์ ์์ฑ, ๋ ์ง ๋ณํ, ๋ ์ง ์ด๋ ๋ฑ์ด ์์ต๋๋ค. ๋ํ DataFrame
๊ฐ์ฒด์ ์ธ๋ฑ์ฑ ๊ธฐ๋ฅ์ ๋ฐ์ดํฐ ํํฐ๋ง, ์ธ๋ฑ์ฑ, ํผ๋ฒํ
, ์ ๋ ฌ, ์ฌ๋ผ์ด์ฑ ๋ฑ ๋ค์ํ๊ฒ ํ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ฌ๊ธฐ์๋ ํ๋ค์ค์ ๋ ์ง์ ์๊ฐ ๊ด๋ จ ๊ธฐ๋ฅ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Timestamp
์ DatetimeIndex
pd.Timestamp()
pd.to_datetime()
pd.date_range()
ํ๋ค์ค์์ ํ๋์ ๋ ์ง๋ง ์ฌ์ฉํ ๋๋ Timestamp
๋ก ํํํ๊ณ ๋ ๊ฐ ์ด์์ ๋ฐฐ์ด์ ์ด๋ฃฐ ๋๋ DatetimeIndex
๋ก ํํํฉ๋๋ค. ์ด๋ค ์๋ฏธ์ธ์ง ์ค์ต์ ํตํด ์ดํดํด๋ด
์๋ค.
import pandas as pd
ํ๋ค์ค์ Timestamp
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ๋ ์ง๋ฅผ ํํํ ์ ์์ต๋๋ค.
pd.Timestamp(1239.1238934) # ๋ํดํธ๋ก๋ ๋๋
ธ์ด๋ก ๋์ด์ ธ ์์ต๋๋ค.
#
# Timestamp('1970-01-01 00:00:00.000001239')
๋จ์๋ฅผ '์ผ'๋ก ๋ฐ๊ฟ์ ์คํํด๋ด ์๋ค.
pd.Timestamp(1239.1238934, unit='D') # Timestamp('1973-05-24 02:58:24.389760')
pd.Timestamp('2019-1-1') # Timestamp('2019-01-01 00:00:00')
Timestamp()
ํจ์๋ ํน์ ์์ ์ ๋ํ๋ด๋ ๋ ์ง์ ์๊ฐ์ ํํํฉ๋๋ค. ํ๋ค์ค์์๋ Timestamp
ํจ์์ ์์น ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ณ unit(๋จ์) ๊ฐ์ ๋งค๊ฐ๋ณ์๋ก ๋๊ธฐ๋ฉด ๋ํ์ด์์ ์ดํด๋ณธ ์ ๋์ค ์๊ฐ์ ์ด์ฉํ ๋ฐฉ์์์ ์ ์ ์์ต๋๋ค. UTC ์๊ฐ '1970๋
1์ 1์ผ 00:00:00'๋ถํฐ ํ์ฌ๊น์ง ๊ฒฝ๊ณผ ์๊ฐ์ ์ด ๋จ์๋ก ํ์ฐํด ๋ํ๋ธ ๋ฐฉ์์
๋๋ค.
to_datetime()
ํจ์๋ก๋ ํน์ ์์ ๋ ์ง์ ์๊ฐ์ ์์ฑํ ์ ์์ต๋๋ค. ํ ๊ฐ์ ๋ ์ง๋ง ์์ฑํ๋ ๊ฒฝ์ฐ, ํธ์ถํ๋ ํจ์๋ ๋ค๋ฅด์ง๋ง ๋ด๋ถ์ ์ผ๋ก ๋ํ์ด์์ datetime64๋ฅผ ํตํด ๋ ์ง๋ฅผ ๋ง๋๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ํ๋ค์ค ๋ด๋ถ์ ์ผ๋ก ๋ํ์ด๊ฐ ๋์ํ๋ค๋ ๋ด์ฉ์ ์ด๋ฐ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ก ํ์ธํ ์ ์์ต๋๋ค.
pd.to_datetime('2019-1-1 12')
Timestamp('2019-01-01 12:00:00')
ํ์ง๋ง to_datetime()์ ๋ ์ง๋ค์ ๋ฆฌ์คํธ๋ฅผ ๋ฃ์ ๊ฒฝ์ฐ ๋ฒ์. ์ฆ, DatetimeIndex๋ฅผ ํํํ๊ฒ ๋ฉ๋๋ค. DatetimeIndex๋ผ๋ ํด๋์ค๋ก ๋ฐฐ์ด์ด ์๊ธฐ๊ณ ๋ฐ์ดํฐ ํ์ ์ด datetime64[ns]๋ก ํํ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
pd.to_datetime(['2018-1-1', '2019-1-2'])
DatetimeIndex(['2018-01-01', '2019-01-02'], dtype='datetime64[ns]', freq=None)
๋ง์ง๋ง์ผ๋ก, date_range() ํจ์๋ ํน์ ๊ธฐ๊ฐ์ ๋ ์ง๋ฅผ ์๋ ์์ฑํฉ๋๋ค. '2019-01'๊ณผ '2019-02'๋ฅผ ์ ๋ฌํ๋ฉด ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ 2์ ๋ง๊น์ง ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ 2์ 1์ผ์ ๋ฐ์ดํฐ๋ง ์์ฑํฉ๋๋ค. ๊ฐ๋จํ๊ฒ ์๊ฐํ๋ฉด, ๋์งธ ์ธ์๋ก ์ ๋ฌํ ๊ฐ์ ์์ ๊ณ ๋ คํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ์ถํ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ฑฐ๋ ๊ฐ๊ณตํ ๋ ์ฃผ์๊ฐ ํ์ํ ๋๋ชฉ์ ๋๋ค.
pd.date_range('2019-01','2019-02')
DatetimeIndex(['2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04',
'2019-01-05', '2019-01-06', '2019-01-07', '2019-01-08',
'2019-01-09', '2019-01-10', '2019-01-11', '2019-01-12',
'2019-01-13', '2019-01-14', '2019-01-15', '2019-01-16',
'2019-01-17', '2019-01-18', '2019-01-19', '2019-01-20',
'2019-01-21', '2019-01-22', '2019-01-23', '2019-01-24',
'2019-01-25', '2019-01-26', '2019-01-27', '2019-01-28',
'2019-01-29', '2019-01-30', '2019-01-31', '2019-02-01'],
dtype='datetime64[ns]', freq='D')
Period
์ PeriodIndex
pd.Period()
pd.period_range()
์ด๋ฒ์๋Period
์PeriodIndex
์ ๋ํด์ ์ดํดํด๋ด ์๋ค. ์ด๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์Period
ํจ์์period_range
ํจ์๊ฐ ์์ต๋๋ค.
pd.Period('2019-01')
Period('2019-01', 'M')
์ด๋ฒ์ ๋ฐฐ์ฐ๋ Period
์ PeriodIndex
๋ ํน์ ์์ ์ด ์๋๋ผ ๊ธฐ๊ฐ์ ํฌ๊ดํ๋ ๊ฐ๋
์
๋๋ค. ๊ทธ๋์ freq ์ธ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. pd.Period()
๋ฅผ ์ฌ์ฉํด '2019-01'์ ๋ฃ์ ๋ ์ถ๋ ฅ๊ฐ์ด ๊ธฐ๋ณธ์ ์ผ๋ก๋ ์ ๋จ์(freq='M'
)์ผ๋ก ์ธ์๋ฉ๋๋ค. ํ์ง๋ง ๋งค๊ฐ๋ณ์ freq
๋ฅผ ์ผ๊ฐ. ์ฆ, daily
๋ฅผ ๋ปํ๋ 'D'
๋ก ์ค์ ํ๋ฉด ์ผ ๋จ์๋ก ์๋ ์์ฑ๋๊ณ '2019-01'๊ณผ๋ ๋ฌ๋ฆฌ '2019-05-01'์ฒ๋ผ 1์ผ์๊น์ง ๋ถ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
pd.Period('2019-05', freq='D')
Period('2019-05-01', 'D')
๊ทธ๋ฆฌ๊ณ str ํ์ ์ ๋ ๊ฐ ์ด์ ๋ ์ง ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ฉด PeriodIndex ํด๋์ค๋ก ๋ฌถ์ ๋๋ค.
pd.period_range('2019-01','2019-02',freq='D')
PeriodIndex(['2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04',
'2019-01-05', '2019-01-06', '2019-01-07', '2019-01-08',
'2019-01-09', '2019-01-10', '2019-01-11', '2019-01-12',
'2019-01-13', '2019-01-14', '2019-01-15', '2019-01-16',
'2019-01-17', '2019-01-18', '2019-01-19', '2019-01-20',
'2019-01-21', '2019-01-22', '2019-01-23', '2019-01-24',
'2019-01-25', '2019-01-26', '2019-01-27', '2019-01-28',
'2019-01-29', '2019-01-30', '2019-01-31', '2019-02-01'],
dtype='period[D]', freq='D')
Timestamp Vs. Period
pd.Period()
์ ์์ ๋ฐฐ์ด pd.Timestamp()
์ ์ด๋ค ์ฐจ์ด๊ฐ ์๋์ง ํ๋ฒ ๋น๊ต ์ฐ์ฐ์ ํตํด์ ์ดํดํด๋ณด๊ฒ ์ต๋๋ค.
p = pd.Period('2019-06-13')
test = pd.Timestamp('2019-06-13 22:11')
p.start_time < test < p.end_time
#
# True
Timestamp
๋ ํ ์์ ์ ๋ปํ๊ณ , Period
๋ 1์ผ์ ์์ ์์ ๋ถํฐ ์ข
๋ฃ ์์ ๊น์ง์ ๋ฒ์๋ฅผ ํฌ๊ดํฉ๋๋ค.
p.start_time
# Timestamp('2019-06-13 00:00:00')
p.end_time
# Timestamp('2019-06-13 23:59:59.999999999')
04. FinanceDataReader
FinanceDataReader๋ ํ๊ตญ ์ฃผ์ ๊ฐ๊ฒฉ, ๋ฏธ๊ตญ ์ฃผ์ ๊ฐ๊ฒฉ, ์ง์, ํ์จ, ์ํธ ํํ ๊ฐ๊ฒฉ, ์ข ๋ชฉ ๋ฆฌ์คํธ ๋ฑ์ ์ ๊ณตํ๋ API ํจํค์ง์ ๋๋ค. ์ฐ์ ํด๋น ํจํค์ง๋ฅผ ์ค์นํด์ค๋๋ค.
pip install -U finance-datareader
์ฌ์ฉ๋ฒ์ ์ดํดํด๋ด ์๋ค. ํจํค์ง๋ฅผ ์ํฌํธํฉ๋๋ค.
import FinanceDataReader as fdr
์ข ๋ชฉ ๋ฆฌ์คํธ ๊ฐ์ ธ์ค๊ธฐ
StockListing()
ํจ์์ 'KRX' ์ฌ๋ณผ์ ์ ๋ฌํ๋ฉด, ํ๊ตญ ๊ฑฐ๋์์ ์์ฅ๋ ์ ์ฒด ์ข
๋ชฉ ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
df_krx = fdr.StockListing('KRX')
df_krx์ ํ์ ์ ํ์ธํด๋ด ์๋ค.
type(df_krx)
pandas.core.frame.DataFrame
๋ฐ์ดํฐํ๋ ์์ด ์ถ๋ ฅ๋ฉ๋๋ค. df_krx๋ฅผ ์ถ๋ ฅํด๋ด ์๋ค.
df_krx
StockListing()
ํจ์์ ๋ฏธ๊ตญ 'S&P500
' ์ฌ๋ณผ์ ์ ๋ฌํ๋ฉด, S&P 500
์ง์์ ๋ฑ๋ก๋ ์ ์ฒด ์ข
๋ชฉ ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํ ์ ์์ต๋๋ค. ๋ค์ ์ฝ๋๋ ๋ฏธ๊ตญ S&P 500์ ๋ฑ๋ก๋ ๋ชจ๋ ์ข
๋ชฉ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ ธ์ต๋๋ค. head()
๋ ๋ฐ์ดํฐํ๋ ์์์ ์์ 5๊ฐ์ ์ํ๋ง์ ์ถ๋ ฅํฉ๋๋ค.
df_spx = fdr.StockListing('S&P500')
df_spx.head()
ํด๋น ๋ฐ์ดํฐํ๋ ์์ ๋ช ๊ฐ์ ์ํ์ด ์๋์ง ํ์ธํด๋ด ์๋ค.
print('s&p ์ข
๋ชฉ ๋ฐ์ดํฐํ๋ ์์ ํฌ๊ธฐ :', len(df_spx))
#
# s&p ์ข
๋ชฉ ๋ฐ์ดํฐํ๋ ์์ ํฌ๊ธฐ : 503
์ข ๋ชฉ ์ฝ๋๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ์์๋ณด์์ผ๋ ์ด์ ๊ฐ๊ฒฉ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ์ดํด๋ด ์๋ค.
๊ฐ๊ฒฉ ๊ฐ์ ธ์ค๊ธฐ
ํ๊ตญ ๊ฑฐ๋์์ ์์ฅ๋ ์ข
๋ชฉ์ ๋จ์ถ ์ฝ๋(์ฌ์ฏ ์๋ฆฌ)๋ฅผ ์ ๋ฌํ๋ฉด ๊ฐ๊ฒฉ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ํจ์ ํ๋๋ง ํธ์ถํ๋ฉด ๊ฐ๊ฒฉ ๋ฐ์ดํฐ๋ฅผ ์ ๋ง ์์ฝ๊ฒ ๊ฐ์ ธ์ต๋๋ค. ์๋ฅผ ๋ค์ด GS๊ธ๋ก๋ฒ์ 2018๋
๊ฐ๊ฒฉ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์๋ด
์๋ค. head(10)
์ ์์ 10๊ฐ์ ์ํ๋ง์ ์ถ๋ ฅํฉ๋๋ค.
# GS๊ธ๋ก๋ฒ, 2018๋
df = fdr.DataReader('001250', '2018')
df.head(10)
๋ฏธ๊ตญ ์ฃผ๊ฐ ๋ฐ์ดํฐ๋ ๋ถ๋ฌ์๋ด ์๋ค. ๋ฏธ๊ตญ ์ข ๋ชฉ์ ๊ฐ์ ธ์ฌ ๋๋ ํฐ์ปค(ticker) ๋ช ์ ์ฌ์ฉํฉ๋๋ค. ํฐ์ปค๋, ๋ฏธ๊ตญ์์ ์ฌ์ฉํ๋ ์ข ๋ชฉ ์ฝ๋์ด๋ฉฐ ๋ค ์๋ฆฌ๋ก ์ ์๋ฉ๋๋ค.
# ์ ํ(AAPL), 2017๋
df = fdr.DataReader('AAPL', '2017')
df.head(10)
๋ค๋ฅธ ์ข
๋ชฉ์ ๊ฐ๊ฒฉ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋๋ ๋ง์ฐฌ๊ฐ์ง๋ก DataReader
๋ฅผ ํธ์ถํ๋ฉด ๋ฉ๋๋ค. ์๋ ์ ๋ฆฌ๋ ์์ฑ์ ์ฐธ๊ณ ํ์ฌ ๋ค์ํ ๊ฐ์ ํธ์ถํ ์ ์์ต๋๋ค.
๊ฑฐ๋์๋ณ ์ ์ฒด ์ข ๋ชฉ ์ฝ๋ -
StockListing()
ํจ์- ํ๊ตญ ๊ฑฐ๋์ : KRX(KOSPI, KOSDAQ, KONEX)
- ๋ฏธ๊ตญ ๊ฑฐ๋์ : NASDAQ, NYSE, AMEX, S&P500
๊ฐ๊ฒฉ ๋ฐ์ดํฐ -
DataReader()
ํจ์- ๊ตญ๋ด ์ฃผ์ : 005930(์ผ์ฑ์ ์), 091990(์ ํธ๋ฆฌ์จํฌ์ค์ผ์ด) ๋ฑ
- ํด์ธ ์ฃผ์ : AAPL(์ ํ), AMZN(์๋ง์กด), GOOG(๊ตฌ๊ธ) ๋ฑ
- ๊ฐ์ข ์ง์ : KS11(์ฝ์คํผ ์ง์), KQ11(์ฝ์ค๋ฅ ์ง์), DJI(๋ค์ฐ ์ง์), IXIC(๋์ค๋ฅ ์ง์), US500(S&P5000)
- ํ์จ ๋ฐ์ดํฐ : USD/KRX(์๋ฌ๋ฌ ํ์จ), USD/EUR(๋ฌ๋ฌ๋น ์ ๋กํ ํ์จ), CNY/KRX(์์ํ ์ํ ํ์จ)
- ์ํธ ํํ ๊ฐ๊ฒฉ : BTC/USD(๋นํธ์ฝ์ธ ๋ฌ๋ฌ ๊ฐ๊ฒฉ, ๋นํธํ์ด๋ฅ์ค), BTC/KRW(๋นํธ์ฝ์ธ ์ํ ๊ฐ๊ฒฉ, ๋น์ธ)
์ด์ธ ์์ธํ ์ต์ ์ API ์ฌ์ฉ์ ๋ฉ๋ด์ผ์ ์ฐธ๊ณ ํด์ฃผ์ธ์.
๋ค์ํ ์์
์๋๋ ๋ค์ํ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๋ ์์ ์ ๋๋ค.
# ์ ํ(AAPL), 2018-01-01 ~ 2018-03-30
df = fdr.DataReader('AAPL', '2018-01-01', '2018-03-30')
df.head()
# KS11 (KOSPI ์ง์), 2015๋
~ํ์ฌ
df = fdr.DataReader('KS11', '2015')
df.head()
# ์๋ฌ๋ฌ ํ์จ, 1995๋
~ํ์ฌ
df = fdr.DataReader('USD/KRW', '1995')
df.head()
# ๋นํธ์ฝ์ธ ์ํ ๊ฐ๊ฒฉ (๋น์ธ), 2016๋
~ํ์ฌ
df = fdr.DataReader('BTC/KRW', '2016')
df.head()
05. Quiz
์ด 3๊ฐ์ ํด์ฆ๋ฅผ ์ถ์ ํฉ๋๋ค. ํด๋ต์ ์ด ํ์ด์ง์ ํ๋จ์ ์์นํ์ง๋ง, ํด๋ต์ ๋ณด์ง์๊ณ ์์์ ํ์ตํ ์๋ฃ๋ค์ ์ฐธ๊ณ ํ์ฌ ์ค์ค๋ก ํ์ด๋ณด์ธ์. ์ค์ค๋ก ํ์ด๋ณด์์ผ ์ฑ์ฅํฉ๋๋ค.
Quiz 1
์๋์ ๋ฌธ์์ด์ datetime ํ์ ์ผ๋ก ๋ณํํด๋ณด์ธ์. ๋จ, ์๋์ ๋ฌธ์์ด์ 2021๋ 8์ 7์ผ์ ์๋ฏธํฉ๋๋ค.
datetime_str = '07-08-2021'
import datetime
datetime_str = '07-08-2021'
format = '%d-%m-%Y'
datetime_dt = datetime.datetime.strptime(datetime_str, format)
print(datetime_dt)
#
# 2021-08-07 00:00:00
Quiz 2
FinanceDataReader
ํจํค์ง๋ฅผ ์ฌ์ฉํ์ฌ ๋ฏธ์ฝ๋ฐ์ด์ค๋ฉ๋ ์ข
๋ชฉ์ 2020๋
1์ 8์ผ๋ถํฐ 2021๋
7์ 1์ผ๊น์ง์ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ ๋ฐ ์ถ๋ ฅํด๋ณด์ธ์.
import FinanceDataReader as fdr
# ๋ฏธ์ฝ๋ฐ์ด์ค๋ฉ๋์ ์ข
๋ชฉ ๋ฒํธ๋ '214610'
df = fdr.DataReader('214610', '2020-01-08', '2021-07-01')
df
Quiz 3
ํ์ด์ฌ ํจํค์ง Numpy๋ฅผ ์ฌ์ฉํ์ฌ 2021๋ 3์ 1์ผ๋ถํฐ 2021๋ 7์ 1์ผ ์ฌ์ด์ ๋ชจ๋ ์ผ์๋ฅผ ์ถ๋ ฅํ์ธ์. ๋จ, 7์ 1์ผ๋ ํฌํจํด์ผ ํฉ๋๋ค.
# ์ผ๋จ์
import numpy as np
np.arange('2021-03', '2021-07-02', dtype='datetime64[D]')
array(['2021-03-01', '2021-03-02', '2021-03-03', '2021-03-04',
'2021-03-05', '2021-03-06', '2021-03-07', '2021-03-08',
'2021-03-09', '2021-03-10', '2021-03-11', '2021-03-12',
'2021-03-13', '2021-03-14', '2021-03-15', '2021-03-16',
'2021-03-17', '2021-03-18', '2021-03-19', '2021-03-20',
'2021-03-21', '2021-03-22', '2021-03-23', '2021-03-24',
'2021-03-25', '2021-03-26', '2021-03-27', '2021-03-28',
'2021-03-29', '2021-03-30', '2021-03-31', '2021-04-01',
'2021-04-02', '2021-04-03', '2021-04-04', '2021-04-05',
'2021-04-06', '2021-04-07', '2021-04-08', '2021-04-09',
'2021-04-10', '2021-04-11', '2021-04-12', '2021-04-13',
'2021-04-14', '2021-04-15', '2021-04-16', '2021-04-17',
'2021-04-18', '2021-04-19', '2021-04-20', '2021-04-21',
'2021-04-22', '2021-04-23', '2021-04-24', '2021-04-25',
'2021-04-26', '2021-04-27', '2021-04-28', '2021-04-29',
'2021-04-30', '2021-05-01', '2021-05-02', '2021-05-03',
'2021-05-04', '2021-05-05', '2021-05-06', '2021-05-07',
'2021-05-08', '2021-05-09', '2021-05-10', '2021-05-11',
'2021-05-12', '2021-05-13', '2021-05-14', '2021-05-15',
'2021-05-16', '2021-05-17', '2021-05-18', '2021-05-19',
'2021-05-20', '2021-05-21', '2021-05-22', '2021-05-23',
'2021-05-24', '2021-05-25', '2021-05-26', '2021-05-27',
'2021-05-28', '2021-05-29', '2021-05-30', '2021-05-31',
'2021-06-01', '2021-06-02', '2021-06-03', '2021-06-04',
'2021-06-05', '2021-06-06', '2021-06-07', '2021-06-08',
'2021-06-09', '2021-06-10', '2021-06-11', '2021-06-12',
'2021-06-13', '2021-06-14', '2021-06-15', '2021-06-16',
'2021-06-17', '2021-06-18', '2021-06-19', '2021-06-20',
'2021-06-21', '2021-06-22', '2021-06-23', '2021-06-24',
'2021-06-25', '2021-06-26', '2021-06-27', '2021-06-28',
'2021-06-29', '2021-06-30', '2021-07-01'], dtype='datetime64[D]')