분석하기 좋은 데이터 만들기의 시작, 『파이썬을 활용한 데이터 길들이기』

데이터를 모아 분석하고 결과를 요약해 다른 사람들에게 전달하고자 하는 데이터 분석가, 기획자, 개발자 여러분. 오늘도 어김없이 고통의 시간이 찾아왔습니다. 자, 이제 여러분은 어떤 문제에 대한 답을 찾는 데 있어 필요한 데이터를 찾아 나서야 합니다. 이를 위해 하루에도 무수히 쏟아지는 기사, SNS 등을 통해 크고 작은 원시 데이터를 모으고, 정형과 비정형으로 뒤섞인 데이터를 확인하면서 데이터를 분석하는 데 의미 있는 결과를 만들어 낼 수 있는 데이터를 정리해 나갑니다. 데이터를 수집하고 전처리하는 과정은 데이터 기반 작업에서 정말 중요한, 첫 단계입니다. 원시 데이터는 노이즈가 많고, 불안정하고, 값이 누락된 경우가 있습니다.  따라서 이러한 데이터를 사용하면 분석 결과에 심각한 오류가 발생할 수 있습니다. 데이터 전처리 과정을 소홀히 했다가는 처음부터 다시 해야 하는 지옥문을 열게 될 수도 있습니다.

다운로드

여러분은 지금, 이러한 데이터 전처리 전반에 걸친 작업을 어떻게 하고 계신가요? 수많은 출처에서 데이터를 복사하고 스프레드시트에 붙여 넣어 처리하는 단순 노가다를 반복하고 있진 않으신가요? 도구를 사용하고 있긴 하지만 단순한 사용을 넘어 좀 더 편리하게, 황금 같은 내 시간을 줄여 줄 ‘뭔가’가 있을 거란 생각에 하루에도 몇 번이나 구글링을 하고 있진 않나요? 만일 프로그래머라면, 반복적인 데이터 전처리를 좀 더 효과적으로 하는 개발 방식을 궁금해 할 수도 있습니다. 고민에 대한 해결책을 찾는 방법은 많습니다. 인터넷 어딘가에 숨어 있는 잘 정리된 글을 찾아 떠날 수도 있고, 주변에 데이터 분석 분야에 정통한 멘토가 있다면 조언을 구할 수도 있겠지요. 그러나 그런 도움을 받기 어려운 상황이라면 또는 이런저런 길을 통해서 적절한 해결책을 찾지 못한 분이라면,  <파이썬을 활용한 데이터 길들이기>에서 그 답을 한번 찾아 보면 어떨까요?

입체표지

<파이썬을 활용한 데이터 길들이기>는 <Data Wrangling with Python>의 번역서로, 말 그대로 ‘파이썬을 활용한 데이터 랭글링’을 다룹니다. ‘데이터 랭글링’. 참 생소한 용어죠? 데이터 랭글링‘은 지저분하거나 정제되지 않은 데이터를 유용하게 만드는 과정을 가리키는 용어로, 미가공된 데이터를  쓸모 있는 형태로 변환하는 전반적인 작업을 의미합니다. 데이터 전처리보다는 상위 개념이고, 데이터 분석보다는 절차적으로 이전에 오는 개념입니다.

이 책은 스프레드시트 사용을 넘어 파이썬 프로그래밍 언어를 활용하여, 쉽고 빠르게 지저분한 데이터를 사용 가능한 형식으로 처리할 수 있도록 돕기 위해 쓰였습니다. 데이터 분석 전에 매번 반복하고 있는 수작업을 상상해 보세요. 지루하고 반복적이란 것을 떠나 아마 매주 한두 시간 정도를잡아먹고 있을 텐데, 여러분의 시간은 소중합니다.. 이러한 작업을 자동화하는 스트립트를 작성할 수 있다면 어떨까요? 데이터 처리에 걸리는 시간이 30초도 되지 않을 것입니다. 절약되는 시간에 다른 일을 하거나 다른 작업들을 자동화 할 수도 있습니다. 데이터를 변형시켜 현재의 형태에서는 어찌할 수 없는 정보를 처리하는 작업을 수행할 수도 있습니다.

Hands-Hand-icon

잠깐! 왜 파이썬인가요? 꼭 파이썬이 아니더라도 몇 가지 프로그래밍 언어를 데이터 랭글링에 쓸 수 있습니다. 엑셀과 같은 프로그램을 이용해도 데이터 랭글링이 가능합니다. 엑셀을 이용해 프로그래밍을 하더라도 파이썬을 이용했을 때와 동일한 결과물을 얻을 수 있지만, 엑셀과 같은 프로그램이 처리하지못하는 작업들이 존재하기 때문에 효율성의 측면에서는 차이가 존재합니다. 이 책에서 파이썬을 사용하는 이유는 파이썬이 사용하기 편리하며 파이썬을 이용하여 좀 더 간단하고 직관적으로 데이터 랭글링을 할 수 있기 때문입니다.

note-2

역자 이제원 님의 추천 : 데이터 수집부터 처리, 분석, 시각화, 제품화 모두를 커버하고 싶다면 파이썬을, 고급 분석과 화려한 시각화에 집중하고 싶다면 R 사용을 권합니다.

이 책은 데이터 수집에서 클리닝, 결과 제시, 스케일링, 자동화까지의 다양한 과정을 다룹니다. 이 책의 목표는 여러분이 쉬운 데이터 랭글링 방법을 익혀 데이터의 내용과 분석 자체에 좀 더 집중하고 시간을 투자할 수 있도록 돕는 것입니다. 이 책을 읽고 나면 현재 사용하고 있는 도구의 한계를 넘어서서 수작업을 대체 할 수 있는 깔끔하고 읽기 쉬운 파이썬 코드를 작성할 수 있게 될 것이며,
데이터 처리를 자동화하고 파일 편집과 클리닝 작업을 정기적으로 할 수 있을 것입니다. 뿐만 아니라, 이전에는 접근할 수 없었던 장소에서 데이터를 수집하거나 파싱하고 더 큰 규모의 데이터세트를 처리할 수 있게 될 것입니다.

블로그_표1

<그림 : 이 책에서 다루는 내용의 전체 흐름 >

이 책은 프로젝트 기반 접근 방식을 택하고 있으며, 각 장은 뒤로 갈수록 점점 더 복잡한 내용을 다룹니다.  연구 문제를 만들어 내는 것부터 시작해 데이터 수집, 데이터 클리닝, 데이터 조사, 결과 토론, 큰 규모의 데이터세트 스케일링, 그리고 이러한 과정을 자동화 하는 방법을 다루고 있어 따라하는 과정을 통해 배워 나갈 수 있습니다.

1. 먼저, 계획에 따라 데이터를 수집하고 필요한 형태로 전환하는 기술에 대해 다룹니다.

  • 3장 기계가 읽을 수 있는 데이터
  • 4장 엑셀 파일 다루기
  • 5장 파이썬에서의 PDF와 문제 해결
  • 6장 데이터 수집 및 저장하기

3, 4, 5장에서는 CSV, 엑셀(Excel), XML, JSON, PDF 등의 형태로 된 파일에서 데이터를 추출하는 방법을 소개합니다. 6장에서는 데이터 수집과 관련한 사람 간 의사소통에 필요한 작업 절차에 대해 이야기하고 법률적인 측면에 대해 간단히 다룹니다.

2. 어떤 정보가 쓸모 있고 어떤 정보가 그렇지 않은지를 판단하면서 데이터가 지니고 있는 이야기를 찾는 과정을 살펴봅니다.

  • 7장 데이터 클리닝하기: 조사, 매칭 그리고 서식화
  • 8장 데이터 클리닝하기: 표준화와 스크립트
  • 9장 데이터 탐색과 분석

여기서는 다양한 오픈소스 툴을 소개하고, 맞닥뜨리게 될 다양한 데이터 관련 이슈들을 다룹니다. 클리닝 스크립트를 작성하거나 정형화된 접근 방식을 사용하는 것 중 어떤 것을 선택해야 하는지 이야기, 중복 기록, 이상치, 서식 문제 등 흔히 볼 수 있는 오류들을 해결하는 방법을 다룹니다. 이 내용과 연결해서 11장, 12장, 13장에서는 웹사이트에서 API를 통해 데이터를 추출하는 기법을 살펴봅니다.

3. 파이썬을 이용해 데이터를 보여주는 방법을 알아봅니다.

  • 10장 데이터 표현하기

10장 이후에는 데이터를 통해 무엇을 이야기하고 싶은지 결정하고 데이터를 정리 및 처리한 후에 파이썬을 이용해 여러 가지 형태로 이야기를 전달하는 방법과 다양한 발표 방식을 비교해 봅니다. 이후 14장에서는 적은 시간을 투자하여 많은 데이터를 처리하기 위한 데이터 분석 과정의 스케일링(scaling)에 대해 이야기하고, 프로젝트를 자동화 시킴으로써 지속적으로 결과 보고를 얻을 수 있는 방법을 살펴봅니다.

분야를 막론하고 산업 분야에서 ‘데이터’를 떼어 놓는 일은 상상하기도 어려워졌을 만큼 중요한 부분을 차지하고 있습니다. 앞으로는 전통적인 방식으로 얻었던 데이터뿐만 아니라 IoT나 새로운 산업 분야로부터 얻어진 다양한 데이터 형식을 유연하게 처리할 수 있는 데이터 전문가에 대한 수요가 높아질 것입니다. 가까운 미래를 대비해 이 책이 독자들의 시야를 넓히고 지식을 더욱 풍요롭게 할 간접 경험의 도구가 되기를 바랍니다.

본문 미리보기

> 구입처

[ Yes24 ] [ 교보문고 ] [ 알라딘 ] [ 인터파크 ]

DevOps와 SE를 위한 리눅스 커널 이야기

표지앞_small

 

서버=리눅스라고 말해도 과언이 아닐 정도로 전 세계 대다수의 대형 서버가 리눅스를 사용하고 있습니다. 최근에는 클라우드를 이용해 누구나 자신만을 위한 서버를 만들 수 있게 되어 서버의 문턱도 낮아졌습니다. 관련 기술의 발전에 따라 서버의 구축과 관리를 위한 소프트웨어가 많이 나와서 더욱 편리해졌지만, 역으로 인프라에 대한 지식이나 관심이 줄어든 것도 사실입니다. 하지만 하드웨어에 관한 지식이 없다면 어떤 문제가 발생했을 때 무엇이 원인인지 파악하기 어렵습니다. 무엇보다 하드웨어의 관리를 위해서는 커널을 이해해야 합니다.

 

커널은 오랜 세월 기능이 추가되고 개선되어 오면서 완벽하게 이해하기 힘들 정도로 방대해졌습니다. 하지만 변하지 않는 기본 기능들이 있죠. 이런 근간이 되는 기능에 대한 이해를 바탕으로 시스템의 문제를 파악하고 해결하는 것이 시스템 엔지니어링의 기본이라 할 수 있습니다. 특히나 요즘과 같이 클라우드 기반으로 서버들이 동작하는 경우에는 서버의 성능을 최대로 끌어내야 하고, 이런 작업은 커널에 대한 이해가 바탕이 되어야 합니다.

Kernel_Layout.svg

 

『DevOps와 SE를 위한 리눅스 커널 이야기』는 리눅스 서버를 관리할 때 만날 수 있는 문제점들과 이를 해결하는 방법을 제시하고 있습니다. 교과서에 나오는 내용이 아닌 실무 경험을 통해 찾아낸 방법들이죠. 카카오에서 시스템 엔지니어로 근무하고 있는 강진우님은 현업에서 경험한 다양한 상황과 문제를 바탕으로 이 책을 집필하셨습니다. 문제점과 그에 따른 해결책을 심도 있게 보여줄 뿐만 아니라 문제점을 파악하고 하드웨어 정보를 알아내는 데 유용한 명령어, 정보를 해석하는 방법, 애플리케이션 테스트와 튜닝까지 실무에서 궁금할 법한 내용을 설명하고 있습니다.

 

이 책은 리눅스 환경에서 애플리케이션을 운영하고 있는 서버 개발자, 개발과 운영을 함께 담당하고 있는 데브옵스(DevOps), 그리고 리눅스 시스템의 전반적인 운영을 담당하고 있는 시스템 엔지니어들을 위한 책입니다. 어느 정도 운영 경험이 있으면 더 쉽게 이해할 수 있지만 리눅스를 조금이라도 경험해 보았다면 읽기에 무리가 없습니다.

 

실무에서 궁금해 하는 내용을 쉽게 정리한 책

실무에서 항상 궁금했지만 찾기 어려운 정보를 쉽게 정리해 주는 책입니다. 교과서에 나오는 내용이 아닌 실무를 하면서 찾아낸 방법이기 때문에 더욱 마음에 와닿는 것 같습니다. 또한 문제 해결 방법을 같이 살펴보기 때문에 이를 통해서 독자 스스로 자신의 역량을 강화하는 데 큰 도움이 될 것이라 생각합니다.

고우찬(카카오 인프라 & 데이터플랫폼팀 팀장)

 

대규모 서비스를 시스템 엔지니어의 시각에서 보여주는 책

문제가 발생하면 코드의 이슈에 집중하는 소프트웨어 엔지니어와 달리 시스템 엔지니어는 시스템의 설정부터 네트워크 환경 등, 코드가 아닌 해당 시스템에 대한 시각으로 문제에 접근합니다. 대규모 서비스에서 시스템 엔지니어는 어떻게 사고하는지, 어떤 정보를 봐야 하는지 알고 싶으신 분들은 꼭 읽어보시길 바랍니다.

강대명(유데미 데이터 엔지니어, 오픈소스 컨트리뷰터)

 

이 책에서 다루는 내용은 다음과 같습니다.

 

– 시스템 구성 정보 확인하기

– top 명령으로 프로세스 정보 확인하기

– Load Average로 시스템 부하 확인하기

– swap과 메모리 증설의 연관 관계

– NUMA 아키텍처와 메모리 관리

– TCP Keepalive로 종단 간 연결 유지하기

– TIME_WAIT 소켓이 서비스에 미치는 영향

 

이 책은 다음 서점에서 구입하실 수 있습니다.

YES24 | 교보문고 | 인터파크 | 알라딘