Python 14

[python] selenium 활용한 웹페이지 PDF 파일로 저장하기

들어가며 여러 웹사이트를 돌아다니며 크롤링하다 보면 가끔은 내PC에 저장하고 싶은 정보들이 있을 수 있다. 나 같은 경우 필요성을 느낀 포인트가 한가지 있는데, 포털사이트에서 신문기사를 보면 너무 불필요하게 광고가 덕지덕지 있어 늘 불편했다. 인쇄버튼을 누르면 광고 없이 깔끔하게 볼 수 있잖아! 파이썬과 셀레니움에는 언제나 정답이 있다!! 웹페이지 PDF 파일로 저장하기 아래 예시로 사용할 웹페이지가 있다. 기사 시작하기 전부터 영상이 딸린 커다란 광고가 붙어 있다. URL : https://www.mk.co.kr/news/world/10584572 그리고 기사 헤드라인 아래쪽으로 보면 프린터 모양 '인쇄' 버튼이 있는데 이걸 눌러 보면 URL은 아래와 같다. URL : https://www.mk.co...

SW개발/python 2022.12.28

[pandas] 그룹별 누적합 집계하는 방법

안녕하세요, 오늘은 pandas 그룹별 누적합을 구하는 방법에 대해서 알아 보겠습니다. 1. 간단한 데이터로 이해하기 아래와 같이 날짜, 과일종류, 판매량 3개 컬럼으로 이뤄진 데이터프레임이 있습니다. 만약 판매량의 누적합을 구하고 싶다면, cumsum() 을 통해서 쉽게 구할 수 있죠. 하지만, 과일종류별 누적합, 일자별 누적합 등 그룹별로 누적합계를 구하려면 어떻게 해야 할까요?? 아래 두 결과 코드는 groupby 내 컬럼 순서만 다르다는 차이만 있으나, 결과는 완전히 서로 다릅니다. 1. 일자별 누적합 level=[0] 에 해당하는 값이 'Date' 이기 때문에 일자별 기준으로 판매량 그룹 누적합계를 구합니다. 2. 과일별 누적합 level=[0] 에 해당하는 값이 'Fruit' 이기 때문에 과일..

SW개발/python 2022.07.31

[python] pandas read_csv 데이터 읽을 때 날짜/시간 파싱 하기

안녕하세요, pandas read_csv 함수를 통해서 데이터를 읽을 때, 날짜/시간 데이터 파싱하는 간단한 방법을 소개합니다. read_csv 함수 내 파라미터를 세팅하는 것인데요. 아래와 같습니다. pd.read_csv('input.csv', parse_dates=['컬럼명']) 그럼 데이터를 직접 불러와 보겠습니다. 첫번째, 파라미터 없이 read_csv () 아무런 파라미터 세팅하지 않고 실행하면 'Date' 컬럼 타입은 Object가 된다. 두번째, 파라미터 세팅하여 read_csv() parse_dates 라는 파라미터에 파싱할 컬럼명을 넣어준다. 그럼 'Date' 컬럼 타입은 아래와 같이 datetime 으로 세팅 되어 불러와 진 것을 볼 수 있다.

SW개발/python 2022.06.01

[python] 딕셔너리 Dictionary 구조 활용

안녕하세요, 파이썬을 통해서 가계부를 만들고 있는데요. 가계부를 쓸 때, 기본적으로 수입/지출로 나뉘겠고, 지출에서는 고정지출, 변동지출 등 성격에 따라 세부적으로 분류될 수 있겠죠. 이런 트리구조(?)를 가지면서 빠르게 분석을 할 수 있게 파이썬 딕셔너리 Dictionary 자료구조를 통해서 해결해 보려고 합니다. 딕셔너리 "값"으로부터 "키" 값 찾기 두 가지 main_dict 와 sub_dict를 선언했어요. 예를 하나 들어보죠. 변동지출에 "생활"이라는 카테고리가 있고 그 안에 "마트", "편의점" 이렇게 두개가 있다고 해볼게요. 그리고 마트와 편의점 하위로 각각 카테고리들이 있다고 해볼게요. > 마트 >> 홈마트, 힐마트 > 편의점 >> 지에스편의점, 세븐일레븐 이런 구조에서 실제로 체크카드나 ..

SW개발/python 2021.11.17

[python] PyQt5 그래프 그리기(feat. plotly, matplotlib)

PyQt5 환경에서 plotly 그래프 그리기 PyQt5는 python 으로 빠르게 GUI 프로그램을 만들 수 있게 도와줍니다. 특히 QtDesigner 를 사용해 직관적으로 콤보박스, 텍스트박스 등을 배치시킬 수도 있고, 코드로 직접 화면 구성을 할 수도 있죠. 최근에는 버전업이 되어 PyQt6가 나왔다고 하네요. 개발언어가 python이고 GUI 환경으로 프로토타입을 빠르게 만들어보고 싶다면 추천드립니다. 오늘은 PyQt5 환경에서 plotly 라이브러리로 그래프를 그리는 방법을 알아 볼게요. 1. 라이브러리 설치 PyQt5와 plotly 라이브러리는 당연히 설치되어 있어야 하고, 추가적으로 Plotly 그래프를 그리기 위해서 PyQtWebEngine 을 설치해줍니다. pip install PyQtW..

SW개발/python 2021.09.10

[백테스트] 파이썬 변동성 돌파 전략

퀀트투자 관련 책을 읽으며, 처음으로 백테스트가 무엇인지 알게 되었습니다. 백테스트? 과거 데이터를 기반으로 여러 조건을 만들어 테스트 해 보는것이죠. 백테스트란 어떤 투자 전략이 과거에 어느 정도의 수익이 나는지 또는 얼마나 위험한지를 알아보기 위해 역사적인 데이터를 이용하여 전략을 모의실험하는 과정을 말한다. - 실전 퀀트투자 중에서, 홍용찬 저 - 근데 여기서 중요한게 바로! 직접 백테스트를 해봤느냐? 인거 같습니다. 최근에 열심히 보고 있는 퀀트투자 유투버 강(갓 또는 킹)환국님 영상에 나온 백테스트를 직쩝! 파이썬을 통해서 구현해 보려고 합니다. 강환국님은 영상에서 백테스트를 엑셀로 하셨는데요. 엑셀 쓰면 간단하지 왜 굳이 파이썬으로 하려고 하느냐? 첫째, 코드 재사용성을 통해 데이터만 있으면 ..

크립토 2021.08.17

[python] 연도, 월별 손쉬운 for loop 생성 방법

데이터를 다루다보면 시계열 정보를 가공하고 처리해야할 경우가 많습니다. 예를들어 2021년 1월부터 12월까지 데이터를 수집하거나, 그 기간 동안만 데이터를 분석한다던지 여러가지 케이스가 있죠. 이번에는 이런 연도, 월별 등 손쉽게 for 문을 생성하는 방법을 공유하고자 합니다. 기존 방법 기존에는 무식하게(?) 하나의 리스트에 조회할 기간 정보를 넣었었죠. YYYYMM = ['202001','202002','202003','202004','202005','202006','202007'] for date in YYYYMM: print('조회결과: {}'.format(date)) 조회결과: 202001 조회결과: 202002 조회결과: 202003 조회결과: 202004 조회결과: 202005 조회결과: ..

SW개발/python 2021.07.29

[python] selenium 활용한 웹사이트 동작제어 실행

selenium 활용한 웹사이트 동작제어 실행 서론 지난 포스팅에서는 셀레니움을 활용하여 세종도서관 자동로그인을 구현했습니다. 이번에는 로그인 이후 사용자가 직접 클릭을 하는 것과 같이 웹사이트 동작 제어를 해 보겠습니다. 바로 사전로그인 동작을 말이죠! 본론 우선, 지난 포스팅 복습으로 코드를 다시 올려드립니다. 오늘 진행할 부분은 "2. 사전예약 자동제어" 부분에 코드를 추가할 꺼에요. import getpass from selenium import webdriver ''' 국립세종도서관 자동로그인 ''' options = webdriver.ChromeOptions() # headless 옵션 설정 : 개발환경이 리눅스라면 아래 두가지는 포함 options.add_argument('headless')..

SW개발/python 2021.06.21

[plotly] 시계열 시각화 X축 다루기

[plotly] 시계열 시각화 X축 다루기 서론 python 데이터 시각화를 위한 라이브러리는 대표적으로 matplotlib, seaborn 이 있고, 시각화를 위해 많이 사용하고 있죠. 저는 최근에 plotly 라는 동적 그래프를 그려주는 라이브러리를 알게 되었고 이에 대한 학습을 시작하였습니다. 이번 포스팅에서는 시계열 데이터 시각화 할 때, 중간에 시계열 자료가 비어 있는(?) 경우 matplotlib 과 plotly 시각화 에 대해 소개합니다. 본론 *샘플코드를 맨 아래 제공됩니다. 파이썬 라이브러리를 불러오고요. import pandas as pd import plotly import matplotlib.pyplot as plt import plotly.graph_objects as go 우선,..

[python] selenium 활용한 웹사이트 자동 로그인

셀레니움 활용한 웹사이트 자동 로그인 서 론 이번 글에서는 python selenium 라이브러리를 활용해 웹사이트 자동 로그인을 구현해 보겠습니다. selenium 모듈은 많은 기능이 있으며, 잘 활용한다면 웹사이트 조작에 여러가지를 자동화 할 수 있어요 제가 시도해 볼 대상 사이트는 세종시에 있는 "국립세종도서관" 홈페이지 입니다. 왜 도서관 홈페이지냐구요? 현재 코로나-19로 인해 사전 방문 예약으로 운영되고 있으며, 하루 400명 제한된 인원만 받고 있어요. 도서관 가서 빌리고 싶은 책이 있는데 사전 방문 예약에 실패해 갈 수가 없다면 너무 속상하지 않나요? 저는 지난번에 사전예약방문이 된 줄 알고 도서관까지 열심히 갔는데... 예약이 안되어 있었더라고요... 할 수 없이 도서관 앞에서 20여분 ..

SW개발/python 2021.05.27