반응형

Python3 47

파이썬으로 폴더 생성, 삭제, 복사 해보기

안녕하세요 Dibrary입니다. 제가 데이터분석을 공부하다가, 데이터를 '목적에 맞는 폴더'에 분류하는 코드들을 보면 전부 파이썬 os 모듈을 사용하더라구요. 그래서 이참에 몇 가지 자주 쓰는 기능만 정리해보고자 합니다. 제 실행 환경은 Jupyter입니다. 먼저 import os를 해야 합니다. 설치는 자동으로 되어 있을 겁니다. 1. 폴더 내부에 있는 것들 확인하기 폴더 내부에 있는 것을 확인하려면 os.listdir 을 사용하면 됩니다. 제가 임의로 folder_test 폴더를 만들고 그 안에서 os.listdir 을 사용해 보았습니다. 하나는 되고, 하나는 안 되죠? 점 2개를 찍어야 상대경로로 인식한다는 것을 볼 수 있습니다. 당연한 얘기지만, 그냥 지금 있는 폴더만을 문자열로 넣어도 컴퓨터는 ..

파이썬으로 미분 해 보기

안녕하세요 Dibrary입니다. 물리 문제를 풀다보면 서스럼없이 자주 등장하는게 미분방정식이죠. 이 미분방정식을 손으로 계산 해도 되지만, 그저 값을 확인하고자 한다면 코딩으로 구하면 굉장히 편리합니다. 물론, 코딩은 수치적 기법으로 그나마 '근사치'를 내줄 뿐이긴 하지만요. 임의 함수에 대해 미분 결과와, 해당 값에 미분 값을 구해보겠습니다. 임의로 위의 함수를 만들었고, 미분결과도 같이 기록해 놓았습니다. 파이썬으로 미분을 할 때는 sympy 모듈의 Derivative를 사용하면 됩니다. 먼저 symbols로 "x"를 설정했습니다. 이는 Derivative에 같이 전달하며, 미분 대상이 x라는 의미입니다. 즉, x에 대한 기울기(도함수)를 구하겠다는 것이죠. Derivative에는 함수'식'과 sym..

[BOJ][9095번] - 1,2,3 더하기

안녕하세요 Dibrary입니다. 이번에는 제가 개인적으로 어려워해서 푸는데 시간이 꽤나 걸린 동적프로그래밍 문제를 풀어보겠습니다. 지금도 까딱하면 동적프로그래밍 '감'을 잃을거 같아서 조심스럽네요... 문제는 아래와 같습니다. 처음에 이 문제를 보자마자 어디서 '생각'이 멈췄냐면 1을 쓰는 것과 2를 쓰는 것의 '순간'을 어떻게 알지? 2 외에 3이 있다다는 것을 어떻게 알지? 이런 생각 때문에 문제를 못 풀었습니다... 그래서 그냥 하염없이 갯수를 세다가 문득 규칙성이 보이길래 좀 더 해봤습니다. 제가 이렇게 '규칙성을 찾아서 문제를 풀어야 한다'는 개념을 알게 된 문제는 아래 문제였습니다. 20500번: Ezreal 여눈부터 가네 ㅈㅈ 문제의 답을 $1\,000\,000\,007$로 나눈 나머지를 출..

파이썬을 사용한 회귀(Regression) 모델

안녕하세요 Dibrary입니다. 이번에는 파이썬을 이용해서 회귀 모형을 확인해 보겠습니다. 회귀는 통계학에서 자주 나오는데, 주어진 데이터를 토대로 선형 모델을 만들어서 해당 데이터 범주 이외의 값을 예측하는 것입니다. 실행 환경은 역시나 Jupyter입니다. 우선 회귀란 무엇인가 간단한 이미지를 보겠습니다. 점들과 직선 하나만 있네요. 저 직선은 점들의 '기준값'의 집합이라고 보시면 됩니다. 여기서 기준값은 평균으로 잡을 수도 있고, 분산으로도 잡을 수도 있고 보고자 하는 통계치를 기준으로 합니다. 즉, 해당 데이터가 저런 직선에 통계치가 근접하니 이 범주외의 값도 이 직선에 근접할 것이다~ 고 예측하는 것이죠. 그럼 먼저 모듈에 있는 데이터를 써보겠습니다. 60개를 가져왔고, print로 X와 y를 ..

파이썬을 사용한 KNN(최근접 이웃) 구현해보기

안녕하세요 Dibrary입니다. 이번에는 KNN을 구현 해 보겠습니다. KNN은 약자이고 K-Nearest Neighbors 즉, 'K개의 근접 이웃'을 의미합니다. 모르는 대상이 있을 때, 그것의 근접에 있는 이웃을 통해 그것이 '어떤' 이웃과 비슷하다~ 는 판정을 컴퓨터가 하는 셈이죠. 저는 Jupyter를 켜고 하겠습니다. 우선 mglearn을 다운로드 하셔야 합니다. pip install mglearn을 하시면 자동으로 됩니다. 이 코드를 입력해서 본 결과는 mglearn에 make_forge라는 데이터의 시각화 입니다. 데이터는 discrete_scatter에 들어가서 표현이 된 것이고, X라는 데이터가 2개의 값을 가지고 있으므로, X[:,0] X[:,1] 로 나타냈고, y가 색상이 다른 특성..

스택과 데크(deque)

안녕하세요 Dibrary입니다. 이번에 소개할 자료구조는 스택 입니다. 연결 리스트보다 어찌보면 간단한? 자료구조입니다. (이해하기는 굉장히 쉬운데 실제 쓰임새는 연습하지 않고는 떠오르지 않는 괴랄한... ) 스택의 특징은 딱 하나 입니다 LIFO (LAST에 IN 한 데이터가 FIRST로 OUT 한다) 이거 한 개만 아셔도 스택 개념의 절반은 먹고 들어간다~ 이거죠. 스택은 반드시 LIFO만 유지되면 됩니다. 그럼 여기서 LAST에 IN한 다는 의미와 FIRST로 OUT한다는 의미가 무엇인가 코드로 살펴보겠습니다. (물론 파이썬으로요) 임의로 stack이라는 이름의 list를 만들어 보았습니다. 1, 2, 3을 순서대로 넣고 확인해 보니 순서대로 들어갔네요. pop을 하니까 맨 마지막에 넣은 3이 제일..

자료구조 2022.06.03

[Django 파이썬 웹 프로그래밍] 내가 아는 가장 쉬운 장고(Django)책

듣기로만 했던 장고. 기존 회사에서 개발을 할 때 필요한 무료 라이브러리 때문에 8개월을 들여서 배운 파이썬은 웹과는 거리가 멀었었다. 아무렴 그때당시는 웹을 JAVA로 하고, 필요한 기능만 파이썬으로 연동해서 사용했었기 때문이다. 그런데, 파이썬으로도 웹을 다루는 회사들이 많아졌음을 깨달았고, 시대에 뒤쳐지는 것이 아닐까 싶은 걱정 때문에 부랴부랴 서점에서 장고 책을 찾았다. 과연 프레임워크인 만큼 나에게 맞는 책을 찾는 게 쉽지 않았다. 그런 와중에 이 책이 보였다. (솔직히 표지 디자인은 음.... 별로다 ㅎ) 확실하게 말할 수 있는 것은 나에게는 정말 딱 맞는 기본서였다. 이 책의 구성은 전반적인 IT책과 비슷하다. 웹 개념설명 장고프레임워크의 구조 및 설명과 예시 미니 웹 프로그램 만들기 프로그..

독서/서평 2022.04.13

[전문가를 위한 파이썬] 사소한 파이썬의 특장점까지 짚어보자

흔히 파이썬은 '쉬운 언어'라고 많이 알려져 있다. 지금 유행하는 코딩열풍을 밑에서부터 보면, 초등학교부터 코딩 개념을 가르치는데 블럭 형태의 놀이같은 것이나 혹은 파이썬을 배운다. 그만큼 쉽다는 인식이 많은데 사실 어떤 언어든 '절대치'는 존재한다고 생각한다. C/C++언어는 초기에 어렵지만 나중에 능숙해지면 초기의 장벽만큼 어렵게 느껴지지는 않을 수 있는데, 파이썬은 그 반대로 초기에는 쉬워보이나 나중에 만나는 것들의 장벽이 초기보다 어렵다는 것이다. 개인적으로는 이 책을 보기 전에 이미 파이썬의 난이도는 쉽지 않다는 것을 알고 있었다. 특정 개발 도중에 파이썬을 C++과 연동해야 했었는데, 아주 어려웠었다. C++에서 사용하던 메모리 관리 등을 파이썬에서도 해보니 오히려 C++이 더 쉽게 느껴질 정..

독서/서평 2022.03.18

[파이썬 클린코드] 쉽다고 알려진 파이썬도 막 사용하면 안 된다.

파이썬을 자주 사용하기 시작하면서 막연하게 걱정이 되었던 부분이 있었다. 바로 '가독성'이다. 또한, 해당 코드가 기능은 하지만 기능을 위한 필수요소만 있는 것인지, 아니면 불필요한 과정으로 덮여있는지를 알아보고 싶었다. 제목부터 느껴지지만, '클린코드'로 작성하기 위해서 좀 더 나은 방법, 객체지향에 초점을 맞춘 방법을 소개한다. 클린코드에 대한 개념을 먼저 소개하고, 파이썬이라는 언어의 특징 (pythonic)을 살려서 코드를 작성하는 방법을 몇 가지 소개한다. 이 책에서 generator와 context manager등의 개념을 알게되었고, 기존에 구현한 코드가 너무 구현에만 빠진 나머지 기능이라는 본질 자체에서 좀 멀어져 있다는 것을 깨닫게 되었다. 물론 짤막한 코드가 무조건 좋은 것은 아니지만,..

독서/서평 2022.02.18

알고리즘을 풀 때 항상 생각해봐야 하는 것 - 복잡도

안녕하세요 Dibrary입니다. 개발자라면 항상 습관적으로 알고리즘을 풀곤 하죠. 주로 파이썬이 '생각'을 구현하는데 편해서 많이들 사용하는데 생각보다 파이썬은 느린 언어죠. 따라서 알고리즘문제를 풀 때 반드시 조심해야 하는 것 2가지가 있습니다. 1. 시간복잡도 네 시간복잡도는 말 그대로 코드로 해답을 구하는데 '시간'이 얼마나 걸리느냐 입니다. 백준 알고리즘을 예로 들어보겠습니다. 이렇게 입력값의 범위가 주어지면 숫자가 얼마나 큰지 감이 오시나요? 아주 어마어마하죠. 문제는, 이렇게 큰 범위 값이 항상 주어지는 것은 아니지만, 전부가 주어질 수도 있다는 겁니다. 그렇기에 파이썬으로 해당 문제를 풀기 전에 시간을 먼저 구해보는 습관을 들이면 좋습니다. 위 코드는 임의로 제가 10의 100제곱만큼의 범위..

반응형