빠르고유연한데이터처리를위한파이썬라이브러리 Pandas 공개 SW 개발자 Lab 오픈소스프론티어 3 기김영근

Similar documents
PowerPoint 프레젠테이션

Slide 1

DBMS & SQL Server Installation Database Laboratory

슬라이드 1

설계란 무엇인가?

Microsoft PowerPoint - chap01-C언어개요.pptx

PowerPoint Presentation

Multi-pass Sieve를 이용한 한국어 상호참조해결 반-자동 태깅 도구

17장 클래스와 메소드

소규모 비즈니스를 위한 플레이북 여기서 다룰 내용은 다음과 같습니다. 1. YouTube 소개 2. YouTube에서 비즈니스를 위한 채널 만들기 3. 눈길을 끄는 동영상 만들기 4. 고객의 액션 유도하기 5. 비즈니스에 중요한 잠재고객에게 더 많이 도달하기

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

라우터

2013 <D55C><ACBD><C5F0><BC31><C11C>(<CD5C><C885>).pdf

/ KOSSLab


SW

1 SW

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

설계란 무엇인가?

Windows 10 General Announcement v1.0-KO

Microsoft PowerPoint - ch07 - 포인터 pm0415

SIGIL 완벽입문

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

문서의 제목 나눔고딕B, 54pt

11장 포인터

PowerPoint 프레젠테이션

데이터 시각화

슬라이드 1

02장.배열과 클래스

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

Algorithm_Trading_Simple

dist=dat[:,2] # 기초통계량구하기 len(speed) # 데이터의개수 np.mean(speed) # 평균 np.var(speed) # 분산 np.std(speed) # 표준편차 np.max(speed) # 최대값 np.min(speed) # 최소값 np.me

내지(교사용) 1-3부

PowerPoint 프레젠테이션

강의 개요

Spring Boot/JDBC JdbcTemplate/CRUD 예제

PowerPoint 프레젠테이션

A hwp

Microsoft PowerPoint - MonthlyInsighT-2018_9월%20v1[1]

HX170 설치부품 HX series HX0170IP03-FCR-19 HX0170IP03-FCR-90 HX0170IP03-BF-19

슬라이드 1

[Brochure] KOR_TunA

소개 Mac OS X (10.9, 10.10, 10.11, 10.12) 와 OKI 프린터호환성 Mac OS X 를사용하는 PC 에 OKI 프린터및복합기 (MFP) 제품을연결하여사용할때, 최고의성능을발휘할수있도록하는것이 OKI 의목 표입니다. 아래의문서는 OKI 프린터및

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지

Agenda 오픈소스 트렌드 전망 Red Hat Enterprise Virtualization Red Hat Enterprise Linux OpenStack Platform Open Hybrid Cloud

<5B DB1B3C0B0C0DAB8A65FC0A7C7D15FB5F0C0DAC0CEBBE7B0ED5FC5F8C5B62E706466>

Microsoft PowerPoint - chap11-포인터의활용.pptx

PowerPoint Presentation

Microsoft PowerPoint - 30.ppt [호환 모드]

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

PowerPoint Presentation

오토 2, 3월호 내지최종


03_queue

Microsoft PowerPoint - Java7.pptx

윈도우즈프로그래밍(1)

© Rohde & Schwarz; R&S®CDS Campus Dashboard Software

문서의 제목 나눔고딕B, 54pt

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

KNK_C_05_Pointers_Arrays_structures_summary_v02

Install stm32cubemx and st-link utility

Studuino소프트웨어 설치

고객 카드

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Multi-pass Sieve를 이용한 한국어 상호참조해결 반-자동 태깅 도구

PDF_Compass_32호-v3.pdf

<35B9DAC1F6BCF62CC0CCBFECC8C62CB7F9B5BFBCAE2E687770>

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

임베디드디바이스개발시커널로리눅스를많이사용하는데, 그때그커널과함께리눅스명령어도필요하게된다. 모든명령어를지원하기위해서는다수의개별적인패키지들이필요하다. 한프로젝트에서그많은명령어를한번에지원해준다면자원제약적인임베디드환경에서공간효율성이극대화될것이다. 상대적으로경량화된리눅스명령어세


041~084 ¹®È�Çö»óÀбâ

Microsoft Word _mentor_conf_output5.docx

Spring Boot

주식회사커브 Atlassian Jira 소개 이문서는 Atlassian Jira 의주요핵심기능을소개하기위해작성되었다. Jira Software 개요 Jira Software? 소프트웨어개발과 Jira Jira 사용자역할 Jira Software 기능 Jira 프로젝트템

슬라이드 1

Microsoft PowerPoint - chap06-2pointer.ppt

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

PowerPoint 프레젠테이션

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

쉽게 풀어쓴 C 프로그래밍

<C3E6B3B2B1B3C0B C8A32DC5BEC0E7BFEB28C0DBB0D4292D332E706466>

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

EDB 분석보고서 (04.06) ~ Exploit-DB( 에공개된별로분류한정보입니다. Directory Traversal users-x.php 4.0 -support-x.php 4.0 time-

Software Verification Team 오준 임국현 주영진 김슬기

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

ADP-2480

hwp

adfasdfasfdasfasfadf

웹개발을위한 ComponentOne 사용법 (2) 권대건 부산대학교컴퓨터공학과 Abstract 최근웹개발이활성화되면서전문가를위한여러가지 Tool 웹애플리케이션형태로제공하는경우가늘고있다. ComponentOne 은.NET 기반의 UI C

Microsoft 을 열면 깔끔한 사용자 중심의 메뉴 및 레이아웃이 제일 먼저 눈에 띕니다. 또한 은 스마트폰, 테블릿 및 클라우드는 물론 가 설치되어 있지 않은 PC 에서도 사용할 수 있습니다. 따라서 장소와 디바이스에 관계 없이 언제, 어디서나 문서를 확인하고 편집

마켓온_제품소개서_ key

Microsoft PowerPoint - C++ 5 .pptx

도서관문화 Vol.51 NO.9(2010.9) 가을은 독서의 계절?! 16

I I-1 I-2 I-3 I-4 I-5 I-6 GIS II II-1 II-2 II-3 III III-1 III-2 III-3 III-4 III-5 III-6 IV GIS IV-1 IV-2 (Complement) IV-3 IV-4 V References * 2012.

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

Transcription:

빠르고유연한데이터처리를위한파이썬라이브러리 Pandas 공개 SW 개발자 Lab 오픈소스프론티어 3 기김영근

pandas 는데이터를쉽고빠르게다양한형식으로가공할수있는풍부한자료구조와함수를제공 하는파이썬라이브러리로, 파이썬을활용한데이터분석에서빠질수없는필수스택중하나다. 최근불고있는코딩열풍과함께데이터로부터인사이트를얻으려는니즈가결합되면서파이썬은 주목받고있으며덩달아 pandas 의인기도치솟고있다. PyData, SciPy 같은과학계산커뮤니티는 물론이고일반인들까지도파이썬과 pandas 를접해보려는시도가크게늘어났다. 이글에서는 pandas 소개및프로젝트의현재상황과앞으로의계획을다룬다. 프로젝트명 Pandas 개요 Flexible and powerful data analysis / manipulation library for Python 특징 직관적인자료구조, BSD License 목표 빠르고유연한데이터처리 기대효과 - 리퍼지토리 https://github.com/pandas-dev/pandas [ 목차 ] 1 pandas 소개 2 pandas 현재 3 pandas 미래

1 pandas 소개 [ 그림 1] http://pandas.pydata.org pandas는헤지펀드에서퀀트로근무하고있던 Wes McKinney가업무에바로사용할수있는적합한도구가없음에답답함을느끼고직접파이썬을배우면서만들기시작한라이브러리다. 본인의전공은수학이었고프로그래밍에익숙하지않았기때문에초창기에는 CS를전공한같은학교친구인 Chang She와함께파이썬을공부하면서코드의많은부분을작성하기시작했으며 2008년부터본격적으로개발이진행되었다. pandas는직관적인자료구조를제공하여실제데이터분석업무과정에서 80% 의시간을차지하는데이터정제를손쉽게할수있도록도와주며간단한통계및시각화를위한기능도내장하고있다. 필요한경우외부라이브러리를이용해서복잡한분석이나좀더디테일한시각화작업을하는것도용이하다. 성능을위해많은부분을 C 또는 Cython으로작성하였으며내부적으로 NumPy를사용하고있는데, NumPy에서제공하는단일데이터타입의 N-차원배열 (ndarray) 에추가로여러가지데이터타입을사용할수있는기능이라던가, 인덱스뿐만아니라이름으로데이터에접근할수있는기능을제공하여데이터를보다쉽게담고확인할수있도록구현되어있다.

이런기능은모두 pandas의기본자료구조인 Series와 DataFrame을통해제공되며빠른처리를위한벡터연산을지원하고 Group-by 연산과 merge, join, concat 같은데이터재성형 (Re-shaping) 편의기능역시제공하고있다. 다양한외부파일포맷 (csv, json, excel, SQL, msgpack, Google Big Query 등 ) 의읽기 / 쓰기를제공하여현실에서만나게되는보편적인파일에담긴데이터를쉽게불러오고또반대로결과를해당포맷으로저장하는것도가능하다. pandas에대해서알아보려면 Series 와 DataFrame, 이두가지자료구조에익숙해질필요가있다. Series는일련의객체를담을수있는 1차원배열같은자료구조다 ( 어떤 NumPy 자료형이라도담을수있다 ). 그리고인덱스에는배열의데이터에연관된이름을가지고있다. 가장간단한 Series 객체는배열로부터생성할수있다. DataFrame은표같은스프레드시트형식의자료구조로여러개의칼럼이있는데, 각칼럼은서로다른종류의값 ( 숫자, 문자열, 불리언등 ) 을담을수있다. DataFrame은로우와칼럼에대한인덱스가있는데, 이 DataFrame은같은인덱스를가지는 Series 객체를담고있는파이썬사전으로생각하면편하다. R의 data.frame 같은다른 DataFrame과비슷한자료구조와비교했을때, DataFrame 에서의로우연산과칼럼연산은거의대칭적으로취급된다. [ 그림 2] pandas 의자료구조

[ 그림 3] pandas 와관련없음 프로젝트의이름인 pandas는 PANel DAta System에서따온것이며팬더와는전혀아무런관련이없다. BSD 라이선스를채택하고있으며 2016년 11월현재, Github에서 7,449개의스타를얻었고포크횟수가 3000을넘겼다. 100개이상의커밋을보낸코어개발자는 11명이지만전체기여자는 640명을넘어섰고, API 문서와튜토리얼을제공하는공식홈페이지 (http://pandas.pydata.org) 는월간순수방문자수가 5만에서 7만에이를정도로인기있는프로젝트다. 버그리포팅및이슈관리는 Github 에서관리하고있으며최근에는프로젝트가커짐에따라기존에 pydata 그룹아래에있던리퍼지토리를 pandas-dev 그룹으로옮겼다. 개발에대한논의는메일링과 Gitter 채널을주로이용하며파이썬개발커뮤니티의특징인스프린트를주기적으로진행하고있다. 스프린트는파이썬컨퍼런스인파이콘의숨은메인행사로, 파이썬프로젝트메인테이너와사용자가함께모여밀린이슈를처리하거나밀도높은협업을통해큰기능을개발하는자리이다. 또한, 스프린트는해당프로젝트에기여하고싶은사용자들에게기여경험을제공해주기위한목적도있는데, 이를통해새로운기여자를발굴하고프로젝트가건강하게유지될수있도록하는연료역할을하고있다. pandas 이슈페이지에서는모든이슈에대해서카테고리와주제뿐만아니라해당이슈의난이도와

소요시간에따라상세한라벨로나눠서관리하고있으며해결하기쉬운이슈는새로운기여자를 위해남겨두고기여경험을할수있도록배려하고있다. [ 그림 4] pandas 프로젝트이슈페이지 2 pandas 현재 pandas는버저닝을보수적으로해왔는데상황에따라조금씩연기되기도하지만기본적으로는 2 개월마다메이저릴리즈를원칙으로하고있으며현재최신버전은 0.19.1이다. 다음릴리즈는 0.20.0이될예정이지만, 1.0 릴리즈에대한논의 (https://github.com/pandas-dev/pandas/issues/10000) 가이미시작되었으며 1.0을기점으로 1.x/2.x 브랜치를나누어유지보수와새버전개발을독립적으로관리하게된다. 현재개발팀은그동안쌓인기술부채를청산하지않으면안될상황이라판단하고있으며 1.x 개발 진행과병행하여기본이자핵심자료구조인 Series 와 DataFrame 내부구조에대한대대적인재설 계를진행하고있다. 현재까지의버전은코드가제멋대로늘어나서 20 만라인을넘어섰다. 함수개수만도 6,000 개에육

박하며새로운데이터타입을추가하기어려운상황이며, 특수한상황을제외하고는여전히단일스레드로동작하며일부코드는 Cython 수준에서 GIL을해제하기도하지만여전히많은부분이 GIL로부터자유롭지도않다. 메모리사용량을예측하기쉽지않은문제와다른시스템과연동이효율적이지않게구성되어있는등, 누적된기술부채로인해칼을들지않으면안되는상황이다. 사실이런상황은많은오픈소스프로젝트에서도발생하는일인데, 어떤프로젝트가좋은아이디어와어느정도쓸만한퀄리티로공개되면서입소문을탄다. 사용자가늘고컨트리뷰터도늘면서프로젝트는호황을누리게되고건강한문화가자리잡으면서원저자가프로젝트에서빠지게되더라도 ( 실제로 Wes를비롯한초기개발자가창업을이유로프로젝트를한동안떠나있었다.) 다른컨트리뷰터들이프로젝트를계속이끌어간다. 프로젝트가점점더인기를얻고더많은개발자와사용자층이생기게되고, 컨티넘애널리틱스같은오픈소스를지원하는회사에서프로젝트전담개발자를투입하여프로젝트를체계적으로돕기시작한다. 여기까지는인기오픈소스프로젝트의성공적인성장스토리처럼들리지만사실그이면에는기술부채가쌓일수밖에없는이유가있다. 기업이오픈소스에개발자를지원하는이유는여러가지가있겠으나자사또는고객이해당프로젝트를사용하고있으면버그수정이나사용자들의요구사항이제때반영되지않아서곤란한상황을방지하기위한이유도있다. 컨티넘애널리틱스의경우자체개발하여오픈소스로공개한훌륭한프로젝트도많이가지고있고 PyData 커뮤니티에우호적인기업으로, 위에서얘기한초기개발자가개인적인이유로프로젝트에시간을거의쓰지못하던시기에 pandas 프로젝트를거의먹여살렸다고할수있을정도로많은이바지를했다. 하지만기술트렌드변화에따라적절한기술적인의사결정을해야하는시기에초기개발자의부재로인해설계의도에대한커뮤니케이션을충분히할수없어서코드가계속낡아가고또, 주로고객들의요구사항에맞춰급하게수정을해야하는기업의오픈소스개발자입장에서는충분한고민을하지못하고코드를추가하다보면알게모르게작은기술부채들이계속쌓이게된다.

[ 그림 5] pandas 와 matplotlib 을이용해서그린 pandas 함수길이분포 실제로 pandas 프로젝트초기시절에 Wes 가강하게지키고자했던철학중하나는함수를작게나 눈다는원칙이었는데현재는덩치가큰함수들이상당수출현하고있다. ( 그래도여전히 6,000 여함 수중에서 50 줄을넘어가는함수는 1% 가되지않는다.) 3 pandas 미래 pandas의코드베이스는작성된지 8년이넘었다. 0.1 버전에서겨우 1만라인에불과했던소스코드는현재 20만라인을넘어섰고기술부채가발목을잡는횟수가눈에띄게늘었다. 이에따라현재브랜치는기능개선보다는버그수정과안정성에만주력하여향후 1.x 버전릴리즈로사용하기로했고새로운 2.0버전을위한설계가진행중이다. pandas를처음개발했을때가장많이어필했던부분은속도이다. Wes 스스로도많은 pandas 관련발표에서기존도구에비해서빠르다는점을강조했으나 2.0에서는더빠르게동작하도록성능개선에많은노력을기울일예정이다. 또한, 멀티코어같은하드웨어자원을효율적으로활용할수있도록하는개선작업과꾸준히문제로제기되었던메모리사용량을예측할수없는문제도개선될예정이다. 이를위해순수파이썬으로구현된 pandas.core 모듈에기능별로 Cython 혹은 C 구현을안고있는 현재상태에서 pandas 2.0 부터는코어기능을 C++ 로작성할 libpandas.so 라이브러리로분리하고

이를파이썬 wrapper 라이브러리로감싸게된다. libpandas는다른파이썬라이브러리개발자들을위한 C/C++ API로제공할계획이며이를통해 pandas의 Series나 DataFrame의내부구조를직접활용할수있게된다. 이렇게되면현재 C 혹은 Cython 레벨의인터페이스를요구하는 scikit-learn 같은다른프로젝트에서도 pandas 객체데이터에쉽게접근할수있게된다. [ 그림 6] pandas 0.x/1.x

[ 그림 7] pandas 2.0 또한, 파이썬커뮤니티의움직임에맞춰파이썬 2 지원을종료하고파이썬 3.5 이상만을지원하려 는논의도진행중이다. 이렇게함으로써 asyncio 와같은파이썬 3 에서만사용가능한기능의이점 을취할수도있을것이다.