본문 바로가기

Python14

[Python] 페이지네이션으로 업비트에서 비트코인의 모든 1분봉 가져오기 업비트 정책 상 한 번에 가져올 수 있는 1분봉의 최대 개수는 200개입니다. 더 이전의 기록을 가져오고 싶다면 페이지네이션을 활용해야하는데요. 아래는 그 예제입니다. 예제에서 사용할 테이블을 생성하는 쿼리는 아래와 같습니다. CREATE TABLE upbit_bitcoin_candle_minute ( market VARCHAR(10), candle_date_time_utc DATETIME, candle_date_time_kst DATETIME, opening_price DECIMAL(20, 8), high_price DECIMAL(20, 8), low_price DECIMAL(20, 8), trade_price DECIMAL(20, 8), timestamp BIGINT, candle_acc_trade_.. 2024. 3. 13.
[Python] FastAPI를 사용해서 서버 만들기 https://stickode.tistory.com/1051 https://stickode.tistory.com/1062 저번 시간에 이어서, 오늘은 DB에 저장해둔 데이터를 시각화해보겠습니다. 코드에서 user와 password는 본인의 DB 설정에 맞게 변경하셔야합니다. MariaDB에는 다음과 같은 테이블을 추가하시면 됩니다. CREATE TABLE trades ( type VARCHAR(50), code VARCHAR(20), timestamp BIGINT, trade_date DATE, trade_time TIME, trade_timestamp BIGINT, trade_price DECIMAL(20, 4), trade_volume DECIMAL(20, 8), ask_bid VARCHAR(10),.. 2024. 3. 3.
[Python] 수집한 데이터 시각화하기 https://stickode.tistory.com/1051 저번 시간에 이어서, 오늘은 DB에 저장해둔 데이터를 시각화해보겠습니다. 코드에서 user와 password는 본인의 DB 설정에 맞게 변경하셔야합니다. import pandas as pd import matplotlib.pyplot as plt import pymysql import matplotlib.dates as mdates # 데이터베이스 연결 설정 db = pymysql.connect(host='localhost', user='root', password='root', db='stickode_231204_upbit', charset='utf8mb4') cursor = db.cursor() # SQL 쿼리를 사용하여 데이터 추출 que.. 2024. 2. 23.
[Python] 죽지않는 웹소켓 만들기 https://stickode.tistory.com/1045 저번 시간에 이어서, 오늘은 데이터 송수신이 없더라도 소켓 연결이 해제되지 않도록 코드를 수정해보겠습니다. 기존 코드는 특정 시간 동안 웹소켓이 데이터를 주고받지 않는다면 연결이 해제되도록 작성되었습니다. 변경한 사용자가 ctrl + c를 눌러서 직접 종료하지 않는 한 소켓 연결이 해제되지 않습니다. 아래 파일을 복사하신 후 실행하시면 됩니다. 파일명은 main.py입니다 import json import websocket import pymysql from websocket import WebSocketApp, WebSocketConnectionClosedException import logging import time logging.basi.. 2024. 2. 14.
[Python] 실시간 비트코인 거래 데이터를 MariaDB에 저장하기 https://stickode.tistory.com/1038 저번 시간에 이어서, 오늘은 실시간으로 수신한 비트코인 거래 데이터들을 DB(mariaDB)에 INSERT하겠습니다. MariaDB에는 다음과 같은 테이블을 추가하시면 됩니다. CREATE TABLE trades ( type VARCHAR(50), code VARCHAR(20), timestamp BIGINT, trade_date DATE, trade_time TIME, trade_timestamp BIGINT, trade_price DECIMAL(20, 4), trade_volume DECIMAL(20, 8), ask_bid VARCHAR(10), prev_closing_price DECIMAL(20, 8), `change` VARCHAR(1.. 2024. 2. 5.
[Python] 업비트 API로 실시간 비트코인 거래 데이터 수신하기 오늘은 업비트 API를 사용해서 실시간으로 거래되고있는 비트코인의 데이터를 받아보겠습니다. 아래 파일을 복사하신 후 실행하시면 됩니다. 파일명은 main.py입니다. # 아래 pip 명령어를 터미널에서 먼저 실행해서, 다운로드 받으셔야합니다 # pip install websocket-client import jwt # JWT(Java Web Token) 라이브러리 임포트 import uuid # UUID(Universally Unique Identifier) 라이브러리 임포트 import websocket # 웹소켓 라이브러리 임포트 def on_message(ws, message): data = message.decode('utf-8') # 메시지를 UTF-8로 디코딩 print(data) # 디코딩된.. 2024. 1. 27.
[Python] pickle 모듈을 사용해서 직렬화, 역직렬화 하기 파이썬의 객체를 일련의 바이트들로 변환한 후 나중에 다시 파이썬 객체로 복원하게 할 수 있는데, 이렇게 파이썬 객체를 일련의 바이트들로 변환하는 것을 직렬화(Serialization)라 하고, 다시 바이트들을 파이썬 객체로 메모리 상에 복원하는 것을 역직렬화(Deserialization)이라 합니다. 직렬화 방식에는 Pickle, JSON, YAML 등 여러가지가 있습니다. Pickle 방식으로 직렬화를 하면 데이터가 바이너리 형식으로 저장되기 때문에 사람이 읽을 수 없는 반면, 저장이나 전송이 효율적입니다. 대신 JSON, YAML 방식은 저장이나 전송이 Pickle 보다는 덜 효율적이지만 사람이 읽을 수 있는 형태로 저장되기 때문에 가독성이 좋은 장점이 있습니다. 그리고 Pickle 방식으로 거의 모.. 2023. 1. 8.
[ Python ] csv 파일을 불러와서 판다스 데이터프레임 생성하기 안녕하세요, 오늘은 csv 파일을 불러와서 판다스 데이터프레임을 생성해보겠습니다. 사용할 csv 파일은 공공데이터포털에서 다운로드 받은 '서울특별시 송파구_체육시설' 데이터 (csv파일) 를 사용하겠습니다. pd.read_csv() 함수를 사용하면 csv, text 등의 형식의 파일들을 불러와서 데이터프레임으로 생성할 수 있습니다. import pandas as pd df = pd.read_csv('서울특별시 송파구_체육시설_20210916.csv') 하지만 위의 코드를 실행하면 다음과 같은 에러가 발생합니다. UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbe in position 0: invalid start byte 이는 데이터 내에 한글이 포함되어.. 2022. 12. 29.
[ Python ] 판다스 데이터프레임을 csv 파일로 저장하기 안녕하세요, 오늘은 판다스 데이터프레임을 csv 파일로 저장해보겠습니다. 먼저 간단한 형태의 데이터프레임을 생성하겠습니다. import pandas as pd names = ['Kim', 'Park', 'Lee', 'Shin'] ages = [25, 29, 21, 33] address = ['서울', '대구', '춘천', '제주'] dictionary = { 'Name' : names, 'Age' : ages, 'Address' : address } df = pd.DataFrame(dictionary) 생성된 데이터프레임은 다음과 같습니다. 가장 간단한 형태로 데이터프레임을 csv 파일로 저장하는 방법은 다음과 같습니다. df.to_csv('file_name.csv') 파일이 현재 경로에 저장이 되고, .. 2022. 12. 20.