Tiny Star

전체 글 186

[Django] Django:장고 웹 프레임워크 구조

Django(장고)는 파이썬 언어를 기반으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크이다. 웹 프레임워크를 한번도 사용한 적이 없는 경우 단어 자체가 굉장히 낯설 수 있는데, 쉽게 풀어 이야기하자면 웹 사이트를 구축할 때 비슷한 유형의 요소들은 항상 존재하기 마련이다. 예를 들면 회원가입/로그인/로그아웃, 글쓰기/수정/삭제, 관리자 기능 등 어떤 웹에서나 필요한 기능들을 의미한다. 이런 필수 기능들을 매번 0부터 구현한다고 생각해보자. 엄청나게 비효율적이다. 이럴 때 바로 사용할 수 있는 구성 요소들을 갖춰 보다 쉽고 빠르게 웹 사이트를 개발할 수 있도록 돕는 것이 바로 웹 프레임워크이다. 개발자 치트키 도구같은거랄까. 알아서 다 해준다. 스프링이 자바나 코틀린 등의 언어로의 개발을 쉽게 도와주..

[Framework] 장고(Django)와 플라스크(Flask)

장고(Django)와 플라스크(Flask)를 사용해야 할 때가 왔다. 플라스크는 예전에 잠시 스파코 부캠에서 본격 자바를 배우기 전 Python, MongoDB와 함께 사용을 해봤던 경험이 있고, 장고의 경우는 이름만 들어 본 그런 사이다. 어차피 둘 다 알아야하기 때문에 입문은 장고로 하기로 마음먹었고, 장고를 설치하기 전 두 프레임워크의 정보를 머리에 집어넣을 겸 적어본다. 우선 장고(Django)와 플라스크(Flask) 모두 파이썬으로 웹 어플리케이션을 개발하기 위한 웹 프레임워크이다. 무엇이 더 좋고 나쁜 문제가 아닌 장고(Django)와 플라스크(Flask)는 파이썬 언어 기반인 것만 동일할 뿐 두 가지를 비교할 수 있는 대상이 못된다. 속도나 개발 편의성도 차이가 없는 편이고 결국 개발자의 실..

[Python] 파이썬 멀티 프로세싱으로 성능 개선 (Multiprocessing)

먼저 멀티프로세싱이란 여러 개의 프로세스가 작업을 병렬처리하면서 협렵적으로 일을 처리하는 것! 즉, 1개의 프로세스가 돌아가는게 아닌 돌리고 싶은 코어의 개수만큼 한번에 프로세스를 실행시키는 것이다. 노예를 부리고 싶은만큼 부려 일을 빨리 처리한다는 개념정도로 적어놓고, 자세한건 밑에 게시물에 적어놓았다. Computer Science - 멀티 프로세스와 멀티 스레드 우선 프로그램, 프로세스, 스레드에 대해 한 줄로 요약해보자면 이렇다. [프로세스] · 정의 : 운영체제로부터 시스템 자원을 할당받는 작업단위로, 메모리 상에서 독립적으로 실행환경을 갖춘 chun-k.tistory.com 우선 직장에서 데이터 파싱을 할 일이 생겨 난생 처음 파이썬과 판다스를 사용해 다양하게 데이터를 조작해보고 있는 중에 하..

[❌삽질과 해결 그 사이] TypeError: 'method' object is not iterable | iterrows 문법오류

TypeError: 'method' object is not iterable tqdm 라이브러리의 iterrows 메서드를 사용하여 데이터프레임의 각 행을 반복하는 코드였는데 마주하게 된 오류다. for idx, row in tqdm(df.iterrows, total=len(df)) 알아보니 코드를 이렇게 썼었는데 iterrows 메서드 호출을 잘못해서 발생한 오류였다. iterrow메서드는 데이터 프레임에서 각 행(row)를 반복할 때 사용되는데, 내가 쓴 코드에서는 iterrows 뒤에 괄호가 빠져있어서 파이썬에서 iterrow메서드 자체를 이터러블로 인식하지 못하고 메서드 내 객체로만 인식이 되어 반복하려다가 발생한 것이다. 단순한 문법적 오류라 iterrows 뒤에 괄호만 추가해서 해결할 수 있었..

[❌삽질과 해결 그 사이] Invalid argument : 파일 경로 에러

[Errno 22] Invalid argument 파이썬을 사용하면서 처음 만난 에러 원인은 파일의 저장경로 또는 저장 될 파일명에 사용할 수 없는 특수문자가 포함되어 있어서 생기는 오류이다. 파일명이나 파일 경로에 :, ", /, \, *, ?, , | 등은 사용 불가하기 때문에 저런 오류를 만난다면 사용불가 특수문자가 포함되어 있는지 먼저 확인해준다. 나의 경우 문제가 생긴 부분은 데이터를 파싱하고 저장하는 과정에서 경로를 지정해준 address 변수에서 나타났다. 파일의 경로를 그대로 복붙했기 때문에 경로가 틀렸다고는 생각 못했는데 백슬래시(\)와 r의 조합은 이스케이프 시퀀스때문에 인터프리터가 오류로 인식해서 생긴 문제였다. 이스케이프 시퀀스는 백슬래시와 특정 문자조합으로 다양한 기능을 제공하는건..

[🐼Pandas] csv/xlsx/SQL 데이터 다루기

판다스(Pandas)에서는 다양한 형태의 데이터를 데이터프레임 또는 시리즈 객체로 생성하고 불러와서 데이터를 가공할 수 있다고 지난 포스팅에 적어놓았다. 직접 코드에 생성하지 않아도 csv, xlsx, SQL 등으로 데이터를 불러와서 가공을 할 수도 있다. 데이터 불러오기 1) CSV(Comma-Separated Values) 먼저 csv 파일형식은 몇 가지 필드를 쉼표로 구분한 텍스트 데이터 및 텍스트 파일인데, 이 csv파일 데이터를 불러오는 방법이다. import pandas as pd # CSV 파일 불러오기 df = pd.read_csv('data.csv') 2) Excel / xlsx 많이 사용하는 스프레드시트 프로그램에서 생성한 데이터를 저장하는 파일 형식으로 csv와 차이는 read_뒤에 ..

[🐼Pandas] Data 객체 데이터 다루기

판다스(Pandas)에 대해 소개할 때 단순히 Data 객체가 어떻게 생성되는지 예시코드만 던졌었다. 여기서는 객체의 행 또는 열을 선택하거나 추가/삭제/변경 등의 기능을 좀 더 상세히 적어놓으려 한다. DataFrame 객체 행과 열로 이루어진 2차원 데이터를 다루기 위한 것으로 열은 각각의 변수, 행은 관측치를 나타낸다. [생성하기] 데이터를 생성할 때는 list, dict(딕셔너리), EXCEL 등 다양하게 생성을 할 수 있다. 1. list를 사용해서 Data Frame 객체 생성하기 import pandas as pd #pandas 대신 pd 라는 별칭 사용의 의미 data = [['A', 1]], ['B',2], ['C',3]] df = pd.DataFrame(data, columns ['co..

[🐼Pandas] 데이터 분석을 위한 라이브러리 : Pandas / 라이브러리 소개 / 설치방법

자바만 열심히 파던 내가 어쩌다보니 파이썬을 사용해 데이터 파싱/분석을 해야할 일이 생겨서 천천히 공부 중인 판다스. 나처럼 갑자기 구명조끼 하나없이 냅다 데이터의 바다에 던져 질 사람들을 위해 판다스가 뭔지부터 정리해본다. 판다스(Pandas)? 파이썬에서 데이터 조작이나 분석을 위한 라이러리 중 하나로, 특히 표 형태의 데이터를 다루는데 유용한 라이브러리이며, 데이터를 구조화하고 처리하는데 사용된다. 판다스(Pandas)는 데이터 과학 및 머신러닝 분야에서 널리 사용되고 있고 데이터의 전처리부터 분석이나 모델링, 데이터 조작, 정제, 분석, 시각화 등이 가능하도록 다양한 기능을 제공한다. 판다스(Pandas)는 데이터프레임(DataFrame)과 시리즈(Serise)라는 두 가지의 주요 자료구조를 제공..

[CS STUDY INTERVIEW] 6주차 - 캐스팅 (Casting)

CS 스터디 6주차 자바에서의 캐스팅(Casting) 캐스팅이란 형변환을 의미하며 어떤 데이터 타입을 다른 데이터 타입으로 변환하는 과정을 의미하며, 데이터 타입이 다를 경우 서로 호환되지 않기 때문에 이런 경우에 데이터 타입을 맞춰서 로직을 처리하거나 저장할 때 유용하다. 캐스팅에는 크게 업캐스팅과 다운캐스팅. 두 가지의 유형이 존재한다. 캐스팅의 종류 1. 업캐스팅(암시적 캐스팅 - Implicit Casting) 작은 데이터 타입의 값은 큰 데이터 타입으로 데이터 손실이 없을 경우에 자동으로 변환되는데, 이 때 발생하는 것이 업캐스팅이다. 예를 들어 int를 double로 변환하거나 float를 double로 변환하는 것이 업캐스팅의 예라고 할 수 있다. int x = 10; double y = x..

[CS STUDY INTERVIEW] 5주차 - 직렬화(Serialization)

CS 스터디 5주차 직렬화(Serialization) 먼저 직렬화란 자바 시스템 내부에서 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트 형태로 변환하는 기술(바이트 스트림)이다. 변환을 통해 파일을 저장하거나 네트워크를 통해 전송할 수 있도록 하며 객체의 상태를 저장하고 다른 프로그램이나 시스템에서 객체를 복원하는데 사용된다. 이를 시스템적으로 접근해보면 JVM의 힙 또는 스택 메모리에 상주하고 있는 객체 데이터를 직렬화를 통해 바이트 형태로 변환하여 데이터베이스나 파일과 같은 외부 저장소에 저장해두고, 다른 컴퓨터에서 이 파일을 가져와서 역직렬화를 통해 객체로 변환해서 JVM 메모리에 적재하는 것으로 볼 수 있다. 직렬화를 사용하는 이유는 각자 PC의 OS마다 서로 다른 가상 메..