효율적이고 견고한 파이썬 데이터 과학 코드 작성하기
재현 가능하고, 견고하며, 확장 가능한 코드를 작성하는 능력은 데이터 과학 프로젝트의 성공에 핵심적인 요소이며, 프로덕션 코드를 다루는 작업에 절대적으로 필수적이다. 이 책은 데이터 과학과 소프트웨어 엔지니어링 사이의 간극을 메우고, 소프트웨어 엔지니어링의 모범 사례를 데이터 과학에 적용하는 방법을 명확하게 설명한다. 넘파이, 팬더스 등을 이용한 파이썬 예제를 통해 더 나은 데이터 과학 코드를 작성하는 방법을 배울 수 있다.
도서구매 사이트(가나다순)
[교보문고] [도서11번가] [알라딘] [예스이십사] [인터파크] [쿠팡] |
출판사 제이펍
저작권사 O'Reilly Media
원서명 Software Engineering for Data Scientists (9781098136192)
도서명 데이터 과학을 위한 소프트웨어 엔지니어링
부제 노트북에서 확장 가능한 시스템으로, 효율적이고 견고한 파이썬 데이터 과학 코드 작성하기
지은이 캐서린 넬슨
옮긴이 김정인
감수자 (없음)
시리즈 (없음)
출판일 2025. 02. 28
페이지 300쪽
판 형 46배판변형(188*245*17.5)
제 본 무선(soft cover)
정 가 29,000원
ISBN 979-11-94587-00-2 (93000)
키워드 데이터사이언스, 소프트웨어공학, 코딩, numpy, pandas, 노트북, 객체지향, 테스트, 로깅, 패키징
분 야 데이터 과학 / 파이썬 / 빅데이터
관련 사이트
■ 아마존 도서 페이지
■ 저작권사 도서 페이지
관련 시리즈
■ (없음)
관련 포스트
■ 2025.02.06 - [출간 전 책 소식] - 데이터 과학과 소프트웨어 공학의 만남
관련 도서
관련 파일 다운로드
■ (없음)
강의 보조 자료(교재로 채택하신 분들은 https://jpub.tistory.com/notice/1076을 통해 다음 자료를 요청하실 수 있습니다.
■ 본문의 그림과 표
미리보기(앞부속, 본문 일부)
정오표 페이지
■ https://jpub.tistory.com/468827
도서구매 사이트(가나다순)
[교보문고] [도서11번가] [알라딘] [예스이십사] [인터파크] [쿠팡] |
도서 소개
데이터 과학은 코드에서 이뤄진다
협업이 필요한 대규모 프로젝트에서는 데이터 과학자에게도 유지보수성이 높은 코드를 작성하는 것이 요구된다. 그럼에도 데이터 과학자는 교육 과정에서 소프트웨어 엔지니어링 역량을 높일 기회가 많지 않고, 현업에서 배우고 싶더라도 마땅한 방법을 찾기 어려운 실정이다.
이 책은 소프트웨어 엔지니어링의 모범 사례를 데이터 과학에 적용하는 방법을 다룬다. 성능, 객체지향, 테스트, 오류 처리, 린팅, 문서화, 버전 관리, 패키징, API, 배포 등 일반적인 소프트웨어 엔지니어링 기술을 파이썬 예제를 통해 설명한다. 데이터 과학자에게 친숙한 예제를 통해 더 나은 파이썬 코드를 작성하는 방법을 배울 수 있고, 이는 개발자와의 협업 및 프로덕션 환경에서 작업하는 데에 큰 무기가 된다.
통계나 머신러닝 기법에 정통한 데이터 과학자조차 소프트웨어 엔지니어링에 대한 이해가 부족해 한계에 부딪히곤 한다. 대규모 프로젝트를 성공으로 싶다면, 이 책이 거대한 간극을 메워주는 미싱 링크 역할을 해줄 것이다.
대상 독자
- 코딩 스킬을 향상하고자 하는 데이터 과학 유관 분야 종사자
- 데이터 과학 학위를 막 마쳤거나 독학으로 배운 주니어 데이터 과학자
- 수학/과학 등 다른 분야에서 데이터 과학으로 전환 중인 분야 입문자
- 개발자와의 협업이나 교류가 잦은 관련 업무 종사자
주요 내용
- 효율적이고 강력한 파이썬 코드 작성하기
- 데이터 구조와 객체지향 프로그래밍 이해하기
- 테스트, 오류 처리, 로깅 모범 사례
- 안전한 코드 작성하기
- 데이터 과학 코드를 더 큰 코드베이스와 통합하기
- 코드를 명확하고 능숙하게 문서화하기
- 코드 패키징 및 공유하기
- API 작성 방법 배우기
- 소프트웨어 엔지니어와 효과적으로 협업하기
- 데이터 과학 프로젝트를 프로덕션 단계로 전환하기
지은이 소개
캐서린 넬슨(Catherine Nelson)
프리랜서 데이터 과학자. 이전에는 SAP Concur의 수석 데이터 과학자로서 프로덕션 머신러닝 애플리케이션을 작성했다. 머신러닝의 설명 가능성, 모델 분석, 개인정보보호 등에 관심이 많다. 《살아 움직이는 머신러닝 파이프라인 설계》(한빛미디어, 2021)를 공저했고, 시애틀 PyLadies의 조직자이기도 하다.
옮긴이 소개
김정인
플랫폼 기업의 빅데이터 서비스 조직에서 근무하고 있다. 업계 용어 중심으로 쓰면 나태하게 보일까 걱정되고, 모두 우리말로 바꾸자니 전문가들과 소통이 어렵지는 않을까 하는 걱정 사이에, 이제는 어떻게 하면 챗GPT보다 더 나은 가치를 제공할 수 있는지까지 고민을 하나 더 얹어 번역하고 있다. 이런 고민을 책 문장마다 잘 녹여내기 바라며 옮기지만, 그에 대한 인정은 독자들 몫이니 마음을 내려놓는 연습도 하고 있다. 옮긴 책으로는 《파이썬 데이터 사이언스 핸드북(개정판)》, 《실전! 파이토치 딥러닝 프로젝트》, 《강화학습/심층강화학습 특강》, 《실전! 텐서플로 2를 활용한 딥러닝 컴퓨터 비전》 등이 있다.
차례
옮긴이 머리말 xi
베타리더 후기 xiii
시작하며 xvi
감사의 글 xxii
표지에 대하여 xxiii
CHAPTER 1 좋은 코드란 무엇인가? 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
CHAPTER 2 코드 성능 분석 17
2.1 성능 개선 기법 18
2.2 코드 시간 측정 20
2.3 코드 프로파일링 23
__2.3.1 cProfile 23
__2.3.2 line_profiler 26
__2.3.3 Memray를 활용한 메모리 프로파일링 27
2.4 시간 복잡도 30
__2.4.1 시간 복잡도 추정 방법 30
__2.4.2 빅오 표기법 31
2.5 요약 34
CHAPTER 3 데이터 구조를 효율적으로 사용하기 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
CHAPTER 4 객체지향 프로그래밍과 함수형 프로그래밍 57
4.1 객체지향 프로그래밍 58
__4.1.1 클래스, 메서드, 속성 58
__4.1.2 직접 클래스 정의하기 61
__4.1.3 OOP 원리 64
4.2 함수형 프로그래밍 68
__4.2.1 람다 함수와 map() 69
__4.2.2 함수를 데이터프레임에 적용하기 70
4.3 어떤 패러다임을 사용할 것인가? 71
4.4 요약 72
CHAPTER 5 오류, 로깅, 디버깅 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
CHAPTER 6 코드 포매팅, 린팅, 타입 검사 95
6.1 코드 포매팅과 스타일 가이드 96
__6.1.1 PEP8 97
__6.1.2 임포트 포매팅 98
__6.1.3 블랙을 사용해 자동으로 코드 포매팅하기 100
6.2 린팅 102
__6.2.1 린팅 도구 103
__6.2.2 IDE에서 린팅하기 106
6.3 타입 검사 107
__6.3.1 타입 주석 108
__6.3.2 mypy로 타입 검사하기 110
6.4 요약 111
CHAPTER 7 코드 테스트 113
7.1 왜 테스트를 작성해야 하는가? 114
7.2 언제 테스트할까? 115
7.3 테스트 작성 및 실행 방법 116
__7.3.1 기본 테스트 116
__7.3.2 예상치 못한 입력 테스트 118
__7.3.3 Pytest로 자동화된 테스트 실행하기 120
7.4 테스트 종류 123
__7.4.1 단위 테스트 123
__7.4.2 통합 테스트 124
7.5 데이터 검증 125
__7.5.1 데이터 검증 예제 125
__7.5.2 Pandera를 사용해 데이터 검증하기 126
__7.5.3 Pydantic을 이용한 데이터 검증 128
7.6 머신러닝을 위한 테스트 130
__7.6.1 모델 학습 테스트 131
__7.6.2 모델 추론 테스트 131
7.7 요약 132
CHAPTER 8 설계와 리팩터링 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
CHAPTER 9 문서화 153
9.1 코드베이스 내에서의 문서 154
__9.1.1 이름 155
__9.1.2 주석 157
__9.1.3 독스트링 159
__9.1.4 Readme, 튜토리얼, 기타 장문의 문서 162
9.2 주피터 노트북에서의 문서화 163
9.3 머신러닝 실험에 대해 문서화하기 165
9.4 요약 167
CHAPTER 10 코드 공유: 버전 관리, 종속성, 패키징 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.2 pip를 사용한 종속성 관리 182
__10.2.3 Poetry를 사용한 종속성 관리 183
10.3 파이썬 패키징 185
__10.3.1 패키징 기초 186
__10.3.2 pyproject.toml 188
__10.3.3 패키지 빌드 및 업로드 189
10.4 요약 191
CHAPTER 11 API 193
11.1 API 호출 194
__11.1.1 HTTP 메서드와 상태 코드 194
__11.1.2 SDG API에서 데이터 받아오기 195
11.2 FastAPI를 사용해 API 생성하기 199
__11.2.1 API 구성 200
__11.2.2 API에 기능 추가하기 203
__11.2.3 API에 요청하기 207
11.3 요약 209
CHAPTER 12 자동화 및 배포 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
CHAPTER 13 보안 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.5 API 보안 위험 236
13.3 보안 수칙 236
__13.3.1 보안 리뷰 및 정책 236
__13.3.2 보안 코딩 도구 237
__13.3.3 간단한 코드 스캔 238
13.4 머신러닝을 위한 보안 241
__13.4.1 ML 시스템 공격 241
__13.4.2 ML 시스템에서의 보안 수칙 243
13.5 요약 244
CHAPTER 14 소프트웨어 업계에서 일하기 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.2 QA 혹은 테스트 엔지니어 253
__14.2.3 데이터 엔지니어 254
__14.2.4 데이터 분석가 254
__14.2.5 제품 관리자 255
__14.2.6 UX 연구원 256
__14.2.7 디자이너 257
14.3 커뮤니티 258
__14.3.1 오픈소스 258
__14.3.2 이벤트에서 연설하기 260
__14.3.3 파이썬 커뮤니티 261
14.4 요약 262
CHAPTER 15 다음 단계 265
15.1 코드의 미래 267
15.2 코드에 담긴 당신의 미래 270
15.3 감사의 말 270
찾아보기 272
제이펍 소식 더 보기(제이펍의 소통 채널에서 더욱 다양한 소식을 확인하세요!)
포스트 유튜브 인스타그램 트위터 페이스북 |
'도서 소개' 카테고리의 다른 글
LUVIT♥ 새로운 웹 개발의 시작 스벨트 (2) | 2025.02.11 |
---|---|
대규모 리액트 웹 앱 개발 (0) | 2025.02.03 |
최고의 AI 영상 Sora로 제작하기 (0) | 2025.01.08 |
150분이면 충분한 중고등학교 기초 수학 (2) | 2024.12.30 |
테스트 너머의 QA 엔지니어링 (0) | 2024.12.30 |