210202 Plotly + Pandas Project

Plotly+Pandas

  • Pandas

    • 방대한 양의 데이터를 가져와서 데이터를 깔끔하게 만들고, 처리하고, 구조를 변경(데이터 가공)하는데 사용된다.

    • 데이터 분석과 처리를 쉽게 할 수 있도록 도와준다.

    1
    $ pip install pandas

  • Plotly

    • 모든 그래픽(그래프)를 만드는데에 사용된다.
    • No JavaScript required
    1
    $ pip install dash==1.14.0

    Read More

Baekjoon Online Judge 1966번 프린터 큐 문제

백준 저지 1966번 프린터 큐 문제 Pseudo code + Python code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
test_case = int(input())
for _ in range(test_case):
task_num, search_index = map(int, input().split())
test_priority_list = list(map(int, input().split()))
print_task_list = [(p, i) for i, p in enumerate(test_priority_list)]

print_task_count = 0
while True:
if print_task_list[0][0] == max(print_task_list, key=lambda x: x[0])[0]:
print_task_count += 1
if print_task_list[0][1] == search_index:
print(print_task_count)
break
else:
print_task_list.pop(0)
else:
print_task_list.append(print_task_list.pop(0))

Read More

210202 Python TIL - Error exception, RegEx, Lambda, Function, map, filter, reduce

Python

Section0) Assignment & Review

  • HackerRank 문제 (List comprehension)
1
2
3
x, y, z, n = (int(input()) for _ in range(4))
result_ = [[i, j, k] for i in range(x+1) for j in range(y+1) for k in range(z+1) if (i+j+k) is not n]
print(result_)

Section0-1)zip() 활용

1
2
3
4
numbers = [i for i in range(1, 10+1)]
chars = list(set('abcdefghij'))
for i,c in zip(numbers, chars):
print(i,c)

Section0-2)File I/O 실습

  • readlines, csv.reader()로 csv파일 읽기
    readlines() : readlines()로 파일을 읽으면, 아래와 같이 row 데이터가 구분자(, comma)로 구분되어 출력이 된다.

    1
    2
    3
    4
    5
    6
    7
    with open('customers.csv', 'r', encoding='utf-8') as f:
    rows = f.readlines()
    for row in rows:
    print(row)
    # output :
    # CustomerID,CustomerName,ContactName,Address,City,PostalCode,Country
    # 1,Alfreds Futterkiste,Maria Anders,Obere Str. 57,Berlin,12209,Germany

    Read More

210202 ExpressJS Installation

본 포스팅 내용은 과거에 개인적으로 공부할때 정리했던 NodeJS의 내용을 복습의 목적으로 다시 정리하는 포스팅입니다.


ExpressJS 설치

NPM(Node Package Manager) : 업데이트된 각종 NodeJS 관련 패키지의 중앙집중화된 개념으로 NodeJS 월드의 중심과 같은 곳이다.

NPM은 NodeJS를 다운받게 되면 자동으로 설치가 되기 때문에 별도로 설치할 필요는 없다.

Package manager로 npm을 사용하기 위해서는 우선 npm이 정한 방식으로 프로젝트를 시작해야한다.

  1. npm init : npm 초기화 (package name/description/author 설정)
    → 결과적으로 package.json 파일이 생성이 된다.

Read More

210202 NodeJS Express Framework

본 포스팅 내용은 과거에 개인적으로 공부할때 정리했던 NodeJS의 내용을 복습의 목적으로 다시 정리하는 포스팅입니다.


ExpressJS?

ExpressJS는 간단히 말하면 훌륭한 개발자들이 만들어준 NodeJS 프레임워크이다. 이를 사용해서 우리는 원하는 걸 쉽고 빠르게 해낼 수 있다. 예를 들어 NodeJS로 서버를 만드는 것이 목표라면 수작업으로 초반작업을 해줄 필요가 있는데 Express를 이용해서 단 몇 줄의 코드로 서버를 만들 수 있다.

Framework

다른 프로그래밍 언어에도 프레임워크가 있다. 예를 들어 Django는 Python으로 된 프레임워크이고, Rails는 Ruby로 된 프레임워크이고, Laravel은 PHP로 된 프레임워크이다. 이러한 프레임워크들은 개발자들의 개발을 손쉽게 할 수 있도록 도와준다.

서버를 개발하는 것은 대부분의 경우 거의 동일한 패턴을 가지고 있다. Connection 열기, Connection Listening, 파일을 처리, html 전송, 데이터를 저장, form에서 데이터를 받아오기와 같은 일련의 과정의 반복이라고 볼 수 있다. 모든 어플리케이션이 대부분 동일한 일을 하기때문에 앞서 언급한 프레임워크는 다른 방식이지만 결국에는 같은 일들을 처리한다고 볼 수 있다.

ExpressJS는 NodeJS의 프레임워크 중에 대중적인 프레임워크이고, 안정적이다.

Read More

210202 NodeJS Installation

본 포스팅 내용은 과거에 개인적으로 공부할때 정리했던 NodeJS의 내용을 복습의 목적으로 다시 정리하는 포스팅입니다.


NodeJS 설치

나는 Mac 사용자이기 때문에 MacOS 기준으로 설치내용을 정리해보겠다.

NodeJS는 간단하게 brew로 설치가 가능하다 brew install node


NodeJS Installation Guide : NodeJS Installation Guide

Read More

210202 NodeJS의 기본 개념과 사용

본 포스팅 내용은 과거에 개인적으로 공부할때 정리했던 NodeJS의 내용을 복습의 목적으로 다시 정리하는 포스팅입니다.


  • NodeJS

JavaScript는 브라우저에 내장이 되어있고, 브라우저상에서 동작한다. NodeJS는 이 JavaScript를 browser 밖으로 끄집어내서 유저가 browser 밖에서도 JavaScript를 사용가능하도록 한 것이다.
NodeJS = 브라우저 밖의 JavaScript를 의미

따라서 NodeJS는 컴퓨터상에서 동작하기 때문에 JavaScript를 이용해서 FileSystem에 접근을 할 수 있고, 서버를 만들 수도 있고, WebScrapping도 할 수 있다. JavaScript를 브라우저와 독립적으로 활용할 수 있도록 해주는 것이 NodeJS의 주된 개념이다.

기존에 간단한 JavaScript compile의 경우, chrome inspector에서 했었지만, NodeJS를 설치하면 위와 같이 PC의 로컬환경에서도 JavaScript코드를 compile해 볼 수 있다.

Browser와의 종속성을 깼다는 점에 있어 JavaScript언어의 가능성이 넓어졌다.

NodeJS의 선택과 사용

  • Back-end, Sever를 Build해야하는 경우, Django(Python), Laravel(PHP) 등 다양한 언어와 프레임워크가 있지만 JavaScript에 능숙하고 Front-end와 Back-end를 모두 JavaScript로 만들고 싶다면 NodeJS를 선택한다.

  • 두번째 만약 제한된 시간이 한정되어있고, 프로젝트가 빨리 시작되어야 한다면, 그리고 거의 모든 것을 다 customize할 수 있는 능력을 가지고 있다면 NodeJS를 선택한다. 하지만 상대적으로 거의 대부분이 Configuration되어있는 것을 원한다면 Django나 Laravel을 선택하는 것이 좋다.
    왜냐하면 NodeJS는 아무것도 들어있지 않다. 작은 블럭들을 위로 쌓아서 큰 성을 짓는 것이 바로 NodeJS를 활용해서 개발을 하는 것을 의미한다.
    Django의 경우는 이미 완성되어 있는 큰 성과 같아서 전체적인 사용법을 이해하고 이용을 해야하는데 node.js는 그와 다르게 완전 아무 것도 없이 무에서 시작해서 모든 것을 하나씩 붙여가면서 개발을 한다.

    Read More

210201 Pandas TIL

Pandas

  • Pandas

이전에 데이터 시각화와 관련해서 관심이 많았아서 우연히 Pandas에 대해서 접하게 되었는데, 오늘 Python 수업관련해서 강사님이 Pandas에 대해서 말씀해주셔서 간단하게 Pandas에 대해서 조사해보았다.

  • Pandas?

    • pandas는 Python에서 데이터 분석 기능을 제공하는 라이브러리이다. 특히 몇 테이블 및 시계열 데이터를 조작하기위한 데이터 구조와 연산을 제공한다. Pandas는 BSD License하에 제공되고있다.

      Read More

210201 Python TIL - List/Dictionary Comprehension

Python

  • List / Dictionary Comprehension**

    Python을 더 Python스럽게 작성하기위해서 이 Comprehension을 이해하고 적절히 잘 사용해야한다.

    • List Comprehension

      • 리스트의 각 요소에 2를 곱해서 새로운 리스트 생성하기 (for-loop + list comprehension)
      1
      2
      3
      4
      5
      6
      7
      numbers = [1, 2, 3, 4, 5]
      new_numbers = []
      for i in numbers:
      new_numbers.append(i*2)
      print(new_numbers)
      # list comprehension을 사용해서 아래와 같이 간단하게 작성을 해줄 수 있다.
      new_numbers = [i*2 for i in numbers]

      Read More

Baekjoon Online Judge 1543번 문서 검색 문제

백준 저지 1543번 문서 검색 문제 Pseudo code + Python code

손코딩한 코드에서 논리적 오류를 발견했다. document에서 검색하고자 하는 문자열의 길이만큼 slicing할때, 시작 인덱스(start_index)부터 검색 문자열의 길이(search_word)까지가 아닌, 시작 인덱스(start_index)에서 검색 문자열의 길이(len(search_word))만큼 더한 곳 까지 slicing한 문자열을 비교해야 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
document = input()
search_word = input()
search_count = 0
start_index = 0

while (len(document)-start_index) // len(search_word) != 0:
# 아래의 조건도 위의 조건을 대체할 수 있다.
# while len(document)-start_index >= len(search_word):
if document[start_index:start_index+len(search_word)] == search_word:
start_index += len(search_word)
search_count += 1
else:
start_index += 1

print(search_count)

Read More