파이썬 기초 문법부터, 데이터 분석을 위한 다양한 실무예제까지 설명합니다!
파이썬은 문법이 간결해서 프로그래밍을 처음 시작하는 초보자가 배우기 쉬운 언어입니다. 이 책은 다양한 예제를 바탕으로 기본적인 파이썬 문법에서부터 실무에 필요한 데이터 분석 기법까지 상세히 설명하고 있어서 파이썬을 처음 배우는 초보자뿐만 아니라 실무에 바로 적용할 수 있는 데이터 처리 방법을 찾고 있는 분들에게 좋은 기본서가 될 것입니다.
이 책에서 배운 내용을 각자의 업무에 적용하면 복잡한 데이터 처리 과정은 단순해지고, 지루하고 반복적인 작업은 자동화할 수 있습니다.
특히, 이번 개정판에서는 마지막 장에 '실전 데이터 분석 프로젝트'를 추가하여 데이터 분석 프로세스 및 심화 분석 기법을 배우고 서울시 업무추진비 데이터를 통해 데이터 수집, 결측치 처리, 데이터 요약/재구성 등 실제 데이터를 분석하는 전체 과정을 학습해 볼 수 있게 구성하였습니다.
★ 이 책에서 다루는 내용 ★
- 아나콘다(Anaconda)를 활용한 파이썬 개발 환경 설치 및 기본 문법
- 문자열 데이터 처리(분리, 삭제, 연결, 찾기, 바꾸기), 객체와 클래스의 개념 및 활용
- NumPy와 Pandas를 이용한 배열 및 구조적 데이터 처리와 분석
- Matplotlib을 이용한 데이터 시각화(다양한 그래프 출력, 꾸미기, 한글 폰트 사용)
- 엑셀 파일 다루기(데이터 읽기, 쓰기, 통합, 계산, 시각화)
- Requests와 Beautiful Soup를 이용한 웹 데이터(HTML 파일) 수집 및 처리(웹 스크레이핑)
- 웹 API를 이용한 데이터 요청 및 응답 데이터(JSON 및 XML 형식) 처리
- 트위터에 트윗을 작성하고 메시지 가져오기, 정부의 공개 데이터 획득을 위한 Open API 활용
- 데이터 분석 프로세스 및 분석 기법 심화, 서울시 업무추진비 데이터를 활용한 실전 데이터 분석
도서 상세 이미지
최은석
GIST에서 박사학위를 받고 삼성전자에서 센서 기반 인터랙션 설계, 센서 신호 처리, 임베디드 시스템 S/W 관련 업무를 하고 있다. 항상 좀 더 좋은 방법이 없을까 고민하며 새로운 아이디어를 제시하고 구현하는 과정을 즐긴다. 파이썬을 이용한 업무 자동화, 데이터 처리 및 분석, 마이크로컨트롤러 응용에 관심이 많으며 주변 사람들에게 파이썬의 편리함을 알리고 있다.
- ▣ 01장: 파이썬 프로그래밍 언어
- 1.1 왜 프로그래밍 언어를 배워야 하나요?
- 1.2 프로그래밍 언어란?
- 1.3 왜 파이썬인가요?
- ▣ 02장: 파이썬 시작하기
- 2.1 파이썬 개발 환경 설치
- 아나콘다 배포판 내려받기
- 아나콘다 설치
- 2.2 첫 번째 코드 작성하기
- 2.3 코드 저장 및 실행
- 파이썬 코드 저장
- 파이썬 코드 실행
- 2.4 통합 개발 환경에서 코딩하기
- 통합 개발 환경의 필요성
- Spyder 실행 및 설정
- Spyder 에디터에서 코드 작성
- 2.5 주피터 노트북에서 코딩하기
- 주피터 노트북 실행
- 주피터 노트북 사용법
- 주피터 노트북에서 코드 작성
- 2.6 정리
- 2.1 파이썬 개발 환경 설치
- ▣ 03장: 파이썬을 계산기처럼 이용하기
- 3.1 간단한 사칙 연산
- 3.2 거듭 제곱과 나머지
- 3.3 과학적 표기법
- 3.4 진수 표현과 변환
- 3.5 논리 연산 및 비교 연산
- 3.6 정리
- ▣ 04장: 변수와 자료형
- 4.1 변수
- 4.2 문자열
- 문자열 만들기
- 문자열 다루기
- 4.3 리스트
- 리스트 만들기
- 리스트 다루기
- 4.4 튜플
- 튜플 만들기
- 튜플 다루기
- 4.5 세트
- 세트 만들기
- 세트의 교집합, 합집합, 차집합 구하기
- 리스트, 튜플, 세트 간 타입 변환
- 4.6 딕셔너리
- 딕셔너리 만들기
- 딕셔너리 다루기
- 4.7 정리
- ▣ 05장: 제어문
- 5.1 조건에 따라 분기하는 if 문
- 단일 조건에 따른 분기(if)
- 단일 조건 및 그 외 조건에 따른 분기(i f ~ else)
- 여러 조건에 따른 분기(if ~ elif ~ else)
- 중첩 조건에 따른 분기
- 5.2 지정된 범위만큼 반복하는 for 문
- 반복문의 필요성
- for 문의 구조
- 반복 범위 지정
- 중첩 for 문
- 여러 개의 리스트 다루기
- 5.3 조건에 따라 반복하는 while 문
- while 문의 구조
- 무한 반복 while 문
- 5.4 반복문을 제어하는 break와 continue
- 반복문을 빠져나오는 break
- 다음 반복을 실행하는 continue
- 5.5 간단하게 반복하는 한 줄 for 문
- 리스트 컴프리헨션의 기본 구조
- 조건문을 포함한 리스트 컴프리헨션
- 5.6 정리
- 5.1 조건에 따라 분기하는 if 문
- ▣ 06장: 입력과 출력
- 6.1 화면 출력
- 기본 출력
- 형식 지정 출력
- 6.2 키보드 입력
- 6.3 파일 읽고 쓰기
- 파일 열기
- 파일 쓰기
- 파일 읽기
- 6.4 반복문을 이용해 파일 읽고 쓰기
- 파일에 문자열 한 줄씩 쓰기
- 파일에서 문자열 한 줄씩 읽기
- 6.5 with 문을 활용해 파일 읽고 쓰기
- with 문의 구조
- with 문의 활용
- 6.6 정리
- 6.1 화면 출력
- ▣ 07장: 함수
- 7.1 함수 정의와 호출
- 함수의 기본 구조
- 인자도 반환 값도 없는 함수
- 인자는 있으나 반환 값이 없는 함수
- 인자도 있고 반환 값도 있는 함수
- 7.2 변수의 유효 범위
- 7.3 람다(lambda) 함수
- 7.4 유용한 내장 함수
- 형 변환 함수
- bool 함수
- 최솟값과 최댓값을 구하는 함수
- 절댓값과 전체 합을 구하는 함수
- 항목의 개수를 구하는 함수
- 내장 함수의 활용
- 7.5 정리
- 7.1 함수 정의와 호출
- ▣ 08장: 객체와 클래스
- 8.1 클래스 선언과 객체 생성
- 객체란?
- 클래스 선언
- 객체 생성 및 활용
- 객체 초기화
- 8.2 클래스를 구성하는 변수와 함수
- 클래스에서 사용하는 변수
- 클래스에서 사용하는 함수
- 8.3 객체와 클래스를 사용하는 이유
- 8.4 클래스 상속
- 8.5 정리
- 8.1 클래스 선언과 객체 생성
- ▣ 09장: 문자열과 텍스트 파일 데이터 다루기
- 9.1 문자열 다루기
- 문자열 분리하기
- 필요없는 문자열 삭제하기
- 문자열 연결하기
- 문자열 찾기
- 문자열 바꾸기
- 문자열의 구성 확인하기
- 대소문자로 변경하기
- 데이터 파일 준비 및 읽기
- 9.2 텍스트 파일의 데이터를 읽고 처리하기
- 파일에서 읽은 문자열 데이터 처리
- 9.3 정리
- 9.1 문자열 다루기
- ▣ 10장: 모듈
- 10.1 모듈을 사용하는 이유
- 10.2 모듈 생성 및 호출
- 모듈 만들기
- 모듈 불러오기
- 모듈을 불러오는 다른 형식
- 10.3 모듈을 직접 실행하는 경우와 임포트한 후 실행하는 경우 구분하기
- 10.4 내장 모듈
- 난수 발생 모듈
- 날짜 및 시간 관련 처리 모듈
- 달력 생성 및 처리 모듈
- 10.5 패키지
- 패키지의 구조
- 패키지 만들기
- 패키지 사용하기
- 10.6 정리
- ▣ 11장: 데이터 분석을 위한 패키지
- 11.1 배열 데이터를 효과적으로 다루는 NumPy
- 배열 생성하기
- 배열의 연산
- 배열의 인덱싱과 슬라이싱
- 11.2 구조적 데이터 표시와 처리에 강한 pandas
- 구조적 데이터 생성하기
- 데이터 연산
- 데이터를 원하는 대로 출력하기
- 데이터 통합하기
- 데이터 파일을 읽고 쓰기
- 11.3 정리
- 11.1 배열 데이터를 효과적으로 다루는 NumPy
- ▣ 12장: 데이터 시각화
- 12.1 matplotlib로 그래프 그리기
- 선 그래프
- 그래프 꾸미기
- 산점도
- 막대 그래프
- 히스토그램
- 파이 그래프
- 그래프 저장하기
- 12.2 pandas로 그래프 그리기
- pandas의 그래프 구조
- pandas의 선 그래프
- pandas의 산점도
- pandas의 막대 그래프
- pandas의 히스토그램
- pandas의 파이 그래프
- 12.3 정리
- 12.1 matplotlib로 그래프 그리기
- ▣ 13장: 엑셀 파일 다루기
- 13.1 엑셀 파일을 읽고 쓰기
- 엑셀 파일의 데이터 읽기
- 데이터를 엑셀 파일로 쓰기
- 13.2 엑셀 파일 통합하기
- 효율적인 데이터 처리를 위한 엑셀 데이터 구조
- 여러 개의 엑셀 파일 데이터를 통합하기
- 통합 결과를 엑셀 파일로 저장하기
- 13.3 엑셀 파일로 읽어온 데이터 다루기
- 데이터를 추가하고 변경하기
- 여러 개의 엑셀 파일에서 데이터 수정하기
- 엑셀의 필터 기능 수행하기
- 조건을 설정해 원하는 행만 선택하기
- 원하는 열만 선택하기
- 엑셀 데이터 계산하기
- 13.4 엑셀 데이터의 시각화
- 그래프를 엑셀 파일에 넣기
- 엑셀 차트 만들기
- 13.5 정리
- 13.1 엑셀 파일을 읽고 쓰기
- ▣ 14장: 웹 스크레이핑
- 14.1 웹 브라우저로 웹 사이트 접속하기
- 하나의 웹 사이트에 접속하기
- 여러 개의 웹 사이트에 접속하기
- 14.2 웹 스크레이핑을 위한 기본 지식
- 데이터의 요청과 응답 과정
- HTML의 기본 구조
- 웹 페이지의 HTML 소스 갖고 오기
- HTML 소스코드를 분석하고 처리하기
- 14.3 웹 사이트에서 데이터 가져오기
- 웹 스크레이핑 시 주의 사항
- 순위 데이터를 가져오기
- 웹 페이지에서 이미지 가져오기
- 14.4 정리
- 14.1 웹 브라우저로 웹 사이트 접속하기
- ▣ 15장: 웹 API
- 15.1 웹 API의 이해
- 웹 API의 데이터 획득 과정
- 웹 API의 인증 방식
- 응답 데이터의 형식 및 처리
- 웹 사이트 주소에 부가 정보 추가하기
- 15.2 API 키를 사용하지 않고 데이터 가져오기
- 국제 우주 정거장의 정보 가져오기
- 국가 정보 가져오기
- 15.3 트위터에 메시지 작성하고 가져오기
- API 키 및 접속 토큰 생성
- Tweepy 설치 및 인증
- 트윗 작성하기
- 타임라인에서 메시지 가져오기
- 키워드를 지정해 데이터 가져오기
- 15.4 정부의 공공 데이터 가져오기
- 회원 가입 및 서비스 신청
- 주소 및 우편번호 가져오기
- 날씨 정보 가져오기
- 대기 오염 정보 가져오기
- 15.5 정리
- 15.1 웹 API의 이해
- ▣ 16장: 실전 데이터 분석 프로젝트
- 16.1 데이터 분석 프로세스
- 16.2 데이터 획득, 처리, 시각화 심화
- 깃허브에서 파일 내려받기
- 데이터에서 결측치 확인 및 처리
- 데이터의 요약 및 재구성
- 워드 클라우드를 이용한 데이터 시각화
- 16.3 실전 데이터(서울시 업무추진비) 분석
- 데이터 분석의 주제 선정
- 데이터 수집
- 데이터 처리
- 데이터 분석
- 16.4 정리
3쇄 수정사항
40쪽, 본문 밑에서 3번째 줄
연산을 수행하는데 결과는
Ture
입니다.==>
연산을 수행하는데 결과는
True
입니다.446쪽, 페이지 상단 예제 코드의 1번째 줄
In: html_image = requests.get(pixabay_image_url)
==>
In: html_image = requests.get(reshot_image_url)
450쪽, 본문 2번째 줄
'num_of_download_image = len(
pixabay_image_urls
)'를 실행하면==>
'num_of_download_image = len(
reshot_image_urls
)'를 실행하면
2쇄 수정사항
14장, 15장 , 16장 관련 참고 사항
421쪽에 나오는 알렉사의 홈페이지가 변경되어 관련 코드를 변경했습니다. 이 부분은 깃허브에 있는 3쇄용 노트북 파일을 참조하세요.
443쪽에 나오는 pixabay 사이트를 이용한 웹 스크레이핑은 더 이상 동작하지 않아서 3쇄에서는 reshot(https://www.reshot.com)을 이용합니다. 이 부분은 깃허브에 있는 3쇄용 노트북 파일을 참조하세요.
494쪽에 나오는 공공 데이터 포털이 개편되어 데이터를 가져오는 코드가 변경됐습니다. 이 부분은 깃허브에 있는 3쇄용 노트북 파일을 참조하세요.
558쪽 이후의 코드에서 서울시 업무추진비를 내려받을 연도를 지정할 때는 서울시 정보소통광장 행정정보 공개 깃허브 저장소를 확인해서 공개된 연도를 지정합니다.
본문 수정사항
10쪽, 본문 밑에서 2번째 줄
입력하고 Enter 키를 누릅니다
(그림 2-15).==>
입력합니다
(그림 2-15).40쪽, 본문 밑에서 3번째 줄
연산을 수행하는데 결과는
Ture
입니다.==>
연산을 수행하는데 결과는
True
입니다.156쪽, 본문 4번째 줄
초기화 함수인 'Bicycle.init(self,
size
, numWheel, color)'를 이용했고==>
초기화 함수인 'Bicycle.init(self,
wheel_size
, color)'를 이용했고166쪽, 본문 2번째 줄
여기서 시퀀스는 리스트,
튜플, 세트와
같이 여러 데이터를 담고 있는 나열형 데이터입니다.==>
여기서 시퀀스는 리스트나
튜플과
같이 여러 데이터를순서대로
담고 있는 나열형 데이터입니다.196쪽, 본문 밑에서 8번째 줄
다음은 시퀀스(
리스트, 튜플, 세트
) 데이터에서==>
다음은 시퀀스(
리스트, 튜플
) 데이터에서196쪽, 본문 밑에서 3번째 줄
이 함수는 시퀀스(
리스트, 튜플, 세트
)로==>
이 함수는 시퀀스(
리스트, 튜플
)로230쪽, '배열의 인덱싱과 슬라이싱' 항의 3번째 줄
배열의 위치나 조건을 지정해 배열의
원소
선택하는 것을==>
배열의 위치나 조건을 지정해 배열의
원소를
선택하는 것을231쪽, 본문 4번째 줄
1차원 배열에서
여려
개의 원소를==>
1차원 배열에서
여러
개의 원소를243쪽, 표 11-3의 4번째 행, 2번째 열
일요일
시작 기준 일주일 주기==>
요일
시작 기준 일주일 주기244쪽, 본문 첫 번째 줄
다음으로
달력
기준으로==>
다음으로
달력의 요일을
기준으로309쪽, 9번째 줄
기본 값(
s=40
, c='b', marker='o', alpha=1)으로 지정됩니다.==>
기본 값(
s=36
, c='b', marker='o', alpha=1)으로 지정됩니다.319쪽, 페이지 상단 표의 4번째 행, 1번째 열
95~100
==>
95~100(이하)
323쪽, 본문 첫 번째 문장 끝에 각주 추가
위에 생성한 파이 그래프는 원이 아니라 타원처럼 보입니다.
==>
위에 생성한 파이 그래프는 원이 아니라 타원처럼 보입니다1.
1 파이 그래프를 그릴 때 matplotlib v3.0부터는 특별한 설정 없이도 기본적으로 원으로 파이 그래프를 그립니다.
411쪽, 페이지 중앙 예제 코드의 밑에서 4번째 줄
<a href="http://www.daum.net" class="portal" id="danum">다음</a> <br>
==>
<a href="http://www.daum.net" class="portal" id="daum">다음</a> <br>
412쪽, 두 번째 예제 코드 출력 결과의 3번째 줄
<a class="portal" href="http://www.daum.net" id="danum">다음</a>,
==>
<a class="portal" href="http://www.daum.net" id="daum">다음</a>,
412쪽, 세 번째 예제 코드 출력 결과의 2번째 줄
<a class="portal" href="http://www.daum.net" id="danum">다음</a>]
==>
<a class="portal" href="http://www.daum.net" id="daum">다음</a>]
414쪽, 첫 번째 예제 코드 출력 결과의 3번째 줄
<a class="portal" href="http://www.daum.net" id="danum">다음</a>,
==>
<a class="portal" href="http://www.daum.net" id="daum">다음</a>,
414쪽, 두 번째 예제 코드 출력 결과의 2번째 줄
<a class="portal" href="http://www.daum.net" id="danum">다음</a>]
==>
<a class="portal" href="http://www.daum.net" id="daum">다음</a>]
437쪽, 페이지 상단 예제 코드를 다음 코드로 수정
return music_titles, music_artists # 노래 제목과 아티스트를 저장할 파일 이름을 폴더와 함께 지정 file_name = 'C:/myPyCode/data/NaverMusicTop100.txt' f = open(file_name,'w') # 파일 열기 # 각 page에는 50개의 노래 제목과 아티스트가 추출됨 for page in range(2): naver_music_url_page = naver_music_url + str(page+1) # page URL naver_music_titles, naver_music_artists = naver_music(naver_music_url_page) # 추출된 노래 제목과 아티스트를 파일에 저장 for k in range(len(naver_music_titles)): f.write("{0:2d}: {1}/{2}\n".format(page*50 + k+1, naver_music_titles[k], naver_music_artists[k])) f.close() # 파일 닫기 glob.glob(file_name) # 생성된 파일 확인
442쪽, 페이지 상단 예제 코드의 1번째 줄
In: # 이미지 데이터를 100000바이트씩 나눠서 내려받고 파일에 순차적으로 저장
==>
In: # 이미지 데이터를 1000000바이트씩 나눠서 내려받고 파일에 순차적으로 저장
443쪽, 예제 코드의 밑에서 5번째 줄
# 이미지 데이터를 100000 바이트씩 나눠서 저장
==>
# 이미지 데이터를 1000000 바이트씩 나눠서 저장
447쪽, 페이지 상단 예제 코드의 밑에서 5번째 줄
# 이미지 데이터를 100000 바이트씩 나눠서 저장하는 방법
==>
# 이미지 데이터를 1000000 바이트씩 나눠서 저장하는 방법
448쪽, 예제 코드의 19번째 줄
chunk_size = 1000000 # 이미지 데이터를 100000바이트씩 나눠서 저장
==>
chunk_size = 1000000 # 이미지 데이터를 1000000바이트씩 나눠서 저장
541쪽, 본문 3번째 줄
다음과 같이 method=
bfill
을==>
다음과 같이 method=
'bfill'
을541쪽, 본문 밑에서 2번째 줄
다음과 같이 method=
ffill
을==>
다음과 같이 method=
'ffill'
을