개발환경_구축
아나콘다 설치
https://www.anaconda.com/products/individual/download-success 에서 다운
설치 완료 후 아나콘다 프롬포트 실행
가상환경 생성
"conda --version" 버전확인 후
"conda create -n pybook python=3.7" pybook이라는 파이썬3.7 버전의 새로운 가상환경 생성
주피터 노트북 설치 "pip install jupyter"
주피터 노트북 실행 "jupyter notebook"
주피터 노트북 접속 : 출력된 url복사해서 웹브라우저에서 실행
New - python 3 버튼눌러서 새 파일 생성
라이브러리 설치
- pip isntall pandas numpy matplotlib
판다스 , 넘파이 , matplotlib설치
라이브러리
판다스
판다스는 데이터 분석 라이브러리로 데이터 프레임 이라는 자료구조를 사용한다.
엑셀 스프레드시트 형태 > 파이썬을 쉽게 처리한다.
따라해보기
2개의 열데이터를 입력후, list()와 zip() 함수로 데이터 셋 생성해보기
head()함수로 생성된 데이터 프레임
import pandas as pd
names = ['Bob','Jessica' ,'Mary' , 'John', 'Mel']
births = [968,155,77,578,973]
custom = [1,5,25,13,23232]
BabyDataSet = list(zip(names,births))
df = pd.DataFrame(data = BabyDataSet, columns=['Names','Births'])
df.head()
결과
데이터 프레임 기본정보 출력
df.dtypes
df.index
df.columns
dtypes, index, columns 로 데이터 프레임의 행 렬 정보를 출력할 수 있다.
dtypes : 열타입의 정보
index : 행의 형태 정보
columns : 데이터 프레임의 열 정보
행열 각각 출력
하나의 열 'Name'을 선택해서 모두 출력
df['Names']
0~3번째 인덱스를 출력
df[0:3]
필터링 기능
Briths열에 해당하는 데이터가 100보다 큰 경우만 반환
df[df['Births']>100]
평균값 계산
'Names'는 계산을 못하니, Births 만 평균값으로 계산된다.
mean() 은 각각 테이터 타입을 체크 한 뒤 연산이 간으한 열으리 평균값만을 반환함
df.mean()
넘파이 설치, 활용
넘파이는 수치계산을 위해 만들어진 파이썬 라이브러리.
넘파이에서 배열의 개념으로 변수를 사용하며, 벡터,행렬 등의 연산을 쉽고 빠르게 수행하도록 지원한다.
실행해보기
3*5 배열 15개 생성하기
import numpy as np
arr1 = np.arange(15).reshape(3,5)
arr1
결과
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
- 넘파이 배열의 데이터 차원을 호출하는 방법은 shape
- 데이터 타입을 호출하는 방법은 dtype
- 데이터를 생성하는 방법 zeros( ) 함수 이용
arr1.shape
#결과 (3, 5)
arr1.dtype
#결과 dtype('int32')
arr3 = np.zeros((3,4))
arr3
# 결과
array([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
데이터 연산
사칙연산 수행
arr4 = np.array([
[1,2,3],
[4,5,6]
], dtype = np.float64)
arr5 = np.array([
[7,8,9],
[10,11,12]
], dtype = np.float64)
# 사칙연산 수행
print("arr4 + arr5 = ")
print(arr4 + arr5, "\n")
print("arr4 - arr5 = ")
print(arr4 - arr5, "\n")
print("arr4 * arr5 = ")
print(arr4 * arr5, "\n")
print("arr4 / arr5 = ")
print(arr4 / arr5, "\n")
## 결과
arr4 + arr5 =
[[ 8. 10. 12.]
[14. 16. 18.]]
arr4 - arr5 =
[[-6. -6. -6.]
[-6. -6. -6.]]
arr4 * arr5 =
[[ 7. 16. 27.]
[40. 55. 72.]]
arr4 / arr5 =
[[0.14285714 0.25 0.33333333]
[0.4 0.45454545 0.5 ]]
이외에도 다양한 함수를 사용할 수 있다.
Matplotlib
matplotlib라이브러리는 데이터를 시각화해주는 가장 기본적인 라이브러리이다.
%matplotlib inline
#현재 실행중인 주피터 노트북에서 그래프를 출력 가능하도록 선언하는 명령어
import matplotlib.pyplot as plt
그래프 만들기
막대그래프
Matplotlib라이브러리를 사용할때는 그래프 객체라는 것을 생성해주어야 한다.
plt.bar(x,y)
를 실행하면 막대그래프 객체가 생성된다. 그 객체에 다른 요소를 추가해 줄 수 있음plt.xlabel
,plt.ylabel
,plt.title
은 그래프 객체에 각각 x축 제목, y축 제목, 그래프 전체 제목을 달아주는 코드.마지막으로
plt.show()
를 호출하면 그래프를 출력 할 수 있음
예시 코드
y = df['Births']
x = df['Names']
plt.bar(x,y)
plt.xlabel('Names')
plt.ylabel('Births')
plt.title('Bar plot')
plt.show
<u>결과</u>
산점도 그래프
random.seed()
함수는 랜덤 추출 시드를 고정한 것이고, 이를 토대로random.rand()
함수가 넘파이 배열 타입의 난수를 생성.그리고 arrange() 함수는 5의 간격으로 0부터 100까지의 숫자를 생성한 것. 지금까지 데이터를 plt.scatter()함수로 출력한 결과
#랜덤 추출시드를 고정 np.random.seed(19920613) # 산점도 데이터 생성 x = np.arange(0.0,100.0,5.0) y = (x * 1.5) + np.random.rand(20) * 50 #산점도 데이터 출력 plt.scatter(x,y,c="b", alpha = 0.5 , label ="scatter point") plt.xlabel("X") plt.ylabel("Y") plt.legend(loc='upper left') plt.title('Scatter plog') plt.show()
결과
이것이 데이터 분석이다 책 참고 !!
'CS > DataAnalysis' 카테고리의 다른 글
데이터 분석 (0) | 2021.04.11 |
---|---|
정형 데이터의 전처리 / 탐색 /시각화 (0) | 2019.02.19 |
Bigdata analytics (0) | 2019.02.19 |