본문 바로가기

Python52

amazon linux 2 - 파이썬 3.11 설치 sqlite와 ssl 사용시 문제 나올 수 있으니 주의 (아직 해결책 못찾음) ModuleNotFoundError: No module named '_sqlite3' ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002) --- 필요한 도구들 사전 설치 파이썬 3.10 부터는 openssl1.1.1 이상이 필요 (링크) sudo yum update -y sudo yum groupinstall "Development Tools" -y sudo yum erase openssl-devel -y sudo yum in.. 2023. 7. 10.
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.
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.
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.
pip 내장인 venv로 가상환경 구성 * 파이썬 설치 서로 다른 버전으로 2개 이상 설치 후 명령어로 확인 py -0 * 가상 환경 만들기 python -m venv myvenv 현재 경로에서 서브 폴더 myvenv 생성됨 다른 파이썬 버전으로 하려면 py -3.9 -m venv myvenv * 가상환경 진입 ctrl+shift+P > python select interpreter > myvenv 항목 선택 > 터미널 kill > 새 터미널 수동 진입하려면 myvenv\Scripts\activate 를 실행한다 * 주의1 마이너 버전 포함하면 생성 불가 (이유는 아직 모르겠음) py -3.9.12 -m venv myvenv * 주의2 가상 환경 경로에 띄어쓰기는 없게 하자 (c:\test folder\.. 이러면 안됨) 설치 안되는 확장들이.. 2022. 12. 27.