데이터 과학을 위한 소프트웨어 엔지니어링 (노트북에서 확장 가능한 시스템으로, 효율적이고 견고한 파이썬 데이터 과학 코드 작성하기 | 반양장)

데이터 과학을 위한 소프트웨어 엔지니어링 (노트북에서 확장 가능한 시스템으로, 효율적이고 견고한 파이썬 데이터 과학 코드 작성하기 | 반양장)

$31.45
Description
효율적이고 견고한 파이썬 데이터 과학 코드 작성하기
재현 가능하고, 견고하며, 확장 가능한 코드를 작성하는 능력은 데이터 과학 프로젝트의 성공에 핵심적인 요소이며, 프로덕션 코드를 다루는 작업에 절대적으로 필수적이다. 이 책은 데이터 과학과 소프트웨어 엔지니어링 사이의 간극을 메우고, 소프트웨어 엔지니어링의 모범 사례를 데이터 과학에 적용하는 방법을 명확하게 설명한다. 넘파이, 팬더스 등을 이용한 파이썬 예제를 통해 더 나은 데이터 과학 코드를 작성하는 방법을 배울 수 있다.
저자

캐서린넬슨

저자:캐서린넬슨(CatherineNelson)
프리랜서데이터과학자.이전에는SAPConcur의수석데이터과학자로서프로덕션머신러닝애플리케이션을작성했다.머신러닝의설명가능성,모델분석,개인정보보호등에관심이많다.《살아움직이는머신러닝파이프라인설계》(한빛미디어,2021)를공저했고,시애틀PyLadies의조직자이기도하다.

역자:김정인
플랫폼기업의빅데이터서비스조직에서근무하고있다.업계용어중심으로쓰면나태하게보일까걱정되고,모두우리말로바꾸자니전문가들과소통이어렵지는않을까하는걱정사이에,이제는어떻게하면챗GPT보다더나은가치를제공할수있는지까지고민을하나더얹어번역하고있다.이런고민을책문장마다잘녹여내기바라며옮기지만,그에대한인정은독자들몫이니마음을내려놓는연습도하고있다.옮긴책으로는《파이썬데이터사이언스핸드북(개정판)》,《실전!파이토치딥러닝프로젝트》,《강화학습/심층강화학습특강》,《실전!텐서플로2를활용한딥러닝컴퓨터비전》등이있다.

목차


옮긴이머리말xi
베타리더후기xiii
시작하며xvi
감사의글xxii
표지에대하여xxiii

CHAPTER1좋은코드란무엇인가?1
1.1좋은코드가왜중요한가?2
1.2변화하는요구사항에대응하기3
1.3간결성3
__1.3.1같은일을반복하지말라(DRY원칙)5
__1.3.2장황한코드를피하라6
1.4모듈성7
1.5가독성9
__1.5.1표준과규칙9
__1.5.2이름10
__1.5.3코드정리11
__1.5.4문서화11
1.6성능12
1.7안정성12
__1.7.1오류와로깅13
__1.7.2테스트13
1.8요약14

CHAPTER2코드성능분석17
2.1성능개선기법18
2.2코드시간측정20
2.3코드프로파일링23
__2.3.1cProfile23
__2.3.2line_profiler26
__2.3.3Memray를활용한메모리프로파일링27
2.4시간복잡도30
__2.4.1시간복잡도추정방법30
__2.4.2빅오표기법31
2.5요약34

CHAPTER3데이터구조를효율적으로사용하기35
3.1파이썬기본데이터구조36
__3.1.1리스트36
__3.1.2튜플39
__3.1.3딕셔너리39
__3.1.4집합41
3.2넘파이배열43
__3.2.1넘파이배열기능43
__3.2.2넘파이배열의성능고려사항44
__3.2.3대스크를사용한배열연산48
__3.2.4머신러닝에서의배열50
3.3팬더스데이터프레임51
__3.3.1데이터프레임기능52
__3.3.2데이터프레임의성능고려사항53
3.4요약55

CHAPTER4객체지향프로그래밍과함수형프로그래밍57
4.1객체지향프로그래밍58
__4.1.1클래스,메서드,속성58
__4.1.2직접클래스정의하기61
__4.1.3OOP원리64
4.2함수형프로그래밍68
__4.2.1람다함수와map()69
__4.2.2함수를데이터프레임에적용하기70
4.3어떤패러다임을사용할것인가?71
4.4요약72

CHAPTER5오류,로깅,디버깅73
5.1파이썬에서의오류73
__5.1.1파이썬오류메시지읽기74
__5.1.2오류처리75
__5.1.3오류일으키기79
5.2로깅81
__5.2.1무엇을로깅할것인가?81
__5.2.2로깅설정82
__5.2.3로그남기는방법83
5.3디버깅85
__5.3.1디버깅전략86
__5.3.2디버깅도구87
5.4요약93

CHAPTER6코드포매팅,린팅,타입검사95
6.1코드포매팅과스타일가이드96
__6.1.1PEP897
__6.1.2임포트포매팅98
__6.1.3블랙을사용해자동으로코드포매팅하기100
6.2린팅102
__6.2.1린팅도구103
__6.2.2IDE에서린팅하기106
6.3타입검사107
__6.3.1타입주석108
__6.3.2mypy로타입검사하기110
6.4요약111

CHAPTER7코드테스트113
7.1왜테스트를작성해야하는가?114
7.2언제테스트할까?115
7.3테스트작성및실행방법116
__7.3.1기본테스트116
__7.3.2예상치못한입력테스트118
__7.3.3Pytest로자동화된테스트실행하기120
7.4테스트종류123
__7.4.1단위테스트123
__7.4.2통합테스트124
7.5데이터검증125
__7.5.1데이터검증예제125
__7.5.2Pandera를사용해데이터검증하기126
__7.5.3Pydantic을이용한데이터검증128
7.6머신러닝을위한테스트130
__7.6.1모델학습테스트131
__7.6.2모델추론테스트131
7.7요약132

CHAPTER8설계와리팩터링133
8.1프로젝트설계와구조134
__8.1.1프로젝트설계시고려사항134
__8.1.2머신러닝프로젝트예제136
8.2코드설계138
__8.2.1모듈식코드139
__8.2.2코드설계프레임워크140
__8.2.3인터페이스와계약141
__8.2.4결합도141
8.3노트북을확장성있는스크립트로144
__8.3.1왜노트북대신스크립트를사용하는가?144
__8.3.2노트북에서스크립트생성하기145
8.4리팩터링148
__8.4.1리팩터링전략149
__8.4.2리팩터링작업예제150
8.5요약152

CHAPTER9문서화153
9.1코드베이스내에서의문서154
__9.1.1이름155
__9.1.2주석157
__9.1.3독스트링159
__9.1.4Readme,튜토리얼,기타장문의문서162
9.2주피터노트북에서의문서화163
9.3머신러닝실험에대해문서화하기165
9.4요약167

CHAPTER10코드공유:버전관리,종속성,패키징169
10.1깃을사용한버전관리170
__10.1.1깃의작동방식171
__10.1.2변경사항추적및커밋172
__10.1.3원격과로컬174
__10.1.4브랜치와풀리퀘스트175
10.2종속성과가상환경179
__10.2.1가상환경180
__10.2.2pip를사용한종속성관리182
__10.2.3Poetry를사용한종속성관리183
10.3파이썬패키징185
__10.3.1패키징기초186
__10.3.2pyproject.toml188
__10.3.3패키지빌드및업로드189
10.4요약191

CHAPTER11API193
11.1API호출194
__11.1.1HTTP메서드와상태코드194
__11.1.2SDGAPI에서데이터받아오기195
11.2FastAPI를사용해API생성하기199
__11.2.1API구성200
__11.2.2API에기능추가하기203
__11.2.3API에요청하기207
11.3요약209

CHAPTER12자동화및배포211
12.1코드배포212
12.2자동화예제213
__12.2.1프리-커밋훅214
__12.2.2깃허브액션217
12.3클라우드배포222
__12.3.1컨테이너와도커223
__12.3.2도커컨테이너구축223
__12.3.3구글클라우드에API배포하기226
__12.3.4다른클라우드에API배포하기228
12.4요약228

CHAPTER13보안231
13.1보안이란무엇인가?231
13.2보안위험233
__13.2.1자격증명,물리적보안,사회공학적기법234
__13.2.2타사패키지234
__13.2.3파이썬pickle모듈235
__13.2.4버전관리위험235
__13.2.5API보안위험236
13.3보안수칙236
__13.3.1보안리뷰및정책236
__13.3.2보안코딩도구237
__13.3.3간단한코드스캔238
13.4머신러닝을위한보안241
__13.4.1ML시스템공격241
__13.4.2ML시스템에서의보안수칙243
13.5요약244

CHAPTER14소프트웨어업계에서일하기247
14.1개발원칙및실전247
__14.1.1소프트웨어개발생애주기247
__14.1.2폭포수소프트웨어개발방법론249
__14.1.3애자일소프트웨어개발방법론249
__14.1.4애자일데이터과학250
14.2소프트웨어업계에서의역할251
__14.2.1소프트웨어엔지니어251
__14.2.2QA혹은테스트엔지니어253
__14.2.3데이터엔지니어254
__14.2.4데이터분석가254
__14.2.5제품관리자255
__14.2.6UX연구원256
__14.2.7디자이너257
14.3커뮤니티258
__14.3.1오픈소스258
__14.3.2이벤트에서연설하기260
__14.3.3파이썬커뮤니티261
14.4요약262

CHAPTER15다음단계265
15.1코드의미래267
15.2코드에담긴당신의미래270
15.3감사의말270

찾아보기272

출판사 서평

데이터과학은코드에서이뤄진다

협업이필요한대규모프로젝트에서는데이터과학자에게도유지보수성이높은코드를작성하는것이요구된다.그럼에도데이터과학자는교육과정에서소프트웨어엔지니어링역량을높일기회가많지않고,현업에서배우고싶더라도마땅한방법을찾기어려운실정이다.

이책은소프트웨어엔지니어링의모범사례를데이터과학에적용하는방법을다룬다.성능,객체지향,테스트,오류처리,린팅,문서화,버전관리,패키징,API,배포등일반적인소프트웨어엔지니어링기술을파이썬예제를통해설명한다.데이터과학자에게친숙한예제를통해더나은파이썬코드를작성하는방법을배울수있고,이는개발자와의협업및프로덕션환경에서작업하는데에큰무기가된다.

통계나머신러닝기법에정통한데이터과학자조차소프트웨어엔지니어링에대한이해가부족해한계에부딪히곤한다.대규모프로젝트를성공으로싶다면,이책이거대한간극을메워주는미싱링크역할을해줄것이다.

대상독자
코딩스킬을향상하고자하는데이터과학유관분야종사자
데이터과학학위를막마쳤거나독학으로배운주니어데이터과학자
수학/과학등다른분야에서데이터과학으로전환중인분야입문자
개발자와의협업이나교류가잦은관련업무종사자

주요내용
효율적이고강력한파이썬코드작성하기
데이터구조와객체지향프로그래밍이해하기
테스트,오류처리,로깅모범사례
안전한코드작성하기
데이터과학코드를더큰코드베이스와통합하기
코드를명확하고능숙하게문서화하기
코드패키징및공유하기
API작성방법배우기
소프트웨어엔지니어와효과적으로협업하기
데이터과학프로젝트를프로덕션단계로전환하기