프로그래밍 언어/python

[python의 쓸모] 5가지 유명한 Application: Web 개발부터 AI까지

이현찬 2023. 2. 27. 00:37
728x90

python는 표현의 간결함, 사용의 편리함과 다양한 역할을 수행할 수 있는 다재다능함으로 가장 인기있는 프로그래밍 언어 중 하나이다. python은 웹 개발에서 머신러닝이나 과학적인 연산까지 다양한 application에서 사용되고 있다. python의 인기는 점차 증가하는 추세로 개발자나 연구자에게 사랑받는 최고의 언어다.


이번 포스팅을 통해 대표적인 python 언어를 활용한 application을 간략하게 소개하고자 한다. 기존에 머신러닝/딥러닝 등 AI나 과학 연산, 통계 시뮬레이션에 활용한 경험이 있는데, 이번 기회에 다른 분야에 조사한 내용을 정리했다.

Web Development

python은 web 기반 application이나 동적 website를 개발하는데 사용됨다. DjangoFlask와 같은 개발 Framework를 활용해 손쉽게 web 개발이 가능하다고 한다. Django는 back-end부터 front-end까지의 기능을 모두 구현할 수 있는 Full-stack Framework로 다양한 기능을 제공하고 Flask는 최소한의 기능을 제공하며 사용가자 customize해 사용할 수 있도록 지원하고있다. Startup이나 규모가 작은 business에서 사용하기에 적합하다. 초기에 Instagram도 Django를 활용해 개발되었다는 이야기를 들었다.

Data Analysis and Visualization

python으로 개발된 수 많은 데이터 분석 및 시각화 관련 라이브러리가 존재한다. 대표적인 예시로 NumPy, PandasMatplotlib이 있다. NumPy는 수치 연산에 최적화된 numpy array를 지원하고 고성능 선형 대수 연산, Tensor 연산, Fourier 변환을 가능하게 했다. Pandas는 데이터 분석과 처리를 위한 라이브러리로 Series, DataFrame의 두 가지 형태의 데이터 구조를 지원한다. Serise는 1차원 데이터 형태이고, DataFrame은 DB Table과 같이 2차원 데이터 구조이다. Pandas는 데이터 filtering, 선택, merging, 통계분석 기능을 제공한다. Matplotlib은 data visualization 기능을 제공한다. 선형 그래프, 산점도, 히스토그램 등의 다양한 그래프 생성이 가능하고 customize할 수 있는 부분이 많은 자유도 높은 라이브러리이다. seaborn 등의 라이브러리는 matplotlib을 사용 편의성, 심미적 이점을 취하기 위해 만들어진 wrapper로 이해할 수 있다.
경험상 위 라이브러리에 대한 깊은 이해와 숙달 정도에 따라 구현 실력이 크게 차이가 발생한다. 이 분야에 뛰어들겠다고 마음을 먹었다면 이 내용을 다루는 도서를 한 권 먼저 학습하는 것을 추천한다.
위 세 라이브러리는 데이터 분석 뿐만 아니라 과학 연산, AI 관련된 Task를 수행하기 위한 최소 지식으로 여겨지고 있다. 이 라이브러리들을 통해 거대한 데이터를 다룰 수 있고, 쉽게 시각화 할 수 있도록 해 Data에 대한 이해를 높히고 데이터 기반 의사결정을 용이하게 한다. 현재 파이썬은 데이터 분석에서 필수 tool으로 평가받는다.

Machine Learning and Artificial Intelligence

TensorFlow, PyTorch, Scikit-Learn 등 AI 관련 Framework의 개발로 pythons은 더 큰 번성을 누리게 되었다. 인공지능 관련 강의를 듣게 되면 NumPy만 가지고 간단한 neural network 구현을 하는 과제를 수행하게 된다. 가장 간단한 network를 구현하는데 100 줄 내외의 코드를 작성해야하는데 이 framework를 사용하면 훨씬 복잡한 network를 생성, 학습 시키는 코드를 50줄 이내로 작성할 수 있다.
위의 라이브러리를 통해 분류, 회귀 등의 기능 뿐 아니라 이미지 인식, 자연어 처리, 예측 모델 생성 등의 복잡한 기능을 수행하는 모델을 생성할 수 있고, 연구를 수행할 수 있을 정도의 customizing을 할 수 있다.

Automation

python을 통해 OS, Web이나 특정 프로그램을 조작할 수 있어 자동화 업무에 사용할 수 있다. 앞선 posting들에서 소개한 xlwingswin32com등의 라이브러리로 Microsoft Office 제품을 다뤄 업무를 자동화 할 수 있고 os, shutil 등의 라이브러리를 사용해 디렉토리 생성, 삭제, 탐색이나 파일 이동의 기능을 구현할 수 있다.
특히 beautifulsoup이나 Selenium 라이브러리를 활용해 웹 자동화나 test 자동화를 수행할 수 있다.

Scientific Computing

자연과학, 공학에서 필요한 과학적인 연산을 지원하는 라이브러리들이 있다. SciPySymPy같은 tool은 수치 연산, 최적화, symbolic mathematics과 같은 기능을 구현하는데 도움을 준다. 이런 tool을 기반해 개발된 연구를 수행할 수 있기에 연구자들에게도 사랑받고 있다. 경험상 위에서 소개한 NumPy등의 라이브러리만 사용해도 많은 부분을 해결할 수 있지만 간혹 SciPy를 사용할 필요가 있는 경우가 있었다.

결론

결론적으로 python은 다재 다능함, 개발의 편리함으로 인해 인기를 얻게 되었고 많은 개발자들의 노고로 인해 개발된 수 많은 Framework, Library 덕분에 Web 개발에서 과학 연구에까지 큰 인기를 얻을 수 있게 되었다.

참고

[1] 23년 2월 기준 TIOBE Index 1위 python
[2] 파이썬으로 excel 파일 다루기
[3] 파이썬으로 excel 파일 다루기
[4] 파이썬으로 pptx 파일 다루기