목록

'python' 82건

  • 이미지 합성하기
    프로그래밍 언어/Python · 댓글
    서로 다른 이미지를 적절히 합성하면 색다른 분위기의 이미지를 만들 수 있습니다. 여기서는 이미지의 불투명도(opacity)를 조절하여 다른 이미지와 합성하는 방법을 알아봅니다. 구체적으로는, 원본 이미지에 불투명한 검정색 이미지를 합성해서 명도를 어둡게 만들어 보겠습니다. 이미지 생성비주얼 스튜디오 코드에서 새로운 파일을 생성한 뒤, 파일명을 'step_2_2.py'로 변경합니다. 다음 코드를 입력하고, 대화형 창에서 실행하면 불투명도 60% 수준의 검정색 이미지가 화면에 출력됩니다.from PIL import ImageSIZE = (500, 500) # 03img_black = Image.new(mode="RGBA", size=SIZE, color=(0, 0, 0, 153)) # 04img_black[..
  • 이미지 크기 변경하기
    프로그래밍 언어/Python · 댓글
    이미지 위에 삽입된 문자열의 색이 이미지의 배경과 유사해서 가독성이 떨어진다면, 이미지의 명도를 조절해서 문자열의 색과 대비되게 할 수 있습니다. 이처럼 이미지의 명도를 높이거나 낮출 때는 알파 합성(alpha composite)이라는 기법을 활용하면 되는데, 쉽게 말하면 원본 이미지 위에 불투명한 색을 덧씌워 탁하게 만드는 것입니다. 이미지 정보 확인'img' 폴더의 'img_001.jpg' 파일의 이미지 크기와 형식, 색상 모드를 확인합니다. Image 객체의 속성을 화면에 출력하기만 하면 됩니다.비주얼 스튜디오 코드에서 새로운 파일을 생성하고 파일명을 'step2_1.py'로 변경합니다. 그리고 나서 다음과 같이 입력한 뒤, 대화형 창에서 실행합니다. 대화형 창에서 픽셀 단위로 표시된 이미지 크기..
  • 이미지 처리 기본 익히기
    프로그래밍 언어/Python · 댓글
    pillow 패키지를 사용해서 이미지를 불러와 대화형 창에서 출력합니다. 비주얼 스튜디오 코드에서 새로운 파일을 만들고 파일명을 'step_1_2.py'로 변경하세요. 'img' 폴더의 'img_001.jpg' 이미지 파일이 대화형 창에 보이는 것을 알 수 있습니다. ch_03/step_1_2.pyfrom PIL import Imagefrom step_1_1 import IMG_DIR # 이전에 작성한 모듈을 불러옵니다.img = Image.open(IMG_DIR / "img__001.jpg")img 실행결과 이미지에 문자열 추가불러온 이미지에 문자열을 추가하기 위해서는 생각보다 많은 것을 고려해야 합니다. 어떤 문자열을 추가할지를 비롯해서 문자열의 위치를 좌표로 설정하고, 크기와 폰트 등을 지정해야 합..
  • 이미지 불러오기
    프로그래밍 언어/Python · 댓글
    pillow 패키지는 직관적인 직관적인 명령어 덕분에 초보자도 사용하기 쉽고 imageio, scikit-image 등 다른 이미지 처리 패키지와 잘 호환되기 때문에, 다른 패키지와 결합하여 복잡한 이미지도 처리할 수 있습니다. 파이썬 패키지 준비하기 pathlib 패키지 pathlib 패키지를 사용하여 이번 장에서 쓸 폴더를 만듭니다. 'ch_03' 폴더를 만들고, 비주얼 스튜디오 코드에 새로운 파일을 생성하고, 파일명을 'step_1_1.py'로 변경합니다. 다음과 같이 코드를 입력하고 대화형 창에서 실행하면 소스 코드가 있는 위치의 하위 폴더로 'img', 'output' 폴더가 생성됩니다.from pathlib import PathWORK_DIR = Path(__file__).parentIMG_D..
  • 제목, 레이블, 범례 추가하기
    프로그래밍 언어/Python · 댓글
    seaborn 패키지를 사용하여 전체적인 디자인 스타일을 지정하고, 폰트를 설정해 보겠습니다. 또한 차트 제목과 분류별 누적 금액을 출력하여 한눈에 다양한 정보를 파악할 수 있도록 만들어 봅시다.새로운 파일을 생성하고 파일명을 'step_4_3.py'로 변경하세요. 다음과 같이 코드를 입력하고, 대화형 창에서 실행하면 자세한 정보가 표시된 파이 차트를 볼 수 있습니다.from pathlib import Pathimport matplotlib.pyplot as pltimport seaborn as snsfrom step_1 import OUT_DIR # 이전에 작성한 모듈을 불러옵니다.from step_4_2 import load_datadef custom_autopct(pct, total): rea..
  • 분류별 누적금액 시각화하기
    프로그래밍 언어/Python · 댓글
    시각화에는 다양한 유형이 있기 때문에 정보의 성격과 목적에 따라 정보 전달의 효과가 극대화되는 것을 잘 선택해야 합니다. 예를 들어 서로 다른 항목을 비교하거나 데이터의 추세를 부여주고 싶다면 바 차트(bar char)를, 분포나 상관관계를 보여 쥬고 싶다면 산점도(scatter plot)가 효과적입니다.전체 카드 지출 내역 중 분류별 누적 금액의 구성과 비율을 시각화하기 위해 데이터프레임을 파이 차트(pie chart)로 표현해 보겠습니다. matplotlib 패키지와 seeborn 패키지를 활용하여 파이 차트를 그려 봅니다. 데이터프레임 분할파이 차트는 너무 많은 항목을 시각화하기에는 적절하지 않으므로 차트에 표시할 데이터 개수를 적절히 조절하는 것이 중요합니다. 비주얼 스튜디오 코드에서 새로운 파일..
  • 분류별 누적 지출 합계 구하기
    프로그래밍 언어/Python · 댓글
    이제 데이터프레임의 인덱스를 열로 전환하고, 분류별 누적 지출 금액을 확인할 수 있는 액셀 파일로 저장해 봅시다. 데이터프레임의 인덱스를 일반 열로 전환하면 특정 열을 기준으로 데이터를 정렬하거나 그룹화할 때 용이하기 때문입니다. 그 다음에는 코드를 재사용할 수 있도록 정리해 저장하겠습니다. 데이터프레임 인덱스 재설정이전 단계에서 만든 데이터프레임 df_sort에서 분류 열은 데이터프레임의 인덱스로 설정되어 있습니다. 일반 열로 변경해 봅시다.함수 reset_index()는 데이터프레임의 인덱스를 일반 열로 전환하고, 0부터 시작하는 정수를 인덱스로 재설정합니다.소스 코드 'step_3_1.py'에 이어서 다음 코드를 추가한 뒤, 대화형 창에서 실행하세요. [실행결과]를 보면 '분류'열이 일반 열로 이동..
  • 집계 기준 추가하기
    프로그래밍 언어/Python · 댓글
    데이터프레임에 거래연월 집계 기준 추가∨ 함수 str.slice()를 사용한 데이터프레임 슬라이싱파이썬은 대괄호 [ ]와 인덱스를 사용해서 문자열을 슬라이싱할 수 있습니다.데이트프레임에서 대괄호는 말에 선택하는 연산자입니다. 데이터프레임에서 열 전체에 대해 문자열 슬라이싱을 적용하면 대괄호로 열을 선택한 뒤, 함수 str.slice()에 시작과 끝 인덱스를 전달하면 됩니다.df_raw["거래일시"].str.slice(0, 7) 데이터 쉽게 기준을 조금 더 세분화해 거래일시 열에서 연도와 월을 분리하고, 월별로 지출금액의 함계를 구할 수 있도록 만들어 봅시다. 함수 str.slice()를 사용하여 거래일시 열에서 연도와 월을 슬라이싱하고, 데이터프레임에 거래연월 열을 추가하면 됩니다. ch02/step3_..
  • 분류별 지출 합계 구하기
    프로그래밍 언어/Python · 댓글
    액셀에서 피벗 테이블(pick table)을 사용하면 데이터의 분류, 요약, 통계 등의 작업을 빠르고 편리하게 처리할 수 있습니다. 예를 들어 2024년 1분기 카드 명세서의 지출 내역을 분류 열을 기준으로 요약하면 카드 지출을 어디에 많이, 또는 적게 했는지 파악할 수 있습니다. 분류별 지출 합계 구하기∨ 문법 체크 pandas 패키지의 함수 pivot_table()pandas 패키지의 pivot_table() 함수는 매개변수의 값에 따라 다양한 옵션을 설정할 수 있습니다.pd.pivot_table( df, # 파벗 테이블을 만들 데이터프레임 index="row", # 피벗 테이블의 행이 될 집계 기준 열 columns="column", # 피벗 테이블의 열이 될 집계 기준 열 values="value..
  • 1분기 3개의 카드 명세서 하나로 취합하기
    프로그래밍 언어/Python · 댓글
    'ch_02/input' 폴더에 있는 5개의 카드 명세서 파일 '2024년1월.xlsx', '2024년2월.xlsx', '2024년3월.xlsx'를 하나로 취합해 봅시다.비주얼 스튜디오 코드에서 새로운 파일을 생성하고, 파일명을 'step_2_2.py'로 변경합니다. 다음과 같이 코드를 작성한 뒤, 대화형 창에서 실행하면 액셀 파일로 저장된 3개의 카드 명세서가 하나의 리스트로 출력됩니다.from pathlib import Pathimport pandas as pdfrom step_1 import IN_DIR, OUT_DIR # 이전에 작성한 모듈을 불러옵니다.result = [] # 5for xlsx_path in Path(IN_DIR).glob("2024년*월.xlsx"): # 6 df_raw ..
  • 월별 카드 지출 내역 분석 - 카드 명세서 다운로드
    프로그래밍 언어/Python · 댓글
    모든 데이터는 자료실(https://github.com/himoon/gopython)에서 다운로드할 수 있습니다. 자료실에 장별 프로젝트의 소스 코드와 입력 파일, 출력 결과과 모두 저장되어 있으므로 전체 폴더를 다운로드하고, 장 번호에 맞는 파일을 확인합니다. 입력 파일은 'input' 폴더에 출력 결과는 'output' 폴더에서 확인할 수 있습니다. 앞으로는 파이썬에서 액셀 파일을 다루기 위해 셀에 저장된 데이터를 데이터프레임(dataframe)으로 변환하여 저장할 것입니다. 데이터프레임은 pandas 패키지의 자료구조 중 하나로, 행과 열로 구성된 객체입니다. 파이썬에서 데이터프레임은 리스트 또는 딕셔너리를 활용해 생성하는 것이 일반적입니다. 리스트를 활용하여 생성한 데이터프레임import pand..
  • 보기 좋은 차트 만들기
    프로그래밍 언어/Python · 댓글 1
    matplotlib 패키지와 numpy 패키지를 활용해서 바 차트를 보기 좋게 만들어 보겠습니다. 비주얼 스튜디오 코드에서 새로운 파일을 생성하고 파일명을 'step_3_3.py'로 변경하세요. 코드를 입력한 뒤, 대화형 창에서 실행하면 'output' 폴더에 실행 결과가 png 파일로 생성됩니다.from pathlib import Pathimport matplotlib.pyplot as pltimport numpy as np # 3from step_2_1 import OUT_DIR # 이전에 작성한 모듈을 불러옵니더.from step_3_1 import load_plot_dataplot_data = load_plot_data()log_size = np.log(plot_data["size"]) # 8fi..

이미지 합성하기

서로 다른 이미지를 적절히 합성하면 색다른 분위기의 이미지를 만들 수 있습니다. 여기서는 이미지의 불투명도(opacity)를 조절하여 다른 이미지와 합성하는 방법을 알아봅니다. 구체적으로는, 원본 이미지에 불투명한 검정색 이미지를 합성해서 명도를 어둡게 만들어 보겠습니다. 이미지 생성비주얼 스튜디오 코드에서 새로운 파일을 생성한 뒤, 파일명을 'step_2_2.py'로 변경합니다. 다음 코드를 입력하고, 대화형 창에서 실행하면 불투명도 60% 수준의 검정색 이미지가 화면에 출력됩니다.from PIL import ImageSIZE = (500, 500) # 03img_black = Image.new(mode="RGBA", size=SIZE, color=(0, 0, 0, 153)) # 04img_black[..

이미지 크기 변경하기

이미지 위에 삽입된 문자열의 색이 이미지의 배경과 유사해서 가독성이 떨어진다면, 이미지의 명도를 조절해서 문자열의 색과 대비되게 할 수 있습니다. 이처럼 이미지의 명도를 높이거나 낮출 때는 알파 합성(alpha composite)이라는 기법을 활용하면 되는데, 쉽게 말하면 원본 이미지 위에 불투명한 색을 덧씌워 탁하게 만드는 것입니다. 이미지 정보 확인'img' 폴더의 'img_001.jpg' 파일의 이미지 크기와 형식, 색상 모드를 확인합니다. Image 객체의 속성을 화면에 출력하기만 하면 됩니다.비주얼 스튜디오 코드에서 새로운 파일을 생성하고 파일명을 'step2_1.py'로 변경합니다. 그리고 나서 다음과 같이 입력한 뒤, 대화형 창에서 실행합니다. 대화형 창에서 픽셀 단위로 표시된 이미지 크기..

이미지 처리 기본 익히기

pillow 패키지를 사용해서 이미지를 불러와 대화형 창에서 출력합니다. 비주얼 스튜디오 코드에서 새로운 파일을 만들고 파일명을 'step_1_2.py'로 변경하세요. 'img' 폴더의 'img_001.jpg' 이미지 파일이 대화형 창에 보이는 것을 알 수 있습니다. ch_03/step_1_2.pyfrom PIL import Imagefrom step_1_1 import IMG_DIR # 이전에 작성한 모듈을 불러옵니다.img = Image.open(IMG_DIR / "img__001.jpg")img 실행결과 이미지에 문자열 추가불러온 이미지에 문자열을 추가하기 위해서는 생각보다 많은 것을 고려해야 합니다. 어떤 문자열을 추가할지를 비롯해서 문자열의 위치를 좌표로 설정하고, 크기와 폰트 등을 지정해야 합..

이미지 불러오기

pillow 패키지는 직관적인 직관적인 명령어 덕분에 초보자도 사용하기 쉽고 imageio, scikit-image 등 다른 이미지 처리 패키지와 잘 호환되기 때문에, 다른 패키지와 결합하여 복잡한 이미지도 처리할 수 있습니다. 파이썬 패키지 준비하기 pathlib 패키지 pathlib 패키지를 사용하여 이번 장에서 쓸 폴더를 만듭니다. 'ch_03' 폴더를 만들고, 비주얼 스튜디오 코드에 새로운 파일을 생성하고, 파일명을 'step_1_1.py'로 변경합니다. 다음과 같이 코드를 입력하고 대화형 창에서 실행하면 소스 코드가 있는 위치의 하위 폴더로 'img', 'output' 폴더가 생성됩니다.from pathlib import PathWORK_DIR = Path(__file__).parentIMG_D..

제목, 레이블, 범례 추가하기

seaborn 패키지를 사용하여 전체적인 디자인 스타일을 지정하고, 폰트를 설정해 보겠습니다. 또한 차트 제목과 분류별 누적 금액을 출력하여 한눈에 다양한 정보를 파악할 수 있도록 만들어 봅시다.새로운 파일을 생성하고 파일명을 'step_4_3.py'로 변경하세요. 다음과 같이 코드를 입력하고, 대화형 창에서 실행하면 자세한 정보가 표시된 파이 차트를 볼 수 있습니다.from pathlib import Pathimport matplotlib.pyplot as pltimport seaborn as snsfrom step_1 import OUT_DIR # 이전에 작성한 모듈을 불러옵니다.from step_4_2 import load_datadef custom_autopct(pct, total): rea..

분류별 누적금액 시각화하기

시각화에는 다양한 유형이 있기 때문에 정보의 성격과 목적에 따라 정보 전달의 효과가 극대화되는 것을 잘 선택해야 합니다. 예를 들어 서로 다른 항목을 비교하거나 데이터의 추세를 부여주고 싶다면 바 차트(bar char)를, 분포나 상관관계를 보여 쥬고 싶다면 산점도(scatter plot)가 효과적입니다.전체 카드 지출 내역 중 분류별 누적 금액의 구성과 비율을 시각화하기 위해 데이터프레임을 파이 차트(pie chart)로 표현해 보겠습니다. matplotlib 패키지와 seeborn 패키지를 활용하여 파이 차트를 그려 봅니다. 데이터프레임 분할파이 차트는 너무 많은 항목을 시각화하기에는 적절하지 않으므로 차트에 표시할 데이터 개수를 적절히 조절하는 것이 중요합니다. 비주얼 스튜디오 코드에서 새로운 파일..

분류별 누적 지출 합계 구하기

이제 데이터프레임의 인덱스를 열로 전환하고, 분류별 누적 지출 금액을 확인할 수 있는 액셀 파일로 저장해 봅시다. 데이터프레임의 인덱스를 일반 열로 전환하면 특정 열을 기준으로 데이터를 정렬하거나 그룹화할 때 용이하기 때문입니다. 그 다음에는 코드를 재사용할 수 있도록 정리해 저장하겠습니다. 데이터프레임 인덱스 재설정이전 단계에서 만든 데이터프레임 df_sort에서 분류 열은 데이터프레임의 인덱스로 설정되어 있습니다. 일반 열로 변경해 봅시다.함수 reset_index()는 데이터프레임의 인덱스를 일반 열로 전환하고, 0부터 시작하는 정수를 인덱스로 재설정합니다.소스 코드 'step_3_1.py'에 이어서 다음 코드를 추가한 뒤, 대화형 창에서 실행하세요. [실행결과]를 보면 '분류'열이 일반 열로 이동..

집계 기준 추가하기

데이터프레임에 거래연월 집계 기준 추가∨ 함수 str.slice()를 사용한 데이터프레임 슬라이싱파이썬은 대괄호 [ ]와 인덱스를 사용해서 문자열을 슬라이싱할 수 있습니다.데이트프레임에서 대괄호는 말에 선택하는 연산자입니다. 데이터프레임에서 열 전체에 대해 문자열 슬라이싱을 적용하면 대괄호로 열을 선택한 뒤, 함수 str.slice()에 시작과 끝 인덱스를 전달하면 됩니다.df_raw["거래일시"].str.slice(0, 7) 데이터 쉽게 기준을 조금 더 세분화해 거래일시 열에서 연도와 월을 분리하고, 월별로 지출금액의 함계를 구할 수 있도록 만들어 봅시다. 함수 str.slice()를 사용하여 거래일시 열에서 연도와 월을 슬라이싱하고, 데이터프레임에 거래연월 열을 추가하면 됩니다. ch02/step3_..

분류별 지출 합계 구하기

액셀에서 피벗 테이블(pick table)을 사용하면 데이터의 분류, 요약, 통계 등의 작업을 빠르고 편리하게 처리할 수 있습니다. 예를 들어 2024년 1분기 카드 명세서의 지출 내역을 분류 열을 기준으로 요약하면 카드 지출을 어디에 많이, 또는 적게 했는지 파악할 수 있습니다. 분류별 지출 합계 구하기∨ 문법 체크 pandas 패키지의 함수 pivot_table()pandas 패키지의 pivot_table() 함수는 매개변수의 값에 따라 다양한 옵션을 설정할 수 있습니다.pd.pivot_table( df, # 파벗 테이블을 만들 데이터프레임 index="row", # 피벗 테이블의 행이 될 집계 기준 열 columns="column", # 피벗 테이블의 열이 될 집계 기준 열 values="value..

1분기 3개의 카드 명세서 하나로 취합하기

'ch_02/input' 폴더에 있는 5개의 카드 명세서 파일 '2024년1월.xlsx', '2024년2월.xlsx', '2024년3월.xlsx'를 하나로 취합해 봅시다.비주얼 스튜디오 코드에서 새로운 파일을 생성하고, 파일명을 'step_2_2.py'로 변경합니다. 다음과 같이 코드를 작성한 뒤, 대화형 창에서 실행하면 액셀 파일로 저장된 3개의 카드 명세서가 하나의 리스트로 출력됩니다.from pathlib import Pathimport pandas as pdfrom step_1 import IN_DIR, OUT_DIR # 이전에 작성한 모듈을 불러옵니다.result = [] # 5for xlsx_path in Path(IN_DIR).glob("2024년*월.xlsx"): # 6 df_raw ..

월별 카드 지출 내역 분석 - 카드 명세서 다운로드

모든 데이터는 자료실(https://github.com/himoon/gopython)에서 다운로드할 수 있습니다. 자료실에 장별 프로젝트의 소스 코드와 입력 파일, 출력 결과과 모두 저장되어 있으므로 전체 폴더를 다운로드하고, 장 번호에 맞는 파일을 확인합니다. 입력 파일은 'input' 폴더에 출력 결과는 'output' 폴더에서 확인할 수 있습니다. 앞으로는 파이썬에서 액셀 파일을 다루기 위해 셀에 저장된 데이터를 데이터프레임(dataframe)으로 변환하여 저장할 것입니다. 데이터프레임은 pandas 패키지의 자료구조 중 하나로, 행과 열로 구성된 객체입니다. 파이썬에서 데이터프레임은 리스트 또는 딕셔너리를 활용해 생성하는 것이 일반적입니다. 리스트를 활용하여 생성한 데이터프레임import pand..

보기 좋은 차트 만들기

matplotlib 패키지와 numpy 패키지를 활용해서 바 차트를 보기 좋게 만들어 보겠습니다. 비주얼 스튜디오 코드에서 새로운 파일을 생성하고 파일명을 'step_3_3.py'로 변경하세요. 코드를 입력한 뒤, 대화형 창에서 실행하면 'output' 폴더에 실행 결과가 png 파일로 생성됩니다.from pathlib import Pathimport matplotlib.pyplot as pltimport numpy as np # 3from step_2_1 import OUT_DIR # 이전에 작성한 모듈을 불러옵니더.from step_3_1 import load_plot_dataplot_data = load_plot_data()log_size = np.log(plot_data["size"]) # 8fi..