본문 바로가기

파이썬으로 퀀트 프로그램 만들기 project

(48)
Python, MySQL - 시계열 데이터 처리를 위한 upsert 알아보기_1 to_sql() 함수를 이용해 시계열 데이터를 SQL에 저장할 경우 발생하는 문제와 upsert 기능을 사용하는 방법에 대해 설명해보겠습니다, 1. insert :시간이 지남에 따라 데이터가 추가됨 2. update :간혹 과거 데이터가 수정됨 입력하고자 하는 데이터가 기존 테이블에 값이 있는 경우 새로운 데이터로 업데이트하고 값이 없는 경우에는 새로운 데이터를 추가하는 기능을 mysql에서는 'upsert'라고 부릅니다. 이제 시계열 데이터를 데이터베이스에 추가하는 예제를 살펴보겠습니다. #1. 필요한 라이브러리 불러오기 import pandas as pd from sqlalchemy import create_engine from sqlalchemy_utils import create_database ..
pandas로 파이썬에 SQL사용하기 - 데이터 프레임을 SQL DB에 저장 데이터 프레임 형태의 데이터를 sql db에 저장하는 방법을 배워봅시다. 1. 예시 데이터 불러오기 저는 seaborn에서 제공하는 iris데이터 프레임을 가져와서 사용하겠습니다. 이것은 임의의 데이터 이므로 여러분은 원하시는 데이터 프레임을 사용하시면 되겠습니다. import seaborn as sns iris = sns.load_dataset('iris') 2. create engine # engine = create_engine('mysql+pymysql://[사용자명]:[비밀번호]@[호스트:포트]/[사용할 데이터베이스]') engine = create_engine('mysql+pymysql://root:1234@127.0.0.1:3306/nameofdb') 3. 데이터를 sql db에 저장 iri..
pandas로 파이썬에 SQL사용하기 - DB에 접속하여 데이터 불러오기 pymysql로 sql의 테이블을 불러오면 튜플 형태로 불러와집니다. 이것은 작업하기 편한 데이터프레임이 아닙니다. pandas를 통해 쉽게 sql 테이블 데이터를 불러오는 방법을 배워봅시다. 1. 필요한 라이브러리 불러오기 import pandas as pd from sqlalchemy import create_engine pandas에서 sql 연결할 때는 SQLalchemy ORM(Object Relational Mapping)을 사용함 ORM이란 어플리케이션과 데이터베이스를 연결할 때 SQL 언어가 아닌 어플리케이션 개발 언어로 데이터베이스를 접근할 수 있게 해주는 툴을 뜻합니다. 파이썬 코드를 SQL 쿼리로 자동 변환하여 SQL 쿼리를 따로 작성할 필요 없이 파이썬 코드를 작성하는 것만으로 데이..
파이썬에서 SQL(pymysql) - data 입력, 수정, 삭제 1. 라이브러리 불러오기 import pymysql 2. 연결에 필요한 정보 입력하여 연결하기 con = pymysql.connect( user = 'root', #사용자명 password = '1234', #비밀번호 host = '127.0.0.1', #허용 접속 ip, 일반적으로 localhost는 127.0.0.1 db = 'nameofdb', #사용할 데이터베이스 charset = 'utf8' #인코딩방법 ) 3. 데이터베이스 커서 객체 가져오기 mycursor = con.cursor() # 데이터 베이스에서 특정 행을 가르키는 커서 객체를 불러옴 4. 작업할 쿼리 실행하기 query = """ insert into nameoftable (col_1, col_2, col_3) values ('00..
파이썬에서 SQL(pymysql) - 연결하여 data 불러오기 1. 라이브러리 불러오기 import pymysql 2. 연결에 필요한 정보 입력하여 연결하기 con = pymysql.connect( user = 'root', #사용자명 password = '1234', #비밀번호 host = '127.0.0.1', #허용 접속 ip, 일반적으로 localhost는 127.0.0.1 db = 'nameofdb', #사용할 데이터베이스 charset = 'utf8' #인코딩방법 ) 3. 데이터베이스 커서 객체 가져오기 mycursor = con.cursor() # 데이터 베이스에서 특정 행을 가르키는 커서 객체를 불러옴 4. 작업할 쿼리 실행하기 query = """ select * from nameoftable; """ #작업할 쿼리 내용 작성 mycursor.exe..
MySQL - 윈도우 함수 윈도우 함수 사용방법 [윈도우 함수] over ([partition by [열 리스트]] order by [정렬용 열 리스트]) 여기서 partition by는 생략 가능합니다 #윈도우 함수로 사용할 수 있는 함수 -윈도우 전용 함수 rank, dense_rank, row_number 등 rank: 같은 순위인 행이 여러개 있으면 후순위로 건너뜀 예) 1위가 3개인 경우: 1위, 1위, 1위, 4위, ··· dense_rank: 같은 순위인 행이 여러개 있어도 후순위를 건너뛰지 않음 예) 1위가 3개인 경우: 1위, 1위, 1위, 2위, ··· row_number: 순위와 상관없이 연속 번호를 부여 예) 1위가 3개인 경우: 1위, 2위, 3위, 4위, ··· 윈도우 전용 함수는 원칙적으로 select ..
MySQL - 테이블 결합, inner join, outer join 테이블 결합 작업에는 'join'이 사용됩니다. join의 종류를 다음과 같이 시각화할 수 있습니다. #inner join 두 테이블에서 공통되는 열을 기준으로 합칩니다. 사용 예시 select * from nameoftalbe_1 as t1 inner join nameoftable_2 as t2 on t1.col_1 = t2.col_1; → nameoftable_1 을 t1, nameoftable_2 을 t2로 가져옵니다. 두 테이블에서 t1의 col_1과 t2의 col_1을 기준으로 합칩니다. 그런데 만약 여기서 * 대신에 col_1을 쓰면 오류가 발생합니다. 두 테이블 모두다 col_1을 갖고 있기때문에 발생하는 오류입니다. 명시적으로 어디 테이블의 col_1인지 알려줘야합니다. 예를 들어 sele..
MySQL - case #case case 식은 경우에 따라 값을 구분할 수 있습니다. 사용 방법 case when [조건식1] then [식1] when [조건식2] then [식2] when [조건식3] then [식3] ··· else [식n] end else는 위에서 만족하는 조건이 없을때의 반환값입니다. 생략할 수 있지만 명시적으로 작성하는것이 바람직합니다. 사용 예시 select col_1, col_2, case when col_2 >= 6000 then 'high' when col_2 >= 3000 and col_2 < 6000 then 'middle' when col_2 < 3000 then 'low' else null end as col2_classify from nameoftable;