본문 바로가기
728x90
반응형

Python73

8. Python - msvcrt 모듈로 키보드 입력 및 화면 출력 조정 필자가 최근 Python으로 필자 회사에서 사용중인 솔루션의 분석 결과를 별도로 추출할 수 있는 프로그램을 개발하고 있다. 사실 필자의 업무 영역에서 많이 벗어난 부분이지만, 시간은 부족하고 일은 많아지니 놀고 있는(?) 컴퓨터에게 필자 일을 조금 떠넘겨보려는 의도에서 만들고 있는 중이다. 지금 만드는 프로그램은 아무래도 고객사 내에서 사용되어야 하는 파일이기 때문에, 몇 가지 필수 조건이 존재한다. 첫 째로, window에서 돌아가야 하는 파일이어야 하며, 둘째로 python의 기본 모듈만 사용해야하며, 마지막으로 인가된 사용자만 이 프로그램을 사용하여 분석 결과를 확인할 수 있도록 하는 것이다. 너무도 당연한 이야기인데, 고객사 환경에는 python이 설치되어 있지 않을 확률이 높고, 설령 pytho.. 2021. 8. 7.
[Python Data Analysis] 1. Python의 re 모듈 Python은 다양한 분야에서 활용될 수 있는 프로그래밍 언어이다. 기존에 많이 사용하던 Java나 C와는 달리 문법 자체가 워낙 익히기 쉬운 구조라, 일반적인 프로그램 코딩은 물론이거나와, RasberryPi 코딩, 머신 러닝 등 폭 넓게 이용되는 언어다. 특히 기존의 프로그래밍언어로는 작업이 어려웠던 자료의 수집과 수집된 자료의 분석, 분석 결과의 저장 작업, 즉 통계를 위한 수집과 분석 작업에도 사용 빈도가 높아짐에 따라, 국내 기사 자격증 중 하나인 빅데이터 분석기사의 실기에서도 R과 함께 주요 프로그래밍 언어로 지정되어 있다. 필자 역시, 빅데이터 분석기사 취득을 위한 실기 시험 준비 뿐만 아니라 최근에 회사 업무에서 대용량의 데이터를 처리할 일이 많아지는 바람에 Python을 이용한 데이터 분.. 2021. 8. 3.
7. Python - timeit모듈, timeit()매서드로 코드 실행시간 계산하기 Python으로 코드를 작성하다보면, 내가 작성한 코드가 얼마나 빠르게 동작하는지 궁금할 때가 있다. 코드의 실행시간이 짧다는 것은, 그만큼 코드가 효율적으로 작성되어 있다는 것이기 때문이다. 프로그램을 막 시작한 초보자라면, 특히 프로그램의 효율적인 동작에 관심이 많은 경우라면, 자신이 작성한 프로그램에 대해 수행 시간을 측정해보려고 시도해보았을 것이다. 하나 예를 들어보자. 1부터 10000000까지의 합을 구하는 코드를 작성한다고 해보자. 이를 구하기 위해 사용할 수 있는 Python 문법으로는 크게 for나 while 루프문이 있다. 과연 어떤 방법이 더 빠를까? 이를 확인하기 위해, 프로그램을 막 배우기 시작하신 분들은 대다수가 아래와 같은 코드로 작성할 것이라 생각한다. 각 함수 내에 time.. 2021. 5. 12.
[자료구조 with Python] 6. 선형 자료 구조 - 배열(5), Hash 충돌과 Chaining 지난 포스팅에서는 배열의 검색 알고리즘 중 하나인 Hash 검색에 대해 알아보았다. Hash 검색은 배열에 저장할 자료가 가지는 특수한 값을 key 값으로 선정하고, 그 key 값으로부터 추출한 Hash 값을 통해 배열에 저장할 index를 지정하는 방식이다. 그리고 Hash 검색을 이용하는 자료구조형은 Python의 Dictionary와 매우 유사하다. Hash를 통해 index를 지정하는 과정에서, 서로 다른 key 값이 배열 내의 같은 index를 지정받을 수 있다. 이렇게 될 경우, 나중에 저장된 값이 이전에 저장된 값을 지워버리기 때문에 정보의 저장이라는 측면에서 문제가 발생하게 된다. 이렇게 Hash 검색 알고리즘과 자료구조에서, 저장할 배열의 위치가 서로 공유되는 현상을 Hash 충돌이라고 .. 2021. 1. 23.
[자료구조 with Python] 5. 선형 자료 구조 - 배열(4), Hash검색 지난 포스팅에서, 배열의 기본 검색 방법인 선형 검색과, 오름차순 또는 내림차순으로 정렬된 자료를 가지는 배열에서 효율적인 검색이 가능한 이진 검색에 대해 알아보았다. 이번 포스팅에서는 지난 포스팅의 내용에 이어, 배열 내의 값을 검색하는 세 번째 방법인 Hash 검색에 대해 알아보려 한다. Hash 검색을 이해하기 위해서는, Hash와 관련된 내용에 대해 먼저 알고 들어갈 필요가 있다. 먼저 Hash 함수, Hash 값에 대해 알아보는 것부터 시작해보자. 1. Hash 란? SNS때문에 Hash라는 단어가 무언가를 설명하는 기호(#)로 일반인에게는 많이 알려져 있지만, 컴퓨터와 관련된 업무를 하는 사람들 사이에서 Hash는 "임의의 값을 특정 길이의 값으로 변환"하는 작업을 의미한다. 특정 값의 Has.. 2021. 1. 10.
[자료구조 with Python] 5. 선형 자료 구조 - 배열(3), 선형/이진 검색 앞선 포스팅에서 배열에 대해 설명을 할 때, 배열은 서로 연관된 정보를 하나의 이름으로 관리하는 자료구조라는 뉘앙스로 설명했던 적이 있다. 관련있는 자료를 인접한 메모리에 저장하기 때문에 일반적인 변수에 선언하여 값을 저장하는 것보다 훨씬 빠르게 값을 검색하는 것이 가능해진다. 배열에 존재하는 값을 검색하는 가장 기본적인 방법은, 배열의 0번 index부터 순차적으로 비교하면서 같은 값이 있는지 확인하는 것이다. 컴퓨터의 성능이 좋거나 배열의 크기가 그렇게 크지 않다면 나쁘지 않은 방법이나, 역으로 배열의 크기가 무수히 커지거나, 컴퓨터 성능이 그렇게 좋지 않은 경우라면 이런 기본적인 검색 방법으로는 효율성이 떨어질 수 밖에 없다. 이러한 이유로, 배열 내에 존재하는 값을 효율적으로 검색하기 위한 몇몇 .. 2021. 1. 5.
[자료구조 with Python] 4. 선형 자료 구조 - 배열(2), 기본 메서드/함수 동작 Python에서 사용되는 모든 자료형은 Class로 정의가 되어 있으며, 각 자료형은 각각의 Method를 가지고 있다. 예를 들어 Python에서 배열의 한 종류인 List는 배열은 내부에 정의된 값의 순서를 반대로 지정하는 reverse() 메서드, 배열의 가운데 또는 마지막에 값을 추가하는 insert(), append() 메서드, 혹은 리스트의 모든 내용을 삭제하는 clear() 메서드 등... Python이 아닌 C와 같이 오래 전에 컴퓨터를 제어하는 언어들은, 위와 같이 배열의 값을 추가하거나, 빼거나, 순서를 변경하는 모든 작업을 일일이 코딩해주어야 했다. 즉, 프로그래머들이 특정 기능을 수행하는 함수를 만들어 코드를 어떻게 작성하느냐에 따라 프로그래밍의 효율과 처리 시간에 차이가 날 수 밖.. 2021. 1. 2.
[자료구조 with Python] 3. 선형 자료 구조 - 배열(1) 1. 배열 거의 모든 프로그래밍 언어는 서로 연관된 변수 값을 묶어서 저장할 수 있는 배열이라는 기능을 제공한다. 이 배열이 프로그래밍에서 매우 유용한 이유는 메모리의 효율적인 관리와 관련이 있다. 배열이 어떻게 효율적인 메모리 관리에 도움이 되는지 살펴보려면 조금 옛날로 돌아가 C언어가 주력으로 사용되던 시점으로 돌아가야 한다. C 언어에서 변수 3개를 int 형태로 선언해보려 한다. 이 변수들을 선언하면 메모리에 다음과 같은 일이 발생한다. 각각의 변수값이 메모리의 임의 구역에 저장되며, 해당 구역은 변수명으로 이름이 지정된다. 대부분의 C 언어 기본서에서는 변수명이 적혀있는 상자에 값이 저장되는 것으로 설명을 하는데, 위의 그림에 대입하자면, 메모리의 여러 상자 중, 1이 들어간 상자는 a라고 지정.. 2020. 12. 13.
[자료구조 with Python] 2. 알고리즘이란. 1. 알고리즘(Algorithm)이란 무엇인가 알고리즘. 요즘에는 유투브 덕에 이 말을 많이 듣는다. "유투브 알고리즘이 나를 이곳으로 이끌었다". 그래서 이 알고리즘이라는 단어가 컴퓨터의 등장 이후 발생한 단어라고 알고 계신 분들이 많을 듯 하다. 하지만, 의외로 이 알고리즘은 최초의 컴퓨터가 탄생하기 이전에도 존재했던 단어이고, 지금도 우리의 일상에서도 물론이거니와 기원전의 생활에서도 얼마든지 볼 수 있다. 알고리즘은 어떤 일을 함에 있어서 "일을 효율적으로 처리하기 위한 절차"라고 생각하면 된다. 예를 들어, 라면을 하나 끓인다고 가정해보자. 라면 끓이는 방법이야 사람마다 제각각이고 개인의 경우에도 자기 기분에 따라 면을 먼저 넣는 날이 있을 것이고 스프를 먼저 넣는 날이 있을 것이다(가장 중요한 .. 2020. 12. 12.
[자료구조 with Python] 1. 왜 갑자기 자료구조인가? 필자가 프로그래밍에 주로 사용하는 언어는 Python이다. 물론, 컴공을 전공한 것도 아니고, 독학으로 깨작깨작 배운 것이 전부이기 때문에 실무를 진행하는 프로그래머만큼은 실력이 쌓이지는 않았다만, 나름 필자의 업무도 Python을 이용한 스크립트 작성이 없지는 않은데다(심지어 그 결과도 좋았고), 혼자 쏠쏠히 필요한 프로그램을 만들어서 사용할 정도는 되었기 때문에 그 이상으로 배움에 큰 의지를 가지지 못해왔던 것도 사실이다. 아, 그래서 왜 갑자기 자료 구조를 보게 되었느냐고? 사연이 있다. 필자는 현재 SE를 업으로 삼고 있다. 이 분야를 잘 모르는 분들에게 조금 풀어서 설명을 하자면, System Engineer인데, 회사에서 판매하는 서버 등에 대해 작동 원리를 익히고, 시스템을 구축하고 문제가 .. 2020. 12. 10.
6. Python - os 모듈: chdir(), listdir(), getcwd() 함수 간만의 Python 포스팅이다. 지난 포스팅에서는 파이썬의 기본 모듈인 OS 모듈에서 사용할 수 있는 system() 함수에 대해 알아보았다. system() 함수는 운영체제의 명령어를 Python에서 바로 사용할 수 있도록 도와주는 함수임을 확인해보았다. 그런데, system() 함수를 import 하여 이런 저런 명령어의 결과를 확인해보다보면, cd 명령어를 사용했음에도 불구하고, 다른 폴더의 파일을 인식하지 못하거나, 현재 작업 폴더 경로나 폴더 내 파일 목록을 변수에 저장할 수 없음을 발견하신 분들도 있을 것이다. 아래의 예시를 보자. 분명 system 함수를 사용하여 cd로 디렉토리 이동 명령어를 수행했음에도 불구하고, 현재 작업중인 디렉토리 경로는 변하지 않고 "blitz" 폴더에 머물러있는 .. 2020. 8. 17.
5. Python - OS 모듈, system() 함수 프로그래밍을 하다보면, 프로그래밍 동작에 필요한 설정 파일과 폴더를 만들어 동작시키는 과정에 이르는 때가 온다. 그리고, 프로그래밍의 동작에 따라, 특정 설정 파일이나 폴더가 이 생성되거나, 다른 경로로 이동하거나, 삭제되는 상황도 분명 존재할 것이다. 보통 이러한 파일 생성, 이동, 삭제 작업은 윈도우에서 제공하는 CMD(Command) 창의 명령어로 해결이 가능하다. 폴더의 생성으로 몇가지 예시를 들자면... 현재 폴더에 존재하는 파일과 폴더 목록을 출력함 현재의 경로에서 새 폴더를 생성 현재의 경로에 존재하는 폴더 삭제 ...와 같은 명령어들이 있다. 그렇다면 Python으로 코딩을 하다가, 어떤 파일을 다른 곳으로 옮기거나, .. 2020. 7. 1.
728x90
반응형