pandas의 read_csv 함수에 사용되는 경로 문자열 앞에 r을 붙이는 이유를 다룹니다. 2022. 12. 5 최초작성 read_csv 함수에 경로 문자열을 추가시 디렉토리 구분자로 \를 사용할 경우에 문제가 생길 수 있습니다. 디렉토리 이름이 n으로 시작하면 \n이 이스케이프 문자로 인식되어 문제가 되어 다음처럼 에러가 발생합니다. import pandas as pd df = pd.read_csv('.\new\test.csv') Traceback (most recent call last): File "d:\code\Python\pandas_read_csv.py", line 4, in df = pd.read_csv('.\new\test.csv') File "C:\Users\webnautes\mini..

pandas의 DataFrame에서 숫자가 아닌 값을 0으로 처리하는 예제입니다. 2023. 6. 17 최초작성 import pandas as pd # DataFrame 생성 df = pd.DataFrame([[1.5, '2.7', '3.2'], ['4.1', 5, '6.0']]) print(df) print() 해당 열의 값이 정수나 실수가 아니면 0으로 변경합니다. df[0] = df[0].apply(lambda x: x if isinstance(x, (int, float)) else 0) df[1] = df[1].apply(lambda x: x if isinstance(x, (int, float)) else 0) df[2] = df[2].apply(lambda x: x if isinstance(x,..
groupby를 사용하여 특정열 기준으로 DataFrame의 데이터 그룹 나누는 Pandas 예제 코드입니다. 2022. 10. 21 최초작성 import pandas as pd # DataFrame은 2개의 컬럼으로 구성되며 alphabet 컬럼의 값을 기준으로 그룹을 나누려고 합니다. data = pd.DataFrame([[1, 'a'],[2, 'a'],[3,'b'],[4,'b'],[5,'b'],[4,'c']], columns=['number', 'alphabet']) print(data) number alphabet 0 1 a 1 2 a 2 3 b 3 4 b 4 5 b 5 4 c # alphabet 컬럼의 값을 기준으로 그룹으로 묶을 수 있도록 합니다. groups = data.groupby('al..
Python에서 Ctrl+C를 감지하는 예제 코드입니다. 윈도우와 우분투에서 동작이 됩니다. 2022. 12. 15 최초작성 프로그램을 실행하면 아무 출력없이 대기상태가 되는데 Ctrl+C를 누르면 프로그램이 종료합니다. import signal import sys # Ctrl+C 감지시 실행되는 함수입니다. def signal_handler(sig, frame): # 메시지를 출력하고 프로그램을 종료합니다. print('You pressed Ctrl+C!') sys.exit(0) # Ctrl+C를 누른것을 감지하면 signal_handler 함수를 호출하도록 합니다. signal.signal(signal.SIGINT, signal_handler) print('Press Ctrl+C') # 무한 루프로 ..

miniconda/anaconda에서 사용하는 디스크 크기를 줄이는 방법에 대해 다룹니다. 2023. 9. 10 최초작성 /home/사용자이름/miniconda3/pkgs 디렉토리(Anaconda 에선 다른 경로)는 Miniconda (또는 Anaconda) 환경에서 패키지들을 설치할 때 임시적으로 다운로드 받은 파일들이 저장되는 위치입니다. 패키지를 설치한 후에는 필요하지 않으므로 디스크 공간을 확보하기 위해 일부를 지울 수 있습니다. 우선 다음 명령으로 사용중인 디스크 공간의 크기를 체크해봅니다. anaconda를 사용중이라면 경로에서 miniconda3를 anaconda3로 변경하면 될 것입니다. du -sh ~/miniconda3/pkgs/ du -sh ~/anaconda3/pkgs/ 확인해보니 ..

하나의 스레드에서 큐에 데이터를 넣고 다른 쓰레드에서 큐에서 데이터를 꺼내는 간단한 예제 코드입니다. 아래 링크를 참고했습니다. https://docs.python.org/3/library/queue.html 2022. 09. 03 최초작성 2023. 01. 21 큐 모듈 변경. import threading from multiprocessing import Queue def producer(): count = 0 while True: lock.acquire() # 전역 변수 접근을 금지합니다. if not q.full(): # 큐가 꽉차지 않았다면 count = count +1 q.put_nowait(count) # 큐에 데이터를 넣습니다. print(f'push item {count}') lock.r..

Jupyter notebook에서 plotly를 사용하는 예제 코드입니다. 2022. 10. 23 최초작성 필요한 패키지를 설치해야 합니다. pip install plotly nbformat 클래스별 샘플 개수를 막대 그래프로 그리는 예제코드입니다. import plotly.graph_objs as go import plotly yes = 100 no = 25 trace = go.Bar(x = (no, yes), y = ['No', 'Yes'], orientation = 'h', opacity = 0.8, marker=dict( color=['gold', 'lightskyblue'], line=dict(color='#000000',width=1.5))) layout = dict(title = 'Count..
Pandas의 read_csv 함수의 느린 속도를 개선하는 방법을 다룹니다. 2022. 03. 11 최초작성 csv 파일을 하나 읽어서 작업할 때에는 Pandas의 read_csv 함수가 느리다는 것을 알지 못했는데 대량의 csv 파일을(정확히는 196,032개) 로드해보니 느리다는 것을 알 수 있었습니다. 개선할 방법을 찾아보니 read_csv의 engine 아규먼트에 pyarrow를 지정하는 방법이 있었습니다. 앞에서 했던 196,032개의 csv 파일을 로드하는 시간이 3분에 1로 감소했습니다. df = pd.read_csv("large.csv", engine="pyarrow") 속도는 빨라지지만 단점이 있다면 기존 read_csv와 완벽히 호환이 안되서 nrows 같은 아규먼트를 사용할 수 없습니..

하나의 figure안에 여러 개의 이미지를 출력하는 예제코드입니다. figure 안에 여러 개의 subplot이 존재할 수 있고 subplot마다 하나의 그래프나 이미지가 그려지게 됩니다. 2022. 10. 19 최초작성 import cv2 import numpy as np import matplotlib.pyplot as plt # 가로 길이, 세로 길이. 인치 단위 plt.figure(figsize=(7, 10)) for i in range(20): # 열개수 4개, 행 개수 5개 짜리 그리드를 생성한 후, 인덱스 i+1 번째를 사용 plt.subplot(5, 4, i + 1) # 빈 이미지에 인덱스 숫자를 출력 img_empty = np.zeros((150,150,1), dtype=np.uint8)..
Pandas에서 drop을 사용하여 DataFrame의 열 또는 행을 삭제하는 예제입니다. 2022. 10. 31 최초작성 import pandas as pd df = pd.DataFrame({ 'alphabet': ['a', 'b', 'c', 'd'], 'integer' : [1, 2, 3, 4], 'blood type': ['A', 'B', 'AB', 'O'], }) print(df) ''' alphabet integer blood type 0 a 1 A 1 b 2 B 2 c 3 AB 3 d 4 O ''' # 행을 지우려면 행 인덱스 번호와 axis=0을 사용해야 합니다. # 두번째, 세번째 행이 삭제됩니다. df = df.drop([1,2], axis=0) print(df) ''' alphabet ..