์ด์ ๋ ํ์ด์ฌ์ ๊ทธ๋ํฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ matplotlib์ ๊ฐ๋จํ ์์ ๋ฅผ ์ดํด๋ณด์๊ณ ์ค๋์ ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ํ์ ๊ฒฉ์ธ ๋ฐ์ดํฐ ๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ pandas์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Pandas ์ค๋ช ์ ๋๋ฆฌ๊ธฐ ์์ ๊ทธ ๋ฐฐ๊ฒฝ์ ๋ํด์ ์ค๋ช ์ ๋๋ฆฌ๋ฉด, ๋ณดํต ์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ์์ ์ฌ์ฉํ๋ ์๋ฃ๋ฅผ ๋ด๋ ๋ณ์๋ ์ซ์, ๋ฌธ์(๋๋ ๋ฌธ์ฅ)์ผ๋ก ๋๋๊ณ ์ปดํจํฐ์ ์ฐ์ฐ ํจ์จ์ ์ํด ์ซ์๋ฅผ ์ ์์ ์ค์๋ก ๊ตฌ๋ถํฉ๋๋ค.
ํ์ง๋ง ์ด์ ๊ฐ์ int, float, string๊ณผ ๊ฐ์ ์๋ฃํ์ผ๋ก๋ ์์ฝ๊ฒ ์ํ๋ ์ ๋ณด๋ฅผ ์ ์ฅํ ์ ์๊ธฐ ๋๋ฌธ์, ์์ ์ C์ธ์ด ์ฌ์ฉํ๋ 80-90๋ ๋์์๋ ์๋ฃํ ๊ฐ์ฒด๋ฅผ ์์๋ก ๋ง๋ค์ด ์ฐ๊ณค ํ์ต๋๋ค.
๊ทธ์ค ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์๋ฃํ์ ๋ฆฌ์คํธ์ ๋ฐฐ์ด๋ก ์ค์ค์ด ๋น์๋ ์์ธ์ง์ฒ๋ผ ๋ฐ์ดํฐ๊ฐ ์์๋ฅผ ๊ฐ์ง๊ณ ์ฐ์์ผ๋ก ๋ค์ด๊ฐ ์๋ ๊ตฌ์กฐ์ ๋๋ค. ์ต๊ทผ ์ฐ๋ฆฌ๋ฅผ ์ด๊ดํ๊ฒ ๋ง๋๋ ๋ธ๋ก์ฒด์ธ๋ ํฌ๊ฒ๋ณด๋ฉด ๋ฆฌ์คํธ์ ํ ํํ์ ๋๋ค.
๋น๋ก ๋ฆฌ์คํธ๋ ๋ฐฐ์ด์ด ๊ธฐ๋ณธ์ ์ธ ์๋ฃํ๋ณด๋ค ํธํ ์๋ ์๊ฒ ์ง๋ง, ์ฌ์ ํ ๋ฐ์ดํฐ๋ฅผ ๋ง์๋๋ก ๋ค๋ฃจ๊ธฐ์๋ ๋ถํธํจ์ด ํฝ๋๋ค.
์ฌ์ค ์ฒ์๋ณด๋ ์ฌ๋๋ ํธํ๊ณ ์ต์ํ๊ฒ ์ฌ์ฉํ ์ ์๋ ์๋ฃํ์ ์์ ๊ณผ ๊ฐ์ ์คํ๋ ๋์ํธ๋ก ํ๊ณผ ์ด๋ก ์ด๋ฃจ์ด์ง ํ ์ด๋ธ ํํ์ ๋๋ค.
์ ํต์ ์ธ ํต๊ณ ํ๋ก๊ทธ๋จ๋ค์์๋ ์ด์ ๊ฐ์ด ํ ์ด๋ธํ ๊ตฌ์กฐ๋ฅผ ๋ณธ๋ฐ ๋ง๋ ์๋ฃํ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ถ๋ฌ์ค๊ณ , ํ ์ด๋ธ ๋จ์๋ก ์ฐ์ฐ์ ํ๊ธฐ๋ ํฉ๋๋ค.
์ต๊ทผ์ ๋ฑ์ฅํ ๋ฌด๋ฃ ํต๊ณํด์ธ R์์๋ dataframe์ด๋ผ๋ ํ ์ด๋ธ ํํ์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋๋ฐ, ๋ฐ๋ก ์ด dataframe์ ํ์ด์ฌ์ด ๊ทธ๋๋ก ๋ฐ๋ผ ๋ง๋ ๊ฒ์ด ์ด๋ฆ๋ ๊ฐ์ DataFrame ๊ฐ์ฒด์ด๊ณ , ์ด ๊ฐ์ ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค๋ง๊ฐ์ง ํต๊ณ์ ํด์ ๋ชจ์๋์๊ฒ Pandas ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
์ถ์ฒ: https://www.slideshare.net/21_venkat/step-by-step-guide-to-learn-r
๋น๋ก์ pandas๊ฐ ๋ฑ์ฅํจ์ ๋ฐ๋ผ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ ํ์ด์ฌ์ด ๋๋ฐ์์ด ๋ฐ์ดํฐ ๋ถ์์ฉ ํด๊ณผ ๊ฐ์ ์ง์๋ฅผ ์ป๊ฒ ๋๋ฉด์, ์์ ๋ฐ์ดํฐ ์์ง + ๊ฐ๊ณต + ๋ถ์ + ์๊ฐํ๋ฅผ ํ๋์ ์ธ์ด๋ก ํ ์ ์๊ฒ ๋์์ต๋๋ค.
๋ฌผ๋ก ํต๊ณ ํด์์ ์์ํ R์ด๋ SAS์ญ์ ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฉํ์ฌ ๊ฑฐ์ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์ต๋๋ค๋ง, ์๋ก ๊ณต๋ถํ๋ ์ฌ๋ ์ ์ฅ์์ ์ธ์ด์ ๋์ด๋ ๋งํผ์ ํ์ด์ฌ์ ๋ฐ๋ผ์ค๊ธฐ๊ฐ ํ๋ ๊ฒ ์ฌ์ค์ ๋๋ค.
Pandas์ ๋ํ ์๊ฐ๊ฐ ์ข ๊ธธ์๋๋ฐ, ์ฌ์ค ๋ญ๊ฐ ์๋ก ๊ณต๋ถํ๋ ์ ์ฅ์์๋ ์คํ ๋ฆฌ๊ฐ ๊ธธ ์๋ก ๋ ๊ธฐ์ต์ ์ ๋จ๊ธฐ ๋๋ฌธ์ ์ญ์ฌ(?)๋ถํฐ ์์ํ์์ต๋๋ค. ^^
๊ทธ๋ผ pandas์ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ์ ์ฐ์ฐ์ ๋ํด์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ค์ต์ ํฅ๋ฏธ๋ฅผ ๋ถ๋ฌ์ผ์ผํค๊ธฐ ์ํด ์คํ์ DB์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฒ ์ต๋๋ค.
์๋๋ ์๊ฐ์ ์ญ์์ผ๋ก kr ํ๊ทธ์ ์ฌ๋ผ์จ ํฌ์คํ 50๊ฐ์ ๋ ์ง, ์ ์, ์ ๋ชฉ, ๋ณด์ ์ ๋ณด๋ฅผ ๊ณต๊ฐDB์ธ steemsql.com์์ ๊ฐ์ ธ์ค๋ ์ฝ๋์ด๋ฉฐ, pd.read_sql() ํจ์๊ฐ ์ฐ์์ต๋๋ค.
import pandas as pd
import pypyodbc
con = pypyodbc.connect('Driver={SQL Server};' 'Server=sql.steemsql.com;' 'Database=DBSteem;' 'uid=steemit;pwd=steemit')
cursor = con.cursor()
sql = "select top 50 created, author, title from comments \
where category = 'kr' and depth = 0 \
and created > DATEADD(day, -30, GETDATE()) \
order by created desc"
df = pd.read_sql(sql, con)
์ ์ฝ๋๋ฅผ ์คํ์ํค๋ฉด ์๋ฌด๋ฐ ์ถ๋ ฅ ์์ด ์๊ฒฉ DB์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๊ฐ ๋ ๋ผ์ ์ ์ฅ๋๋๋ฐ, pandas dataframe์ ๋ฌด์จ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์๋์ง ํ์ธํ๊ธฐ ์ํด head() ๋๋ tail()๋ฅผ ์์ฃผ ์ฌ์ฉํฉ๋๋ค.
head()์ ์คํ๊ฒฐ๊ณผ ๋ค์๊ณผ ๊ฐ์ด ํ ์ด๋ธ ํํ์ ๊ตฌ์กฐ๋ก DB์์ ํธ์ถํ ์๋ฃ๊ฐ ์ ์ฅ๋์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ฐธ๊ณ ๋ก, steemsql.com์ DB ์๋ฒ์ ์๊ฐ๊ณผ ํ๊ตญ ์๊ฐ์ด ์ฝ 9์๊ฐ์ ๋ ์ฐจ์ด๊ฐ ๋ฉ๋๋ค.
์ด์ ๊ฐ์ ์๋ฃ์์ payout์ด 1 SBD ์ด์์ธ ๋ฐ์ดํฐ๋ฅผ ๋ฝ์๋ณด๊ฒ ์ต๋๋ค.
๋๋ ํ๊ฐ์ ๊ฐ์ ๊ฐ์ ธ์ ๋ณด๊ฒ ์ต๋๋ค.
์ด๋ฒ์๋ pandas๋ฅผ ํตํด matplotlib์ ํธ์ถํด ๋ณด๊ฒ ์ต๋๋ค.
payout์ ๊ธ์ก์ 10๊ฐ ๋ฒ์ฃผ๋ก ๋๋์ด ๋น์ค์ ํ์ธํด ๋ด ๋๋ค.
์ต๊ทผ 50๊ฐ์ ๊ธ ๋๋ถ๋ถ์ 0~1๋ฌ๋ฌ ๋ฏธ๋ง์ ๋ณด์์ ๋ฐ์์ผ๋, ๋ ๋ถ ์ ๋๊ฐ 60๋ฌ๋ฌ์ 70๋ฌ๋ฌ์ ๋ณด์์ ๋ฐ์ผ์ จ๋ค์.. ๋ถ๋ฝ... ^^
์ด์์ผ๋ก pandas ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ dataframe ๊ฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์ถ์ถํ๊ณ ๋ค์ ์๊ฐํ๋ฅผ ํด ๋ณด์์ต๋๋ค.
ํ๋ฒ์ ๋ค ๋ฐฐ์ธ์ ์๋ ์์ด์ง๋ง, ์ผ๋จ์ ํฅ๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ํ๋์ฉ ์์ํ๋ฉด์ ๊ตฌ๊ธ ๊ฒ์์ ํ๋ค๋ณด๋ฉด ๋ณธ์ธ์ด ํ์ํ ๋ถ์์ฉ ํด์ด๋ ํจ์๋ค์ ์ฝ๊ฒ ์ ์ฉํด ๋ณผ ์ ์์ต๋๋ค.
์ค๋๋ ์ฌ๋ฏธ์์ผ์ จ๋ค๋ฉด ์ถ์ฒ ํ๋ฐฉ ๋ถํ๋๋ฆฝ๋๋ค. ^^
โป ํ์ด์ฌ์ ์ด์ฉํ ํฌ์ ํฌ์คํ ์ #kr-systemtrading์์ ๋ณด์ค ์ ์์ต๋๋ค.