SW개발 33

[SQL] 구글 바드(Bard)에게 물어본 쿼리 튜닝

쿼리 튜닝 어떻게 하는거야? 구글에서 만든 생성형 AI 바드(Bard)에게 물어 보았습니다. 바드야, SQL 쿼리 튜닝하는 가장 쉬운 방법 SQL 쿼리 튜닝은 데이터베이스의 성능을 향상시키는 데 중요한 작업입니다. SQL 쿼리를 튜닝하는 가장 쉬운 방법은 다음과 같습니다. 필요한 데이터만 쿼리합니다. 쿼리에서 필요한 데이터만 선택하면 불필요한 데이터를 검색하는 데 필요한 시간을 줄일 수 있습니다. 인덱스를 사용합니다. 인덱스는 데이터베이스에서 특정 데이터를 빠르게 찾을 수 있도록 도와줍니다. 쿼리에서 인덱스를 사용하면 쿼리 실행 속도를 높일 수 있습니다. 조인 방법을 최적화합니다. 조인은 두 테이블의 데이터를 결합하는 데 사용됩니다. 조인 방법을 최적화하면 쿼리 실행 속도를 높일 수 있습니다. 서브쿼리를..

SW개발/SQL 2023.08.18

[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

티스토리 오픈 API 사용 방법(첫번째. 인증키, 토큰 발급)

안녕하세요, 오늘은 티스토리 오픈 API 사용 방법에 대해서 알아 보겠습니다. 1. 오픈 API 앱 등록하기 앱을 먼저 등록 합니다. 이용약관 체크하고 서비스명, 설명을 입력합니다. CallBack 란에는 본인 티스토리 주소를 입력해주세요! CallBack 주소(redirect-url)는 잠시 후에 인증코드 발급시 사용합니다. 등록버튼을 누르면 아래와 같이 방금 만든 API 키가 생성됩니다. App ID(client-id)와 Secret Key(client-secret) 값은 잠시 후에 인증코드, 토큰 발급시 사용합니다. 자, 이제 빨강색 화살표에 있는 오픈 API 가이드를 따라 해봅시다. 2. 인증 코드 발급 https://tistory.github.io/document-tistory-apis/ 인증코..

[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

[crontab] 쉘스크립트 실행시 Permission denied

$ sudo chmod +x auto-collect-data.sh 안녕하세요, 크론탭으로 쉘스크립트를 하나 돌리려고 하는데, 뭔가 하도 안되서 로그를 떨어뜨려보니 나타난 permission denied!! /bin/sh: /Users/...bala...bala.../auto-collect-data.sh: Permission denied 원인이 스크립트를 통해 생성되는 파일에 권한 문제인지 알았는데, "스크립트 파일 자체 실행권한이 없어서" 라고 하네요. 아래와 같이 명령어를 통해 해결했습니다. sudo chmod +x auto-collect-data.sh 감사합니다.

SW개발/macOS 2021.11.26

[python] pandas rolling 과 shift rolling

안녕하세요, pandas 에 있는 rolling 함수에 대해서 간략하게 포스팅 남깁니다. pd.concat([df['volume'], df['volume'].rolling(window=5).mean(), df['volume'].shift(1), df['volume'].shift(1).rolling(window=5).mean()], axis=1) 첫번째 컬럼 : volume row data 두번째 컬럼 : rolling(window=5) 평균값 세번째 컬럼 : volume row data 의 shift(1) 네번째 컬럼 : volume row data 의 shift(1) 의 rolling(window=5) 평균값

SW개발/python 2021.11.22

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

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

SW개발/python 2021.11.17

[python] pandas pivot_table 데이터프레임을 다루는 방법

오랜만에 포스팅을 남기네요. 오늘은 간단하게 pandas 중에서 피벗(pivot_table)을 사용할 때, 유용하게 쓸 수 있는 기능을 소개하고 기록해보려고 합니다. 제가 요즘 퀀트투자를 공부하고 있는데요. 주식 관련 데이터를 수집하고 가공하는 일(?)을 많이 하고 있습니다. 그 중에서 해외ETF 데이터를 다루면서 마주친 부분과 해결방법에 대해서 소개해 드리겠습니다. 1. 데이터 소개 개발환경은 주피터노트북이며, 데이터프레임에 대해서 간략하게 소개해드리면 인베스팅닷컴을 통해 해외ETF(SPY, TLT) 데이터를 수집하였으며, 월말(EOM), 연말(EOY), 월초(IOM) 그리고 월별수익(%) 컬럼 등으로 추가하여 가공했습니다. 2. pivot_table 활용 위 데이터프레임에서 index 컬럼을 기준으로..

SW개발/python 2021.11.07

[python] slack bot 메시지 보내는 법

slack은 클라우드 기반 팀 커뮤니케이션과 협업을 위한 툴입니다. 오늘은 slack bot 을 하나 만들고 python을 활용해 간단한 메시지 보내는 법에 대해서 알아보려고 합니다. 1. slack 가입 및 워크스페이스 만들기 우선 회원가입부터 해야겠죠? 구글 계정이 있다면 연동해서 사용할 수 있습니다. 저도 새로운 워크스페이스를 생성해 볼게요. 회사 또는 팀 이름을 입력 -> 진행하는 프로젝트 -> 소통을 위한 대상자 추가하는 과정을 거치게 됩니다. 저는 MySpace 라는 이름으로 워크스페이스를 생성했습니다. 자, 이제 워크스페이스 생성은 마쳤고, 메시지 전송을 위한 단계로 넘어가 보죠. 2. slack api 이번에는 slack api 사이트로 이동합니다. 아래 보이는 화면에서 "Create an..

SW개발/python 2021.10.06