파이썬

프로그래머스 AI 데브코스 5기/CS

Django 시작하기

Make Website with django Model, View, and Template 1. Django 시작하기 Python 기반 웹 프레임워크 장고 플라스크 모두 같은 프레임워크지만 지향하는 바가 다르다. 플라스크는 마이크로(최소한의 기능을 갖고 있음), 반명 장고는 거의 모든것이 내장되있는 스타일 Django 가상환경 설치하기 pip3 install virtualenv python3 -m virtualenv 가상환경 실행 후 pip install django(반드시 가상 환경 진입 상태인것을 확인하기) 가상환경 실행 source venv/bin/activate(맥의 경우) pip freeze를 통해 제대로 설치됫나 확인하기 django-admin startproject manage.py를 통해 ..

Programming/Django

내비게이션 바와 푸터 모듈화하기

내비게이션 바 버튼에 링크 추가하기 blog/tests.py def navbar_test(self, soup): navbar = soup.nav self.assertIn('Blog', navbar.text) self.assertIn('About Me', navbar.text) logo_btn = navbar.find('a', text="SangHui's Blog") self.assertEqual(logo_btn.attrs['href'], '/') home_btn = navbar.find('a', text='Home') self.assertEqual(home_btn.attrs['href'], '/') blog_btn = navbar.find('a', text='Blog') self.assertEqual(b..

프로그래머스 AI 데브코스 5기/Data study

Seaborn

Seaborn matplotlib을 기반으로 더 다양한 시각화 방법을 제공하는 라이브러리 커널밀도그림 카운트그림 캣그림 스트립그림 히트맵 Seaborn import 하기 import seaborn as sns 커널밀도그림(Kernel Density Plot) 히스토그램과 같은 연속적인 분포를 곡선화해서 그린 그림 # in Histogram x = np.arange(0, 22, 2) y = np.random.randint(0, 20, 20) plt.hist(y, bins=x) plt.show() # kdeplot sns.kdeplot(y, shade=True) plt.show() 카운트그림(Count Plot) 범주형 column의 빈도수를 시각화 -> Groupby 후의 도수를 비교하는 것과 동일 vot..

프로그래머스 AI 데브코스 5기/Data study

Matplotlib으로 데이터 시각화 하기

1. Matplotlib 시작하기 파이썬의 데이터 시각화 라이브러리 cf) 라이브러리 vs 프레임워크 matplotlib pip install matplotlib %matplotlib inline을 통해서 활성화 import numpy as np import pandas as pda import matplotlib as plt %matplotlib inline 2. Case Study with Arguments plt.plot([1,2,3,4,5]) # 꺾은선 그래프. 실제 plotting을 하는 함수 y=x+1 plt.show() #plt를 확인하는 명령 figsize: Figure(도면)의 크기 조절 기본값 가로, 세로 72픽셀이라고 함 plt.figure(figsize=(6,6)) # plottin..

프로그래머스 AI 데브코스 5기/Data study

Pandas 시작하기

⭐ 수업에 사용된 데이터셋 : https://www.kaggle.com/datasets/imdevskp/corona-virus-report?resource=download COVID-19 Dataset Number of Confirmed, Death and Recovered cases every day across the globe www.kaggle.com 1. Pandas 시작하기 prerequisite: table 행과 열을 이용해서 데이터를 저장하고 관리하는 자료구조(컨테이너) 주로 행은 개체, 열은 속성을 나타냄 판다스 설치하기 pip install pandas 판다스 임포트 import pandas as pd 2. Pandas로 1차원 데이터 다루기 - Series 1-D labled arra..

프로그래머스 AI 데브코스 5기/CS

트리(Trees)

정점(node) 과 간선(edge)을 이용하여 데이터의 배치 형태를 추상화한 자료 구조 루트(root) 노드 리프(Leaf) 노드 부모(Parent) 노드와 자식(Child) 노드 노드의 수준(level) 트리의 높이(Height) = 최대수준(level) + 1, 깊이(depth) 라고도 함 부분 트리(서브 트리 - Subtree) 노드의 차수(Degree) - 자식(서브트리)의 수 이진 트리(Binary Tree) 모든 노드의 차수가 2 이하인 트리 재귀적으로 정의할 수 있음 루트 노드 + 왼쪽 서브 트리 + 오른쪽 서브트리(단, 이 떄 왼쪽과 오른쪽 서브트리 또한 이진 트리) 포화 이진 트리(Full Binary Tree) 모든 레벨에서 노드들이 모두 채워져 있는 이진 트리(높이가 k이고 노드의 개..

카테고리 없음

우선순위 큐(Priority Queue)

우선순위 큐(Priority Queue) 큐가 FIFO(First In First Out) 방식을 따르지 않고 원소들의 우선순위에 따라 큐에서 빠져나오는 방식 활용 운영체제의 CPU 스케줄러 구현방식 Enqueue 할 때 우선순위 순서를 유지하도록 -> 이쪽이 약간 더 유리함 Dequeue 할 때 우선순위 높은 것을 선택 양방향 연결리스트를 이용한 우선순위 큐 구현 class Node: def __init__(self, item): self.data = item self.prev = None self.next = None class DoublyLinkedList: def __init__(self): self.nodeCount = 0 self.head = Node(None) self.tail = Node(..

프로그래머스 AI 데브코스 5기/CS

큐(Queues)

큐(Queue) 자료(data element)를 보관할 수 있는 (선형) 구조 단, 넣을 때에는 한 쪽 끝에서 밀어 넣어야 하고 - enqueue 연산 꺼낼 때에는 반대 쪽에서 뽑아 꺼내야 하는 제약이 있음 - dequeue 연산 선입선출(FIFO - First In First Out) 특징을 가지는 선형 자료구조 큐의 추상적 자료구조 구현 배열(Array)를 이용하여 구현 class ArrayQueue: def __init__(self): self.data = [] def size(self): return len(self.data) def isEmpty(self): return self.size() == 0 def enqueue(self, item): self.data.append(item) def d..

프로그래머스 AI 데브코스 5기/CS

스택(stack)

스택(Stack) 자료(data element)를 보관할 수 있는 선형 구조 단, 넣을 때에는 한 쪽 끝에서 밀어 넣어야 하고(Push 연산) 꺼낼 때에는 같은 쪽에서 뽑아 꺼내야 하는 제약이 있음(Pop 연산) 후입선출(LIFO - Last In First Out) 특징을 가지는 선형 자료구조 스택 언더플로우(stack underflow) - 비어 있는 스택에서 데이터 원소를 꺼내려 할 때 스택 오버플로우(stack overflow) - 꽉 찬 스택에 데이터 원소를 넣으려 할 때 스택의 추상적 자료구조 구현 배열(array)를 이용하여 구현 python 리스트를 이용하여 구현 class ArrayStack: def __init__(self): self.data = [] def size(self): re..

프로그래머스 AI 데브코스 5기/Data study

Linear Algebra with Numpy

영벡터(영행렬) np.zeros(dim) 일벡터(일행렬) np.ones(dim) 대각행렬(diagonal matrix) Main diagonal을 제외한 성분이 0인 행렬 np.diag(main_diagonal) 항등행렬(identity matrix) np.eye(dim, dtype) 행렬곱(dot product) np.dot or @ a = np.array([[1, 4], [2, 3]]) b = np.array([[7, 9], [0, 6]]) print(a.dot(b)) print(a @ b) 트레이스(trace) main diagonal의 합 np.trace() arr = np.array([[1,2,3], [4,5,6], [7, 8, 9]]) print(arr.trace()) print(np.eye(..

프로그래머스 AI 데브코스 5기/Data study

Numpy 연산

Numpy로 연산하기 벡터와 벡터 벡터의 같은 인덱스끼리 연산이 진행된다. y = np.array([1, 3, 5]) z = np.array([2, 9, 20]) print(f'더하기: {y + z}') print(f'빼기: {y-z}') print(f'곱하기: {y*z}') print(f'나누기: {y/z}') 벡터와 스칼라 x = np.array([1,2,3]) c = 5 print(f'더하기: {x + c}') print(f'빼기: {x - c}') print(f'곱하기: {x * c}') print(f'나누기: {x / c}') Array의 Indexing [행, 열] W = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]]) print(W[0,0]) #1행 1열 ..

카테고리 없음

Web Scrapping 기초4

뭉게뭉게 단어구름, wordcloud Wordcloud란 자주 등장하는 텍스트를 중요도나 인기도를 고려해 표현한것 자연어 문장에서 키워드를 추출 키워드가 등장한 빈도를 측정 앞에서 전처리한 정보와 Wordcloud 라이브러리를 바탕으로 Wordcloud 생성 konlpy 설치 pip install wordcloud pip install konlpy 필요한 라이브러리 호출 import matplotlib.pyplot as plt from wordcloud import WordCloud from collections import Counter from konlpy.tag import Hannanum 워드클라우드를 만드는데 애국가 사용 national_anthem = """ 동해물과 백두산이 마르고 닳도록 하..

프로그래머스 AI 데브코스 5기/CS

Web Scraping 기초 - 3

스크래핑 결과 시각화하기 기상청 날씨 정보 시각화해보기 - https://www.weather.go.kr/w/weather/forecast/short-term.do 단기예보 - 기상청 날씨누리 2023년 03월 22일 (수)요일 17:00 발표 (총괄예보관: 허진호) □ (종합) 오늘 밤~내일 오후 전국 대부분 지역 가끔 비, 제주도와 남해안 돌풍과 함께 천둥.번개 유의○ (오늘) 전국 대체로 흐림, 제주도 www.weather.go.kr 필요한 라이브러리 불러오기 from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import S..

프로그래머스 AI 데브코스 5기/Data study

시각화 결과로 요약하기 - seaborn

시각화 기초 라이브러리 - Seaborn 여러 기법을 통해서 스크래핑을 진행할 수 있었다. 그런데 스크래핑의 결과가 너무 분산되어있어 한 눈에 보기 어렵다 이를 도와주는 시각화를 진행해보자 matplotlib을 기반으로 하는 시각화 라이브러리 설치하기 pip install seaborn Seaborn Essential import seaborn as sns 꺾은선 그래프(Line Plot) 두 변수 값에 따른 추이를 선으로 이은 그래프 .lineplot()을 이용해서 그릴 수 있음. sns.lineplot(x=[1,2,3,4], y=[0.7,0.2,0.1,0.05]) 막대 그래프(Bar Plot) 범주형 데이터의 "값"과 그 값의 크기를 직사각형으로 나타낸 그림 sns.barplot(x=[1,2,3,4]..

프로그래머스 AI 데브코스 5기/CS

web scrapping 기초 2

동적 웹 페이지와의 만남 정적 웹사이트와 동적 웹사이트 웹 페이지는 어떻게 생성되느냐에 따라 크게 2가지로 구분 HTML 내용이 고정된 정적(static) 웹 사이트 정적 웹사이트는 HTML 문서가 완전하게 응답된다. HTML 내용이 변하는 동적(dynamic) 웹 사이트 동적 웹 사이트는 응답 후 HTML이 렌더링 될 때까지의 지연시간이 존재 동적 웹사이트의 동장 방식 웹 브라우저에선 JavaScript라는 프로그래밍 언어가 동작한다. 비동기 처리를 통해서 필요한 데이터를 채운다, 동기처리: 요청에 따른 응답을 기다린다. 비동기처리: 요청에 따른 응답을 기다리지 않는다. 동기 처리된 경우, HTML 로딩에 문제가 없다. 비동기 처리된 경우, 상황에 따라서 데이터가 원전하지 않은 경우가 발생한다. 지금까..

프로그래머스 AI 데브코스 5기/CS

Web Scraping 기초

DOM(Document Object Model) 브라우저의 렌더링 엔진은 웹 문서를 로드한 후, 파싱을 진행 html문서를 브라우저가 파싱해와서 생긴 모든 태그의 집합(트리 구조) 이것을 DOM이라고 한다(맞나?) 왜 브라우저는 DOM을 굳이 만들어내는 걸까? DOM의 목적 각 노드를 객체로 생각하면 문서를 더욱 편리하게 관리할 수 있다. DOM을 다루는 예시 DOM Tree를 순회해서 특정 원소를 추가할 수 있다. DOM Tree를 순회해서 특정 원소를 찾을 수 있다. DOM으로 바꾸면 좋은 점 원하는 요소를 동적으로 변경해 줄 수 있다. 원하는 요소를 쉽게 찾을 수 있다. 브라우저의 렌더링 요약 브라우저는 HTML을 파싱해서 DOM을 생성한다. 이를 바탕으로 요소를 변경하거나 찾을 수 있다. 파이썬으..

Algorithm

[프로그래머스 - lv1] 나머지 한 점

문제 링크: https://school.programmers.co.kr/learn/courses/18/lessons/1878?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 파이썬 zip() 함수 동일 개수로 이루어진 자료형을 묶어 주는 함수 반환값: 두 개 이상의 리스트의 값의 같은 인덱스 짝별로 묶어 튜플에 담아 반환해준다. 만약 짝이 안맞다면 짝이 맞는 부분만 return 된다. zip(*zip) 하게 되면 zipped 한 요소들을 unzip해준다. 문제풀이 from collections import Counter def..

프로그래머스 AI 데브코스 5기/CS

양방향 연결 리스트(Doubly Linked List)

양방향 연결 리스트(Doubly Linked Lists) 한 쪽으로만 링크를 연결하지 말고, 양쪽으로! 앞으로도(다음 node) 뒤로도 (이전 node) 진행 가능 Node의 구조 확장 class Node: def __init__(self, item): self.item = item self.prev = None self.next = None 리스트 처음과 끝에 dummy node를 둔다. 데이터를 담고 있는 node들은 모두 같은 모양 class Node: def __init__(self, item): self.item = item self.prev = None self.next = None class DoubleLinkedList: def __init__(self, item): self.nodeCou..

프로그래머스 AI 데브코스 5기/CS

연결 리스트(Linked Lists)

추상적 자료구조(Abstract Data Structure) Data(정수, 문자열, 레코드...) A set of operations(삽입, 삭제, 조회, 정렬, 탐색...) 기본적 연결리스트 노드는 데이터와 링크로 이루어진다. 노드 내의 데이터는 다른 구조로 이루어질 수 있음 리스트의 맨 앞을 Head, 맨 뒤를 Tail이라고 한다. 노드가 몇개 있는지까지 기록해두면 편하다. 링크드 리스트 구현 노드 class Node: def __init__(self, item): self.data = item self.next = None class LinkedList: def __init__(self): self.nodeCount = 0 self.head = None self.tail = None 연산 정의 특..

프로그래머스 AI 데브코스 5기/CS

Web Scrapping 기초

인터넷과 사용자간의 약속 HTTP 인터넷과 웹 두 컴퓨터를 연결하는 네트워크(network)의 탄생 이 네트워크를 묶어 근거리 지역 네트워크(Local Area Network, LAN) 탄생 범지구적으로 연결된 네트워크 Inter Network - 인터넷(Internet) 탄생! 이 인터넷에서 정보를 교환할 수 있는 환경 - WWW(World wide web) 줄여서 web 탄생 📌 인터넷은 여러 컴퓨터 끼리 네트워크를 연결한 것 📌 Web은 인터넷 상에서 정보를 교환하기 위한 시스템 웹에서 정보 주고받기 정보를 요청하는 컴퓨터를 클라이언트, 정보를 제공하는 컴퓨터를 서버라고 한다. 클라이언트가 서버에게 정보를 요청한다. 요청에 대해서 서버가 작업을 수행 수행한 작업의 결과를 클라이언트에게 응답 HTTP..

프로그래머스 AI 데브코스 5기/Data study

jupyterlab 시작하기

먼저 본인 pc에 파이썬3이 설치되있는지 확인 pip install jupyterlab pip3 install jupyterlab python -m pip install jupyterlab jupyterlab 실행하기 터미널에서 jupyter lab이라고 입력하면됨 아래와 같은 창이뜨면 성공적으로 설치된것이다. 단축키 dd -> 셀 삭제 코드셀 전환 -> y, 마크다운 셀 전환 -> m 마크다운 Header : 보통 제목 작성할때 사용(h1 부터 h6 까지 있음) 이탤릭체 볼드체 strikethrough(취소선) 마크다운에서 code를 적을때는 백틱(`)을 이용하면 된다. 줄바꿈은 스페이스 두번

프로그래머스 AI 데브코스 5기/CS

재귀 알고리즘(Recursive Algorithm)

재귀함수(recursive function)란? 하나의 함수에서 자신을 다시 호출하여 작업을 수행하는 것 📌 간단한 예 - 자연수의 합 구하기 문제: 1부터 n 까지 모든 자연수의 합을 구하라. $S = \sum_{k=1}^n = n + \sum_{k=1}^{n-1} k$ def sum(n): if n 안그러면 무한 루프에 빠짐 4강 실습: 피보나치 순열 구현하기 $F0 = 0$ $F1 = 1$ $F_n = F_{n-1} + F_{n-2}$ # 재귀적 def solution(x): answer = 0 if x == 0: return 0 elif x == 1: return 1 else: return solution(x-1) + solution(x-2) # 반복문 def solution(x): a, b =..

Programming/Django

장고(Django) 페이지 구성 개선하기

템플릿 파일에서 if문 사용하기 if-else 문으로 조건에 따라 이미지 보여주기 이미지가 있을 경우 보여주기 blog/templates/blog/post_list.html {% for p in post_list %} {%if p.head_mage%} {%endif%} {{p.title}} {{p.content}} Read More → Posted on {{p.created_at}} by 작성자명 쓸 위치(개발예정) {%endfor%} 이미지가 없을 경우 사용할 임의의 이미지 가져오기 Lorem Picsum 이용 {% for p in post_list %} {%if p.head_image%} {%else%} {%endif%} {{p.title}} {{p.content}} Read More → Posted..

Programming/Django

장고(Django) 정적 파일과 미디어 파일 관리하기

정적 파일 관리하기 지금까지 만든 프로젝트 구조에 이제 부트스트랩을 적용시켜 보자! 포스트 목록 페이지에 부트스트랩 적용하기 blog_list.html 다시 사용하기. 이 내용을 post_list.html에 덮어 씌워준다. Do It Django Home (current) Blog About Me Dropdown link Action Another action Something else here Log In   Log In ×    Log in with Google    Log in with E-mail    Sign Up with E-mail Close Blog January 1, 2022 Post Title Lorem ipsum dolor sit am..

Programming/Django

장고(Django) 웹 페이지 만들기

장고 프로젝트 초반 설정세팅 하기 https://sanghui48.tistory.com/92 - 장고 서버 세팅하기 URL 설정하기 표지판 역할을 하는 urls.py 페이지 URL 대문페이지 도메인/ 블로그 페이지 포스트 목록 도메인/blog/ 포스트 상세 도메인/blog/포스트_pk 자기소개 페이지 도메인/about_me/ 포스트 목록 페이지 만들기 프로젝트/url.py 만들기 from django.contrib import admin from django.urls import include, path urlpatterns = [ path('blog/', include('blog.urls')), path('admin/', admin.site.urls), ] blog/urls.py 생성 후 다음 내용 작..

Programming/Django

장고(django) 프로젝트에서 앱 만들기

모든 장고 프로젝트는 1개 이상의 앱으로 구성된다. 이때 '앱'은 '특정한 기능을 수행하는 단위 모듈'로 생각하면 된다. blog앱과 single_pages 앱 만들기 python manage.py startapp blog python manage.py startapp single_pages 위 두 명령어를 이용 하면 아래와 같이 2가지 앱이 추가적으로 생성된다. 모델 만들기 장고의 장점중 하나는 모델을 이용해 장고 웹 프레임워크 안에서 데이터베이스를 관리할 수 있다는 것이다. 블로그 글을 위한 모델 만들기 Post 모델 만들기 blog/models.py를 열어 다음과 같이 입력 from django.db import models # Create your models here. class Post(mod..

Programming/Django

장고(django) 기초

장고로 만든 웹 사이트 작동 구조 MTV 패턴을 따른다. 모델(model)로 자료의 형태를 정의하고, 뷰(view)로 어떤 자료를 어떤 동작으로 보여줄지 정의하고, 템플릿(template)으로 웹페이지에서 출력할 모습을 정의한다. 실습 환경 설정하기 venv라는 가상 환경을 만들면되는데, IDE를 써서 만들어도 되고 아니면 cli로 만들어도 되고 본인이 편한대로 만들면 된다. (나같은 경우는 파이참으로 오류나서 그냥 명령어모드로 만듬) 해당 프로젝트 디렉터리 내에서 다음 스크립트 실행 .venv\Scripts\activate.bat 그러면 터미널에서 앞에 (.venv)라는 문구가 생긴다. 가상 환경 상에서 장고를 설치해야 한다. pip install django 나 같은 경우에는 버전이 4.1.7이다. ..

프로그래머스 AI 데브코스 5기/CS

선형 배열(Linear Array)

알고리즘(algorithm)이란? [사전적 정의] 어떤 문제를 해결하기 위한 절차, 방법, 명령어들의 집합 [프로그래밍] 주어진 문제의 해결을 위한 자료구조와 연산 방법에 대한 선택 해결하고자 하는 문제에 따라(응용 종류와 범위에 따라) 최적의 해법은 서로 다르다! -> 이 선택을 어떻게 해야 하느냐를 알기 위해 자료구조를 이해해야 함 1강 실습: 리스트 원소 두 개의 합 구하기 def solution(x): return x[0] + x[-1] 배열(Arrays) 같은 종류의 데이터가 줄지어 늘어서있는 자료 구조를 의미한다. 파이썬에서는 리스트(List) 자료구조가 이와 비슷하게 사용된다. 리스트(배열) 연산 원소 덧붙이기 L = ['Bob', 'Cat', 'Spam', 'Programmers'] L.a..

프로그래머스 AI 데브코스 5기/CS

동적계획법(Dynamic Programming) 대표 문제 풀이 - N으로 표현

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 동적 계획법(Dynamic Programming) 주어진 최적화 문제를 재귀적인 방식으로 보다 작은 부분 문제로 나누어 부분 문제를 풀어, 이 해를 조합하여 전체 문제의 답에 이르는 방식 알고리즘의 진행에 따라 탐색해야 할 범위를 동적으로 결정함으로써 탐색 범위를 한정할 수 있음 Knapsack Problem : 참고 싸이트 https://gsmesie692.tistory.com/11..

프로그래머스 AI 데브코스 5기/CS

힙(Heap) 대표 문제 풀이: 더 맵게

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 방법 만약 음식을 스코빌 지수로 정렬한 다음 앞에서부터 하나씩 k와의 비교를 통해($O(N)$) 작으면 섞어주고 다시 배열에 삽입해 주는 과정을 반복하게 된다면 ($O(N)$) 총 $O(N^2)$의 시간 복잡도를 갖게 된다. 📌 그렇다면 이 문제에서 가장 필요한 상황은 무엇일까 삽입과 조회를 할때 계속 최솟값을 찾을수 있는 상황. -> 최소힙? 힙(Heaps) 성질: 최대..

한상희
'파이썬' 태그의 글 목록