[Pandas] explode데이터 프레임을 다루다보면, 하나의 열에 리스트나 튜플 형태로 저장된 데이터를 여러 개의 행으로 나누어야 할 때가 있다. Pandas의 `explode()` 함수는 이러한 상황에서 매우 유용하게 사용할 수 있는 기능이다. explode()`explode`는 데이터프레임(Dataframe)이나, 시리즈(Series)의 특정 열에있는 리스트, 튜플 또는 set과 같은 iterable 데이터를 각각 개별적인 행으로 변환해주는 함수다. 리스트가 아닌 데이터에는 그대로 유지되며, NaN값은 영향을 받지 않는다. 다음은 explode를 사용한 간단한 예제다.import pandas as pddf = pd.DataFrame({ 'id': [1, 2, 3], 'values': [..
[Python] Jira API 사용하기 현재 업무에서 협업 도구로 Atlassian의 Jira를 사용하고있다.얼마전 파이썬에서 지라를 불러와 태스크를 자동화하는 업무를 맡아서 진행했었는데. 그 때 사용했던 것이 Jira 라이브러리였다.해당 라이브러리에 대해 이번 포스팅에서 다뤄보고자 한다. JIRA APIJIRA REST API를 사용하면 JIRA의 데이터를 프로그래밍적으로 다룰 수 있다.프로젝트 정보 조회이슈 생성, 업데이트, 삭제사용자 관리댓글, 파일 첨부 등 다양한 작업파이썬에서는 Atlassian이 제공하는 Jira 라이브러리를 사용해 JIRA API에 쉽게 접근이 가능하다. JIRA 라이브러리 설치 및 환경 설정먼저 jira 라이브러리를 설치해준다.pip install jiraJira API는..
[Pandas] 데이터프레임 컬럼 순서 변경하기데이터 프레임을 다루다보면, 데이터 프레임의 컬럼 순서를 변경해야하는 경우가 종종 있다.이번 포스팅에선 데이터프레임의 컬럼 순서를 변경하는 몇 가지 방법에 대해 알아보고자 한다. 샘플 데이터 프레임 생성먼저 다음과 같이 데이터 프레임을 생성해준다.import pandas as pd data = { 'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}df = pd.DataFrame(data) reindex`reindex` 메소드를 사용하면 원하는 순서로 컬럼을 재배치 할 수 있다.new_order = ['C', 'A', 'B']df_reordered = df.reindex(columns=new_order) 직접 ..
[Pandas] 결측값 처리얼마전 데이터프레임을 다루면서, 결측치(`NaN`)가 있으면 같은 행의 데이터로 덮어씌우는 방식으로 결측치를 처리한 적이 있었다. Pandas에는 이러한 결측값을 효과적으로 처리할 수 있는 다양한 방법이 있어, 해당 방법을 정리해보고자 한다. 결측값 확인하기데이터 프레임에서 결측값을 확인하는 것은 결측값 처리를 시작하는 첫 단계이다.결측값을 확인 하기 위해 다음과 같은 메서드를 사용할 수 있다.import pandas as pddata = {'A': [1, 2, None], 'B': [None, 3, 4]}df = pd.DataFrame(data)## isnull()# isnull() 메서드는 각 요소가 결측값인지 여부를 Boolean 값으로 반환한다.df.isnull()## ..
[Pandas] SQL 쿼리로 데이터프레임으로 불러오기 (read_sql)`read_sql`은 SQL 쿼리의 결과를 Pandas 데이터 프레임으로 불러오는 방법을 제공한다. 데이터베이스의 데이터를 직접 조작하고 시각화할 때 주로 사용한다. read_sql()일반적으로 SQLAlchemy 엔진 또는 데이터베이스 커넥션 객체(sqlite3)와 함께 사용된다.이 함수는 `SELECT` 쿼리 뿐만 아니라 테이블 전체를 가져오는 기능도 지원한다.import pandas as pddf = pd.read_sql(sql, con) SELECT 쿼리를 실행하여 DataFrame으로 불러오기이 포스팅에선 `SQLAlchemy` 엔진을 생성하여 쿼리를 실행하고 데이터프레임으로 불러온다.먼저 SQLAlchemy 패키지를 설치..
[Python] Tabulate Tabulate란?Python의 tabulate 라이브러리는, 데이터를 표 형식으로 쉽게 출력할 수 있는 유용한 도구다.tabulate를 사용하면 리스트, 딕셔너리, Numpy 배열 등 다양한 데이터 구조를 읽기 쉬운 표로 변환할 수 있다.기본 사용법`tabulate` 라이브러리는 아래 명령어를 통해 설치가 가능하다.pip install tabulate먼저 리스트를 사용해 간단한 표를 만들어보자. from tabulate import tabulatedata = [ ["이름", "나이", "직업"], ["홍길동", 25, "개발자"], ["김철수", 30, "디자이너"], ["이영희", 22, "학생"]]table = tabulate(data, head..
[Python] Asyncioasyncioasyncio는 asycn/await 구문을 사용하여 동시성 코드를 작성하는 라이브러리다.asyncio는 고성능 네트워크 및 웹서버, 데이터베이스 연결 라이브러리, 분산 작업 큐 등을 제공하는 여러 파이썬비동기 프레임워크의 기반으로 사용된다. import asyncioasync def main(): print('Hello ...') await asyncio.sleep(1) print('... World!')asyncio.run(main()) asyncio는 다음과 같은 API를 제공한다.고수준 API코루틴, 네트워크 IO/IPC, Queue, 동기화 저수준 API이벤트 루프, Transport, Future Runnerasyncio.run(coro..
[Python] 동시성 프로그래밍 (2) 코루틴(Coroutine) 동시성 (Concurrency) 과 병렬성 (Parallelism) 동시성(Concurrency)이란, 여러 작업이 겹쳐서 실행될 수 있는 방식을 의미한다.이를테면, 여러 작업이 동시에 실행되는 것처럼 보이지만, 실제로는 CPU가 짧은 시간 단위로 여러 작업을 번갈아가면서 처리하는 방식이다. 병렬성(Parallelism)이란, 여러 작업을 실제로 동시에 처리하는 것을 의미한다. 즉, 여러 CPU코어가 각각 별도의 작업을 동시에 수행하는 방식이다. 병렬성은 실제로 물리적인 여러 프로세서나 CPU 코어가 필요하다. 즉, 동시성은 "논리적"에 가깝고 병렬성은 "물리적"에 가깝다. 코루틴(Coroutine)코루틴은 파이썬을 비롯한 여러 프로그래..
[Python] 동시성 프로그래밍 (1) 프로세스, 스레드동시성 프로그래밍은 여러 작업을 동시에 수행할 수 있도록 하는 프로그래밍 기법이다.이는 여러 프로세스나 스레드를 사용하여, 동시에 실행되는 프로그램을 작성하는 것을 포함한다. 동시성 프로그래밍은 특히 멀티코어 프로세서와 네트환경에서 중요하며, 이 방식은 다음과 같은 두 가지 주요 개념들을 포함한다.병렬성 (Parallelism)여러 작업이 동시에 실행되는 것비동기성 (Asynchrony)작업이 시작된 후, 그 작업이 완료될 때 까지 기다리지 않고 다른 작업을 수행 프로세스(Process) 스레드(Thread)멀티코어 프로세서의 발전으로, CPU의 모든 코어를 활용하여 작업을 병렬로 처리함으로써 처리 시간을 단축할 수 있다. CPU는 프로세스를 실행..
[etc] 동기(Synchronous)와 비동기(Asynchronous) 이번에 Tornado 웹프레임워크를 알게되었는데, 해당 웹프레임워크는 비동기 네트워킹을 지원하는 것이 주요 특징이다. 토네이도의 동작 방식을 이해하기 전 동기와 비동기에 대해서 조금 자세히 알아보고자 한다. 프로그래밍에서 동기(Synchronous)와 비동기(Asynchronous)는 작업 처리 방식의 두 가지 주요 패턴이다. 동기(Synchronous)"순서대로" 처리되는 방식이다.말그래도 한 작업이 완료되어야 다음 작업이 시작된다. 예를 들어, 버스가 한 곳에 정차하면 승객이 모두 타고 내린 후에야 출발한다. 승객이 다 탑승할 때까지 기다려야하기 때문이다. 동기 방식은 코드가 간단하고 이해하기 쉬우며, 디버깅이 용이하지만 (문제..
[Tornado] Tornado 알아보기 TornadoTornado는 FriendFeed 에서 개발된 Python 웹 프레임워크이자 비동기 네트워킹 라이브러리다.비차단 네트워크 I/O를 사용하여 Tornado는 수만 개의 개방형 연결로 확장이 가능하다. 따라서 long polling, WebSockets 및 각 사용자에 대해 같이 장기적인 연결 유지가 필요한 애플리케이션에 이상적이다. Threads and WSGI토네이도는 대부분의 Python의 웹프레임워크와 다르게 WSGI(Webserver Gateway Interface) 기반이 아니며, 일반적으로 프로세스 당 하나의 스레드로만 실행된다. 모듈에서 WSGI를 일부 지원하지만, 대부분의 애플리케이션은 WSGI를 사용하는 대신 토네이도 자체 인터페이스..
[Python] pip freeze 명령어 사용 시 패키지 버전이 제대로 나오지 않을 때현재 서버의 패키지 버전을 확인하여 패키지의 취약점을 검사를 해야하는 일이 있었는데,pip freeze 명령어로 버전을 확인할 때 버전명이 다음과 같이 명시가 되는 경우가 있다.jsonpatch @ file:///home/conda/...찾아보니 pip 19.1 버전부터 일반 버전 지정자 대신 직접 참조를 사용하도록 허용을 한다고 한다.직접 참조는 위와 같이 지정자 @와 명시적 URL로 구성된다. PEP 440 – Version Identification and Dependency Specification | peps.python.orgThis PEP describes a scheme for identifying ve..