Python 11

pangres를 사용해서 pandas로 mysql에 upsert하기.

pangres 라이브러리를 사용하면, 보다 효율적으로 mysql의 기존 데이터 테이블을 upsert(수정과 추가) 할 수 있다. pandas의 to_sql 메서드로는 기존의 데이터를 다루는데 한계가 있었고, * to_sql 메서드의 if_exist 설정 시 발생하는 문제점 : if_exists: {‘fail’, ‘replace’, ‘append’} fail: ValueError 발생. replace: 이전 데이터가 삭제됨. append: 기존 데이터가 중복됨. 기존에는 이러한 문제를 해결하기 위해 추가적으로 수정해야할 데이터만 남기는 함수를 구현하거나, sqlalchemy 와 pymysql 두 가지 방식으로 쿼리문을 작성하며 upsert 했었다. 하지만, pangres 를 활용하면 좀 더 효율적으로 up..

퀀트/Python 2023.06.25

python Numpy 총정리

Numpy¶ 수치를 다루는 분야를 위한 파이썬 패키지. Numerical Python 의 약자이다. Array 또는 Matrix(행렬)와 같은 자료구조를 다룬다. Numpy 사용하기¶ 🔻Numpy 설치와 호출 In [1]: !pip install numpy import numpy as np 🔻특징 1. n차원 배열 ndarray 객체이다. 행렬 연산과 비슷한 성분별 계산이 가능하다. 빠르고 유연한 자료형이다. In [20]: # 배열 생성 data1 = [1, 2, 3, 4, 5] arr1 = np.array(data1) data2 = [[1, 2, 3, 4], [5, 6, 7, 8]] arr2 = np.array(data2) arr1, arr2 Out[20]: (array([1, 2, 3, 4, 5])..

퀀트/Python 2023.03.14

07. Seaborn

Seaborn matplotlib을 감싸서 만든 보다 쉬운 파이썬 시각화 패키지 matplotlib보다 쉬운 코드로 그릴 수 있음 matplotlib의 명령어를 그대로 사용할 수 있음 데이터의 통계적인 부분을 살펴볼 때 강점이 있다. import 및 준비 # COLAB 환경을 위한 나눔고딕 한글폰트 설치 --> 진행 후, 런타임 > 런타임 다시 시작을 해 주세요. 다시 시작 후에는 이 부분 실행 X !sudo apt-get install -y fonts-nanum !sudo fc-cache -fv !rm ~/.cache/matplotlib -rf from matplotlib import pyplot as plt import seaborn as sns sns.set() plt.rc('font', famil..

퀀트 2022.12.05

06. Matplotlib / Pandas 에서 plot 생성하기

Matplotlib 그래프를 그리거나, 분포를 보여주는 등 시각화를 위한 파이썬 패키지 연구용으로 많이 쓰인 MATLAB의 코드 스타일을 모방 ( Matlab - Plotting Library ) 기능은 많으나 사용하기는 불편한 편 Matplotlib 준비 # COLAB 환경을 위한 나눔고딕 **한글폰트 설치** --> 진행 후, 런타임 > 런타임 다시 시작을 해 주세요. 다시 시작 후에는 이 부분 실행 X !sudo apt-get install -y fonts-nanum !sudo fc-cache -fv !rm ~/.cache/matplotlib -rf import from matplotlib import pyplot as plt 한글 폰트 설정 # 한글 폰트 설정 (Colab 나눔바른고딕, 윈도우 M..

퀀트 2022.12.01

04. DataFrame : 생성, 연산, 정렬, 병합, 그룹, 쿼리

DataFrame 연산 메소드 prac_df = 주가_데이터.T.loc['2020-09-10':'2020-09-12', ['A005930','A005940']] print(prac_df.abs()) # 절댓값 print(prac_df.isna()) # NaN 여부 print(prac_df.notna()) # 유효 여부 print(prac_df.pow(2)) # 거듭제곱 .isna() 와 .notna()의 결과 값은 True or False .isna() 값이 True다 = np.NaN = None = pd.NaT ‘ ‘ 처럼 공백은 False다. .pow()의 첫번째 인자로 상수가 들어가면 broadcast로 거듭제곱하고, Series나 DataFrame이 인자로 들어갈 수 있다. .pow()에 axis..

퀀트 2022.11.30

Python Flask : CRUD

Python Flask CRUD 1. module import from flask import Flask, request, redirect request : 클라이언트로부터 들어오는 요청 데이터를 처리하기 위해 사용 redirect : 클라이언트를 (location)위치로 리디렉션 하기 위해 사용 2. 더미 데이터 nextId = 4 topics = [ {'id':1, 'title':'html', 'body':'html is...'}, {'id':2, 'title':'css', 'body':'css is...'}, {'id':3, 'title':'javascript', 'body':'javascript is...'} ] 임시 추가 데이터. 데이터베이스와 연결시에는 topics 리스트에 불러온 데이터가 들..

Python/Flask 2022.10.18

Python Flask : install / why use / routing / example

Flask web framework 1. 설치 pip install Flask 2. base from flask import Flask app=Flask(__name__) @app.route('/') def index(): return 'hi' if __name__ == "__main__": app.run(port=5001, debug=True) 3. Why use web framework는 web application을 구현하는데 필요한 공통적인 기능을 제공해서 시간과 비용을 절약 할 수 있다. 사용자 정의 웹서버를 만들 수 있다. 동적 html을 만든다. return값은 string( 또는 dict, tuple) type 이어야 한다. return값으로 html 태그를 문자열 형태로 넣어줄 수 있다...

Python/Flask 2022.10.18

01. 1주차 이론 - 파이썬 기초 문법 / Django 알아보기

웹의 동작 순서 및 개념 클라이언트 : '요청을 보내는 곳' 주로 '나', '내 컴퓨터' 혹은 '크롬'을 클라이언트라고 한다. 서버 : '요청을 받아서 응답 해 주는 곳' 우리가 인터넷에서 웹페이지, 로그인등의 행동을 하고 난 후에 이루어지는 많은 과정들을 처리 해준다. API : 데이터를 어떻게 주고 받자! 라고 정한 약속 1. 페이지를 받는 경우 : HTML, CSS, Javascript가 섞여있는 페이지를 받는 경우 2. 데이터만 받는 경우 : 페이지나 화면은 크게 필요없고, 데이터만 받고싶은 경우 Pycharm - Python Interpreter : 내가 적은 파이썬 언어를 컴퓨터가 이해할 수 있도록 번역시켜준다.(파이썬 번역기) - Virtual environment (venv) : 각 프로젝..

개인 프로젝트 01 : pygame으로 간단한 게임 만들기

개인 프로젝트 : pygame을 이용해서 간단한 게임 만들기 4월 25일 부터 2.5일간, 그동안 배운 파이썬 문법을 이용해서 간단한 게임을 만드는 프로젝트를 진행하였다. 처음엔 내 수준을 너무 과대평가하여 팩맨을 만들어보려 했으나, 맵을 그리며 장애물 처리와 맵에 뿌려져있는 팩맨의 먹이를 코딩하다 큰 벽을 느끼고 주제를 바꿨다.. 팩맨에 이미 2.5일중 절반을 넘게 소모했기에 급하게 벌레잡기 게임으로 주제를 바꿔 진행하였다. - 규칙 : 먼저 간단하게 규칙을 정했다. 시간내에 사방으로 움직이는 벌레들을 마우스 클릭으로 제거하며, 제한시간동안 스코어를 쌓는 것이 게임방식이다. - 구현할 기능 : 규칙을 보며 필요한 기능들을 쪼개보았다. 핵심기능들이 다섯가지정도가 되었다. 기능 하나하나 완성된 코드를 보며..

02. python_Class

class 함수들 묶음. 객체마다 일정한 패턴이 보일 때 사용한다 - 기본 형태 class doc: def __init__(self): # init : class를 선언하는 순간 실행되는 함수 print("클래스 선언") def show(self): # init이 아닌 함수는 .함수이름() 으로 선언되어야 실행 print("show 실행") a = doc() #클래스 선언 a.show() #show 실행 - self class doc: def __init__(self): # init : class를 선언하는 순간 실행되는 함수 self.name = input('이름: ') self.age = input('나이: ') def show(self): # init이 아닌 함수는 .함수이름() 으로 선언되어야 실..