Python

Django Project ToDoList - 2

개요

  • Django 한 그릇 뚝딱 교재의 내용에서 멀티캠퍼스 강의에 맞게 일부 수정함
  • 2019년 버전이고 현재는 2023년이기 때문에 소스코드 변경 사항이 필요할 거 같아서 글을 남김

교재 홍보

Untitled

Step 01 - 이전 내용 확인

Step 02 - HTML 템플릿 사용

  • HTML과 CSS가 적용된 기본 템플릿은 다음 github 저장소에서 다운로드 받을 수 있다.

  • my_to_do_app 폴더에 가면 templates 폴더는 처음에는 존재하지 않는다. 따라서, 새로운 폴더를 생성하여 폴더명을 templates라고 명명한다.

Django Project ToDoList - 1

개요

  • Django 한 그릇 뚝딱 교재의 내용에서 멀티캠퍼스 강의에 맞게 일부 수정함
  • 2019년 버전이고 현재는 2023년이기 때문에 소스코드 변경 사항이 필요할 거 같아서 글을 남김

교재 홍보

Untitled

Step 01 - 깃허브 Repo 생성

  • 아래와 같이 깃허브에서 Repo를 생성한다.
  • Repo명 : ToDoList-with-Django

Untitled

Step 02 - 바탕화면으로 Git Clone

  • 이 때 중요한 것은 본인 경로에 한글이 없도록 하는 것이 중요하다.
  • 간혹 한글이 있는 경우 인코딩 문제로 라이브러리 설치 등 되지 않을 수가 있다.
  • 복사할 때는 $ 는 제외한다.
$ git clone https://github.com/your_account_id/ToDoList-with-Django.git

Untitled

(파이썬) 빅데이터 분석기사 실기 - 제2유형, 회귀

작업형 2유형 최종정리

  • 작업형1 : 3문제 (30점), 데이터 전처리
  • 작업형2 : 1문제 (40점), 분류/회귀 예측 모델링
  • 작업형3 : 2문제 (30점), 가설 검정

주요 라이브러리

  • palmerpenguins : 팔머펭귄 데이터셋의 목표는 iris 데이터셋의 대안으로 데이터 탐색 및 시각화를 위한 데이터셋 제공.
  • scikit-learn : 머신러닝을 위한 라이브러리
  • lightgbm : LightGBM은 Microsoft에서 개발한 오픈 소스 기계 학습 라이브러리로, 대용량 데이터셋에서 빠른 속도와 높은 성능을 제공하는 것이 특징

주의

  • 각 코드에 대한 설명은 별도로 하지 않습니다.

데이터 파일 불러오기

import pandas as pd 
from palmerpenguins import load_penguins 

penguins = load_penguins()
penguins['ID'] = penguins.reset_index().index + 1
penguins.head()

Untitled

(파이썬) 빅데이터 분석기사 실기 - 제2유형, 분류

작업형 2유형 최종정리

  • 작업형1 : 3문제 (30점), 데이터 전처리
  • 작업형2 : 1문제 (40점), 분류/회귀 예측 모델링
  • 작업형3 : 2문제 (30점), 가설 검정

주요 라이브러리

  • palmerpenguins : 팔머펭귄 데이터셋의 목표는 iris 데이터셋의 대안으로 데이터 탐색 및 시각화를 위한 데이터셋 제공.
  • scikit-learn : 머신러닝을 위한 라이브러리
  • lightgbm : LightGBM은 Microsoft에서 개발한 오픈 소스 기계 학습 라이브러리로, 대용량 데이터셋에서 빠른 속도와 높은 성능을 제공하는 것이 특징

주의

  • 각 코드에 대한 설명은 별도로 하지 않습니다.

데이터 불러오기

import pandas as pd 
from palmerpenguins import load_penguins 

penguins = load_penguins()
penguins['ID'] = penguins.reset_index().index + 1
penguins.head()

Untitled

(파이썬) 빅데이터 분석기사 실기 준비 - 제3유형

작업형 3유형 최종정리

  • 작업형1 : 3문제 (30점), 데이터 전처리
  • 작업형2 : 1문제 (40점), 분류/회귀 예측 모델링
  • 작업형3 : 2문제 (30점), 가설 검정

라이브러리 확인

  • 파이썬에서 가설검정을 위한 통계와 관련된 라이브러리는 크게 2가지이다.
    • scipy : SciPy는 수치 계산, 최적화, 선형 대수, 신호 및 이미지 처리, 통계 분석 등과 같은 과학적 계산 작업을 수행하는 데 사용됨
    • statsmodels : Statsmodels는 통계 분석과 추정을 위한 파이썬 라이브러리로, 선형 회귀, 로지스틱 회귀, 시계열 분석, 비모수적 추정 등 다양한 통계 모델을 지원함.
  • SciPy와 Statsmodels는 각각의 독립성과 기능을 가지고 있으며, 과학적 계산과 통계 분석을 위한 파이썬 생태계에서 함께 사용되는 보완적인 라이브러리임.

주의

  • 여기에서는 각 검정의 구체적인 원리 설명은 하지 않는다.
  • 코드 위주로만 확인을 하도록 한다.

One Sample T-Test

  • 가설검정
    • 귀무가설 : 붓꽃의 sepal_length의 평균은 5.5이다.
    • 대립가설 : 붓꽃의 sepal_length의 평균은 5.5이 아니다.
import seaborn as sns
import pandas as pd

iris_df = sns.load_dataset("iris")
iris_df.head()

Untitled

Python Pandas 날짜 데이터 다루기

개요

  • 연도, 월, 주만 있는 컬럼을 날짜 데이터 타입으로 변경하려면 어떻게 해야할까?
  • 약간의 트릭이 필요하다

데이터 생성

  • 가상의 데이터를 생성한다.
import pandas as pd

data = [
    {"year": 2020, "month": 1, "week": 2, "company" : "A회사", "revenue_pct" : 49},
    {"year": 2020, "month": 1, "week": 2, "company" : "B회사", "revenue_pct" : 51},
    {"year": 2021, "month": 1, "week": 2, "company" : "A회사", "revenue_pct" : 37},
    {"year": 2021, "month": 1, "week": 2, "company" : "B회사", "revenue_pct" : 63},
    {"year": 2022, "month": 12, "week": 1, "company" : "A회사", "revenue_pct" : 70},
    {"year": 2022, "month": 12, "week": 1, "company" : "B회사", "revenue_pct" : 30},
]

df = pd.DataFrame(data)
df

Untitled

ChatGPT 방식

  • chatGPT에서 알려준 방식으로 진행해본다.
df["date"] = pd.to_datetime(df["year"].astype(str) + df["week"].astype(str) + '1', format="%Y%W%w")
df

Untitled

  • 기대했던 것은 2022-12-1 일 방식인데, 2022-01-03이다.
  • 만약, 전체데이터가 있다면, date 날짜가 중복될 수 있다.

수정된 방식

  • 아래와 같이 수정하도록 한다.
    • 두번째 라인 코드 7-6 은 일종의 특정 일자를 지정하는 것이다.
df["date"] = pd.to_datetime(df["year"].astype(str) + "-" + df["month"].astype(str))
df["date"] = df["date"] + pd.to_timedelta(df["week"] * 7 - 6, unit="D")
df

Untitled

Streamlit Matplotlib 한글폰트 적용 예제

Streamlit Matplotlib-Seaborn 한글폰트 적용

개요

  • 배포 시, matplotlib & seaborn 한글 폰트 적용 하는 방법에 대해 알아본다.
  • 나눔고딕 폰트를 적용해본다.

폰트 다운로드

Untitled

개발환경 세팅

  • git clone 명령어를 활용하여 프로젝트 repo를 다운로드 받는다.

Untitled

  • 가상환경을 설정한다.
    • virtualenv venv 실행한다.
    • source venv/Scripts/activate 실행하여 가상환경에 접속한다.
$ virtualenv venv
created virtual environment CPython3.9.13.final.0-64 in 606ms
  creator CPython3Windows(dest=C:\Users\YONSAI\Desktop\streamlit-korean-fonts\venv, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=C:\Users\YONSAI\AppData\Local\pypa\virtualenv)
    added seed packages: pip==23.1.2, setuptools==67.6.1, wheel==0.40.0
  activators BashActivator,BatchActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
$ source venv/Scripts/activate
(venv)
$ 
  • requirements.txt 파일에 다음 라이브러리만 설치한다.
streamlit
matplotlib
seaborn
pandas
numpy

폰트 폴더 설정

  • customFonts 폴더를 만들고 다운로드 받은 폴더를 추가한다.

Untitled

Matplotlib 한글폰트 적용 예제 - Windows 10

강의소개

개요

  • 한글폰트를 다운로드 받아서 matplotlib에 적용하는 코드를 작성해본다.
  • 주요 코드를 기억해서 업무에 활용해보도록 한다.

폰트 다운로드

Untitled

  • 스크롤을 내리면 TTF 다운로드 버튼을 클릭한다.

Untitled

폰트 설치

  • 다운로드 받은 폰트를 압축을 푼다.

Untitled

Docker Streamlit Sample

개요

  • 도커를 활용하여 Streamlit 배포를 진행해본다.
  • Dockerfile의 의미에 대해 이해한다.

Dockerfile

  • Docker 이미지를 빌드하기 위한 일련의 명령어를 포함하는 텍스트 파일
  • 컨테이너에서 애플리케이션이 실행될 때 필요한 환경과 종속성을 정의하는 방법을 제공
  • 패키지 설치, 파일 복사 및 환경 변수 설정 등의 지시어가 포함

사전준비

소스코드 예제

  • 소스코드는 크게 아래와 같이 작성했다.
  • 먼저 app.py는 아래와 같다.
import numpy as np 
import pandas as pd 
import matplotlib 
import sklearn 
import scipy
import plotly
import streamlit as st

def main():
    st.write(np.__version__)
    st.write(pd.__version__)
    st.write(matplotlib.__version__)
    st.write(sklearn.__version__)
    st.write(scipy.__version__)
    st.write(plotly.__version__)

if __name__ == "__main__":
    main()
  • 그 다음은 requirements.txt 파일을 작성한다.
streamlit
numpy
scipy
pandas
matplotlib
plotly
scikit-learn
  • 작성된 코드가 잘 실행되는지 로컬호스트에서 확인을 한다.
$ streamlit run app.py 

  You can now view your Streamlit app in your browser.

  Local URL: http://localhost:8501
  Network URL: http://192.168.0.49:8501

Untitled

Streamlit & ChatGPT API 배포 예제

강의소개

개요

API Key 생성

  • 아래 화면에서 View API Keys를 클릭한다.

Untitled

  • 아래 화면에서 Create new secret key 버튼을 클릭한다.

Untitled