본문 바로가기

분류 전체보기223

tkinter - 입력란 내용 없으면 버튼 비활성화 예제에 따라 bind와 trace가 섞여있어서 햇갈렸으나 trace가 더 적절하다고 판단됨 구글 바드에 의하면 차이가 이렇다 bind와 trace는 모두 Tkinter에서 이벤트에 응답하는 데 사용되는 메서드이지만 작동 방식이 다릅니다. bind 메서드는 이벤트와 이벤트에 대한 응답으로 호출되는 함수를 연결하는 데 사용됩니다. trace 메서드는 변수의 값이 변경될 때마다 호출되는 함수를 연결하는 데 사용됩니다. 버튼 배치의 경우 그리드와 팩이 있는데 여기서는 팩 사용 (출처 : 뤼튼) pack(): pack은 요소를 부모 위젯 안에서 가능한 한 작은 공간에 맞추어 배치합니다. 위젯들은 기본적으로 상단에서 아래로 쌓이며, 옵션으로 왼쪽에서 오른쪽으로 배치할 수도 있습니다. pack은 간단한 인터페이스에 .. 2023. 5. 11.
판다스 치트시트 # 한글 깨짐 방지 (윈도우) plt.rcParams["font.family"] = "Malgun Gothic" plt.rcParams["axes.unicode_minus"] = False # 결측치 0으로 채우기 df = df.fillna(0) # 컬럼 리네임 df.columns = ["apple", "banana"] # 컬럼 선택 또는 순서 변경 df = df[["banana", "apple"]] # 정렬 df.sort_values(by=['age','name'], ascending=[True,False]) #x틱 회전 plt.xticks(rotation=45) # 모든 셀에 함수 적용하기 df = df.applymap(lambda x: x+5) # 누적영역 차트 모든 컬럼 선택 plt.stackpl.. 2023. 4. 27.
비동기로 웹크롤링 from bs4 import BeautifulSoup as bs import aiohttp import asyncio async def fetch(session, url, i): async with session.get(url) as res: html = await res.text() soup = bs(html, "html.parser") tag = soup.find("span", class_="title") # 첫번째 글제목만 print(f"{i+1} : {tag.text}") async def main(): BASE_URL = "https://myinbox.tistory.com/" urls = [f"{BASE_URL}?page={i}" for i in range(1, 11)] async with ai.. 2023. 4. 1.
[장고] 알아두면 좋은 내용 * 프로젝트 생성 별도로 경로 지정 안하면 하위 폴더를 루트로 사용함 https://learn.microsoft.com/ko-kr/training/modules/django-get-started/5-exercise-first-project * 사이트와 앱 메인 사이트의 자식으로 앱 폴더가 위치할거 같지만 실제로는 메인 사이트와 여러 앱이 동일 경로에 위치 개념적으로는 사이트 안에 설문조사 앱, 고객센터 앱 등으로 사용 * 뷰 용어는 뷰인데 실제로는 컨트롤러 뷰에서 HTML을 직접 심기도 가능하지만 일반적으로 모델과 템플릿 중간에서 중재하는 역할 * URL 루트에서 바로 처리 가능하긴 한데 앱으로 보낸 후 앱에서 처리하도록 하는 것이 관리적으로 용이 (앱이 늘어날 수 있으므로) 실제 주소 대신 변수 패턴으.. 2023. 2. 14.
[홈어시스턴트] 아이폰 배터리 부족시 구글홈 미니로 알리기 라즈베리파이에 도커 방식으로 홈어시스턴트 설치 후 아이폰 단축어를 통해 구글홈 미니 연동하기 데이터 관리용 폴더 생성 sudo mkdir -p /data/ha HA 설치 sudo docker run -d \ --name homeassistant \ --privileged \ --restart=unless-stopped \ -e TZ=Asia/Seoul \ -v /data/ha:/config \ --network=host \ ghcr.io/home-assistant/home-assistant:stable HA 실행 라즈베리IP:8123 아이폰 단축어 자동화 ---- https://www.home-assistant.io/installation/raspberrypi#install-home-assistant-c.. 2023. 1. 28.
pandas - 데이터프레임 변동 체크 주기적으로 실행하는 스크립트가 있는데 데이터프레임이 이전 값과 같은지 비교하려고 했다 처음엔 csv로 저장 후 해시값을 비교했는데 찾아보니 더 간단하게 구현 가능했다 import pandas as pd pkl_path = "./data/test.pkl" df1 = pd.DataFrame({"a": [1], "b": [1]}) df2 = pd.DataFrame({"a": [1], "b": [2]}) # 첫번째 df를 pickle 포맷으로 저장 df1.to_pickle(pkl_path) # 기존 피클 불러오기 df_old = pd.read_pickle(pkl_path) # 두번째 df와 비교 print(df2.equals(df_old)) 참고 - 파이썬 피클 https://aplab.tistory.com/e.. 2023. 1. 26.
아마존 리눅스 zsh 셋팅 zsh 설치 sudo yum install zsh 패스워드 없으면 생성 sudo passwd ec2-user 기본 쉘 변경 sudo yum install util-linux-user chsh -s $(which zsh) 터미널 재접속 후 기본 쉘 확인 (처음에 객관식 물어보면 0번) echo $SHELL oh-my-zsh 설치 sudo yum install git sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 다른 테마로 변경 vim ~/.zshrc # vscode에서는 code ~/.zshrc ZSH_THEME 항목 수정 (ex. ZSH_THEME="agnoster") 테마 리스.. 2023. 1. 26.
pandas - 특정 문구 포함된 행 삭제 lst = ["text1", "text2", "text3"] # 방법1 df = df[~df['column_name'].str.contains('|'.join(lst))] # 방법2 df = df[~df["column_name"].isin(lst)] lst 에 있는 문구 중 하나라도 일치하면 해당하는 행 삭제 https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.isin.html 2023. 1. 25.
matplotlib 한글 표시 폰트 다운로드 https://hangeul.naver.com/font/nanum 폰트 경로 찾기 import matplotlib as mpl print(mpl.matplotlib_fname()) 폰트 추가 /home/.../matplotlib/mpl-data/fonts/ttf 에 NanumGothic.ttf 추가 캐시 경로 찾기 import matplotlib as mpl print(mpl.get_cachedir()) 캐시 경로의 fontlist 파일 삭제 한글 셋팅 from matplotlib import rcParams rcParams["font.family"] = "NanumGothic" 참고 https://koosco.tistory.com/38 http://corazzon.github.io/mat.. 2023. 1. 18.