오늘은 파이썬을 이용해 MySQL 에 접속을 해서 데이터를 가져와보고, 간단하게 차트도 하나 그려보겠습니다.
아무래도, 요즘에 신입 취업을 위해서는 파이썬도 거의 필수가 되어가는 느낌입니다.
부지런히 준비할 필요가 있습니다.~!

파이썬의 장점 중에 하나는 많은 모듈들이 제공되고 있고, 모듈만 잘 활용하면 정말 손쉽게 기능을 구현할 수 있다는 점입니다. DB연결 및 차트 그리는 과정도 마찬가지입니다.
여기서는 파이썬을 이용해  '평생 필요한 데이터 분석'의 DB_SQLSTK 데이터베이스에 접속을 합니다.

저 같은 경우는 Anaconda와 PyCharm을 설치해서 사용하고 있습니다. Anaconda는 파이썬의 주요 모듈을 모아놓은 패키지라고 생각하시면 됩니다. 파이썬 대신에 Anaconda를 설치하시면 됩니다. PyCharm은 파이썬 코딩을 할 수 있는 툴이라고 생각하시면 됩니다.

Anaconda의 경우 32비트와 64비트 버젼이 있습니다. 만약에 나중에 증권사 API를 통해 주식 데이터를 모으는 작업도 진행할 예정이라면 32비트를 설치하는 것이 좋습니다. 반면에 머신러닝등의 작업을 할 예정이라면 64bit 버젼을 설치해야 합니다. 64비트를 설치한 후에 가상환경을 만들어 32비트 모듈도 별도 처리할 수 있다고 하니 참고바랍니다.(저는 그렇게 해본적은 없고 그냥 32비트를 사용중입니다.)

​아나콘다는 아래 사이트에서 다운로드 할 수 있습니다.

https://www.anaconda.com/

 

Anaconda | The World's Most Popular Data Science Platform

Anaconda is the birthplace of Python data science. We are a movement of data scientists, data-driven enterprises, and open source communities.

www.anaconda.com

파이참은 아래 사이트에서 다운로드할 수 있습니다.

https://www.jetbrains.com/ko-kr/pycharm/

 

PyCharm: JetBrains가 만든 전문 개발자용 Python IDE

 

www.jetbrains.com

 


그러면, 본격적으로 MySQL에 접속해서 간단한 차트까지 그려보겠습니다.
가장 먼저 할일은 필요한 모듈을 import하는 것입니다. 아래와 같습니다.

import pymysql #mysql 연결및 실행을 위한 모듈
import pandas as pd 
import matplotlib.pyplot as plt #차트 처리를 위한 모듈




이번에는 파이썬에서 MySQL에 접속해보도록 하겠습니다. 아래와 같습니다.

# MySQL 연결 처리
myMyConn = pymysql.connect(user='root', password='1qaz2wsx', host='localhost', port=3306,charset='utf8', database='DB_SQLSTK')
myMyCursor = myMyConn.cursor()


MySQL에 실행할 SQL을 만들어봅니다. 앞에서 설명했듯이, 평생필요한 데이터 분석의 DB_SQLSTK의 테이블을 조회합니다. 아래와 같습니다.

# 실행할 SQL 생성
sql = """
        SELECT  T1.STK_CD ,T1.STK_NM
                ,T2.DT
                ,T2.C_PRC
                ,T2.O_PRC
                ,T2.H_PRC
                ,T2.L_PRC
                ,T2.VOL
        FROM    DB_SQLSTK.STOCK T1
                INNER JOIN DB_SQLSTK.HISTORY_DT T2
                   ON (T2.STK_CD = T1.STK_CD)
        WHERE   T1.STK_NM = '삼성전자'
        """


SQL을 실행하고, 결과를 바로 DataFrame에 저장합니다. DataFrame(DF)를 Print해보면 테이블 형태로 데이터가 저장된 것을 알 수 있습니다.

# DataFrame에 SQL 결과 저장
df = pd.read_sql(sql, myMyConn)

# 결과 출력
print(df)


여기까지, MySQL에 접속해서 SQL까지 실행해봤습니다.

마지막으로, 가져온 데이터에서 C_PRC(종가)만 Series 객체에 담은 후에 차트로 그려보도록 하겠습니다. 아래와 같습니다.

# 차트로 처리할 항목을 Series에 별도로 담는다.
c_prc = df['C_PRC']
c_prc.index = df['DT']

plt.figure(figsize=(11,9))
c_prc.plot(label='Close Price', title= "Samsung Close Price")
plt.legend(loc='lower left')
plt.grid(True)
plt.show()


아래와 같은 삼성전자의 종가 차트를 손쉽게 만들어 낼 수 있습니다.





전체 소스는 아래와 같습니다.

import pymysql
import pandas as pd
import matplotlib.pyplot as plt

# MySQL 연결 처리
myMyConn = pymysql.connect(user='root', password='1qaz2wsx', host='localhost', port=3306,charset='utf8', database='DB_SQLSTK')
myMyCursor = myMyConn.cursor()

# 실행할 SQL 생성
sql = """
        SELECT  T1.STK_CD ,T1.STK_NM
                ,T2.DT
                ,T2.C_PRC
                ,T2.O_PRC
                ,T2.H_PRC
                ,T2.L_PRC
                ,T2.VOL
        FROM    DB_SQLSTK.STOCK T1
                INNER JOIN DB_SQLSTK.HISTORY_DT T2
                   ON (T2.STK_CD = T1.STK_CD)
        WHERE   T1.STK_NM = '삼성전자'
        """

# DataFrame에 SQL 결과 저장
df = pd.read_sql(sql, myMyConn)

# 결과 출력
print(df)

# 차트로 처리할 항목을 Series에 별도로 담는다.
c_prc = df['C_PRC']
c_prc.index = df['DT']

plt.figure(figsize=(11,9))
c_prc.plot(label='Close Price', title= "Samsung Close Price")
plt.legend(loc='lower left')
plt.grid(True)
plt.show()


오늘은 여기까지입니다. 감사합니다.!

 

 

데이터를 분석하는 과정을 공부해보고 싶으신 분은 아래의 '평생 필요한 데이터 분석'의 교육 과정을 추천합니다. 교육을 통해 SQL을 배운다면, 위 내용을 좀 더 보강할 수도 있고, 자신만의 스타일로 분석을 할 수 있습니다. SQL을 완전히 자신의 것으로 만들 수 있는 교육이니 관심 가져보시기 바랍니다. 감사합니다.~!

https://cafe.naver.com/dbian/5259

 

「평생 필요한 데이터 분석(MySQL 과정)」 수강자 모집

MySQL 사용자를 위한 SQL 교육 과정을 모집합니다. 2021년 4월에 첫 강의를 성공리에 잘 마친 이후, 강사님의 프로젝트 일정이 너무 바쁜 탓에, 그리고 코로나 탓에 ...

cafe.naver.com

 

+ Recent posts