Professional Documents
Culture Documents
Mastering Python For Data Science
Mastering Python For Data Science
Table of Contents
Introduction 0
원천 데이터로 시작하기 1
추론 통계 2
2
Mastering Python for Data Science
My Awesome Book
This file file serves as your book's preface, a great place to describe your book's
content and ideas.
Introduction 3
Mastering Python for Data Science
원천 데이터로 시작하기
데이터 과학의 세계에서 원천 데이터는 다양한 형식과 크기기로 되어 있다. 원천 데이터
에는 추출할 수 있는 많은 정보들이 들어 있다. 예를 들자면, 아마존에서는 사용자들이
웹사이트에서 클릭한 내용들을 모두 저장하고 있다. 이 데이터를 통해서 사용자가 가격
에 민감한지 인기 상품을 더 좋아하는지 파악할 수 있다. 아마존에서 추천 상품을 통지
받은 적이 있을텐데 그것이 바로 이런 데이터에서 나온다.
데이터 추출: 데이터는 Exel, CSV, JSON, Database 등등의 다양한 양식으로 되
어 있다. 이 장에서 소개할 파이썬의 유용한 패키지를 이용하면 아주 쉽게 다양한
출처의 데이터를 읽을 수 있다.
데이터 정제: 분석에 활용하기 위해서는 적합하게 데이터를 정리할 필요가 있다. 한
학급 학생들에 대한 데이터셋을 가지고 있다고 생각해 보자. 그 데이터셋에는 키,
몸무게 및 다양한 특징들에 대한 상세 데이터가 있다. 그 중에 키나 몸무게가 빠져
있는 행도 있을 수 있다. 분석을 수행하기 위해서는 이런 열들의 값을 무시하거나
평균값으로 대체하는 방법을 사용할 수 있다.
NumPy의 배열
pandas로 데이터 다루기
다양한 포맷의 데이터 읽고 쓰기
손실된 데이터 다루기
데이터 처리하기
NumPy의 배열
파이썬에는 List와 같은 데이터 구조가 있어서 배열 연산을 하는데 사용할 있지만, 복잡
한 수학 연산에 최적화 되어 있지 않기 때문에 이를 처리하기에는 부족한 점이 있다.
원천 데이터로 시작하기 4
Mastering Python for Data Science
배열 생성하기
NumPy 배열 객체를 생성하기 위해서는 array 함수에 숫자 리스트를 넣어주면 된다.
>>> n_array.ndim
2
>>> n_array.shape
(3, 4)
n_array의 첫번째 차원의 크기는 3이고 두번째 차원의 크기는 4이다. 이것은 3행
과 4열로 표현될 수 있다.
>>> n_array.size
12
원천 데이터로 시작하기 5
Mastering Python for Data Science
>>> n_array.dtype.name
int64
수학 연산
배열 데이터가 있을때 이에 대한 수학 연산을 하고자 할 것이다. 다음 섹션에서 몇가지
중요한 연산에 대해서 논의하도록 하자.
배열 뺄셈
다음 명령은 배열 a에서 배열 b를 빼서 결과 값인 배열 c를 얻는 것이다. 뺄셈은 요소별
로 이루어 진다.
배열 제곱
다음 명령은 각 항목에 대해서 2 제곱한 결과를 가져온다.
>>> b**2
[1 4 9 16]
배열 삼각함수
다음 명령은 배열 b의 각 값에 대해서 코사인한 결과를 보여준다.
>>> np.cos(b)
[ 0.54030231 -0.41614684 -0.9899925 -0.65364362]
원천 데이터로 시작하기 6
Mastering Python for Data Science
조건 연산
다음 명령은 배열 b의 각 항목에 대해서 Boolean 값을 얻기 위한 조건 연산을 적용한 결
과를 보여준다.
>>> b<2
[ True False False False]
수열 곱셈
두개 수열은 요소 대 요소나 점곱을 통해서 곱하기 할 수 있다. 다음 명령은 요소 대 요소
곱셈을 보여준다.
인덱싱과 자르기
배열의 특정 요소를 선택하고자 한다면 인덱스를 사용하면 된다.
>>> n_array[0,1]
1
원천 데이터로 시작하기 7
Mastering Python for Data Science
>>> n_array[ 0 , : ]
[0 1 2 3]
>>> n_array[ : , 1 ]
[1 5 9]
모양 조작
배열이 생성된 이후에 모양을 변경할 수 있다. 다음 명령을 통해서 배열을 평평하게 할
수 있다.
>>> n_array.ravel()
[ 0 1 2 3 4 5 6 7 8 9 10 11]
원천 데이터로 시작하기 8
Mastering Python for Data Science
>>> n_array.transpose()
[[ 0 2 4 6 8 10]
[ 1 3 5 7 9 11]]
pandas의 데이터 구조
pandas 라이브러리는 기본적으로 세가지 데이터 구조를 가지고 있다.
1. Series
2. DataFrame
3. Panel
Series
Series는 1차원 배열이다. 이것은 정수, 실수, 문자열, 파이썬 객체 등등 모든 데이터 타
입을 저장할 수 있다. 시리즈는 다음과 같이 생성할 수 있다.
원천 데이터로 시작하기 9
Mastering Python for Data Science
DataFrame
원천 데이터로 시작하기 10
Mastering Python for Data Science
NumPy 배열
Lists
Dicts
Series
2차원 NumPy 배열열
Panel
Panel은 3차원 데이터를 다루는 데이터 구조이다. 다음은 panel 데이터를 다루는 예제
이다.
원천 데이터로 시작하기 11
Mastering Python for Data Science
<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 4 (major_axis) x 3 (minor_axis)
Items axis: Item1 to Item2
Major_axis axis: 0 to 3
Minor_axis axis: 0 to 2
데이터 넣기 / 내보내기
데이터는 CSV, TSV, 데이터베이스 등 다양한 형태로 저장된다. pandas 라이브러는 이
런 다양한 형태로부터 데이터를 편리하게 읽어들이거나 내보낼 수 있게 해준다. 우리는
미국 학생의 몸무게 통계 정보가 들어 있는 데이터셋을 사용할 것이다.
원천 데이터로 시작하기 12
Mastering Python for Data Science
컬럼 설명
LOCATION CODE 지역 코드
COUNTRY 학교가 속한 주
AREA NAME 학교가 속한 지역
REGION 학교가 속한 구
SCHOOL YEARS 년도
NO. OVERWEIGHT 과체중 학생 수
PCT OVERWEIGHT 과체중 학생 퍼센트
NO. OBESE 비만 학생 수
PCT OBESE 비만 학생 퍼센트
NO. OVERWEIGHT OR OBESE 과체중이거나 비만인 학생 수
PCT OVERWEIGHT OR OBESE 과체중이거나 비만인 학생 퍼센트
GRADE LEVEL 초등학교, 고등학교 구분
AREA TYPE 지역 타입
STREET ADDRESS 학교 주소
CITY 학교가 속한 도시
STATE 학교가 속한 주
ZIP CODE 학교 우편번호
Location 1 경도, 위도 주소
CSV
csv 파일에서 데이터를 읽기 위해서는 다음과 같이 read_csv 함수를 사용한다.
원천 데이터로 시작하기 13
Mastering Python for Data Science
>>> d = pd.read_csv('Data/Student_Weight_Status_Category_
Reporting_Results__Beginning_2010.csv')
>>> d[0:5]['AREA NAME']
0 1 2 3 4
RAVENA COEYMANS SELKIRK CENTRAL SCHOOL DISTRICT
RAVENA COEYMANS SELKIRK CENTRAL SCHOOL DISTRICT
RAVENA COEYMANS SELKIRK CENTRAL SCHOOL DISTRICT
COHOES CITY SCHOOL DISTRICT
COHOES CITY SCHOOL DISTRICT
DataFrame의 내용을 to_csv 메서드를 통해서 csv 파일에 기록했다. 저장할 파일의 경
로를 넘겨주어야 한다.
XLS
엑셀 파일에서 데이터를 읽기 위해서는 xlrd 패키지를 추가로 설치해야 한다.
>>> d=pd.read_excel('Data/Student_Weight_Status_Category
_Reporting_Results__Beginning_2010.xls')
>>> df.to_excel('sample_data.xls')
JSON
원천 데이터로 시작하기 14
Mastering Python for Data Science
Database
데이터베이스로부터 데이터를 읽기 위해서는 다음 함수를 사용한다.
원천 데이터로 시작하기 15
Mastering Python for Data Science
데이터 정제
원천 데이터는 일반적으로 분석을 하거나 대시보드를 만들기 위해서 정제하는 작업이
필요하다. 데이터에 이슈가 생기는 여러가지 이유가 있다. 예를 들자면, 판매점의 POS
시스템이 오작동을 하거나 값들이 누락된 상태로 입력이 되기도 한다. 이런 데이터를 어
떻게 다뤄야 할지에 대해서 살펴보도록 하자.
원천 데이터로 시작하기 16
Mastering Python for Data Science
>>> d = d.dropna(how='any')
원천 데이터로 시작하기 17
Mastering Python for Data Science
>>> df2.fillna(0)
X Y Z
a0 -1.193371 0.912654 -0.780461
a1 0.000000 0.000000 0.000000
a10 1.413044 0.615997 0.947334
a11 0.000000 0.000000 0.000000
a20 1.583516 1.388921 0.458771
a21 0.000000 0.000000 0.000000
a30 0.479579 1.427625 1.407924
a31 0.000000 0.000000 0.000000
a40 0.455510 -0.880937 1.375555
a41 0.000000 0.000000 0.000000
원천 데이터로 시작하기 18
Mastering Python for Data Science
>>> df2.fillna(df2.mean())
X Y Z
a0 -1.193371 0.912654 -0.780461
a1 0.547655 0.692852 0.681825
a10 1.413044 0.615997 0.947334
a11 0.547655 0.692852 0.681825
a20 1.583516 1.388921 0.458771
a21 0.547655 0.692852 0.681825
a30 0.479579 1.427625 1.407924
a31 0.547655 0.692852 0.681825
a40 0.455510 -0.880937 1.375555
a41 0.547655 0.692852 0.681825
문자열 처리
데이터에서 문자열 컬럼을 수정하고 싶을때 다음 문자열 처리 명령을 사용할 수 있다.
원천 데이터로 시작하기 19
Mastering Python for Data Science
>>> df = pd.read_csv('Data/Student_Weight_Status_Category_
Reporting_Results__Beginning_2010.csv')
>>> df['AREA NAME'][0:5]
Area Name 컬럼의 첫번째 단어만 추출하기 위해서 extract 함수를 사용한다.
0 RAVENA
1 RAVENA
2 RAVENA
3 COHOES
4 COHOES
Name: AREA NAME, dtype: object
앞의 예제에서 시리즈의 str 속성이 사용되었다. str 클래스는 extract 메서드를 가지고
있다. 이 메서드는 정규식을 지원한다. 두번째 단어를 별도의 컬럼으로 추출하는 것도
가능하다.
원천 데이터로 시작하기 20
Mastering Python for Data Science
원천 데이터로 시작하기 21
Mastering Python for Data Science
데이터 병합
데이터를 합치기 위해서는 pandas에 있는 concat를 활용하면 된다. Area Name과
Country 컬럼을 첫 5줄을 가져오자.
원천 데이터로 시작하기 22
Mastering Python for Data Science
첫 두줄은 p1, 나머지 세줄은 p2에 있다. 이 조각들을 concat() 함수를 이용해서 합칠 수
있다.
>>> pd.concat([p1,p2])
AREA NAME COUNTY
0 RAVENA COEYMANS SELKIRK CENTRAL SCHOOL DISTRICT ALBANY
1 RAVENA COEYMANS SELKIRK CENTRAL SCHOOL DISTRICT ALBANY
2 RAVENA COEYMANS SELKIRK CENTRAL SCHOOL DISTRICT ALBANY
3 COHOES CITY SCHOOL DISTRICT ALBANY
4 COHOES CITY SCHOOL DISTRICT ALBANY
>>> concatenated.ix['p1']
AREA NAME COUNTY
0 RAVENA COEYMANS SELKIRK CENTRAL SCHOOL DISTRICT ALBANY
1 RAVENA COEYMANS SELKIRK CENTRAL SCHOOL DISTRICT ALBANY
데이터 연산
원천 데이터로 시작하기 23
Mastering Python for Data Science
집합 연산
수치 필드에 대하서 수행할 수 있는 평균, 합계 등의 다양한 집합 연산들이 있다. 이를 수
행하기 위한 메서드는 다음과 같다.
원천 데이터로 시작하기 24
Mastering Python for Data Science
Joins
pandas를 이용해서 DataFrame에 SQL과 같은 join를 수행할 수 있다. 각 등급에 레벨
을 지정하기 위해서 lookup DataFrame을 다음과 같이 정의하자.
inner join
원천 데이터로 시작하기 25
Mastering Python for Data Science
원천 데이터로 시작하기 26
Mastering Python for Data Science
원천 데이터로 시작하기 27
Mastering Python for Data Science
groupby 함수
pandas에서 SQL과 같은 group by 연산을 하는 것은 매우 쉽다. 각 등급별 비만자수 합
계를 구하기 위해서는 다음과 같이 하면 된다.
원천 데이터로 시작하기 28
Mastering Python for Data Science
GRADE LEVEL
DISTRICT TOTAL 127101
ELEMENTARY 72880
MIDDLE/HIGH 53089
정리
이 장에서 NumPy와 pandas 패키지에 익숙해지는 시간을 가졌다. pandas의 데이터 타
입의 차이와 어떻게 사용하는지에 대해서 이해했다. 누락된 데이터를 다루고 문자열 연
산을 수행하는 데이터 정제와 처리 방법에 대해서 배웠다. 여기에서는 데이터 과학의 기
초만을 다뤘다. NumPy와 pandas에 대해서 더 자세히 알고자 한다면 다음을 참고하자.
NumPy 문서 : http://docs.scipy.org/doc/
Pandas 문서 : http://pandas.pydata.org/
원천 데이터로 시작하기 29
Mastering Python for Data Science
원천 데이터로 시작하기 30
Mastering Python for Data Science
추론 통계
추론 통계를 이해하기 전에 기술 통계에 대해서 살펴보도록 하자.
기술 통계는
추론 통계 31