[ python ] Numpy 라이브러리 활용 - 데이터 불러와서 확인하기 1 > python

본문 바로가기
사이트 내 전체검색

python

[ python ] Numpy 라이브러리 활용 - 데이터 불러와서 확인하기 1

페이지 정보

작성자 웹지기 댓글 0건 조회 3,783회 작성일 21-02-25 21:57

본문

데이터 불러와서 확인하기numpy_학습자료.zip 파일을 압축을 풀어서

jupyter 노트에서 

새폴더 > 폴더명:data >  압축푼파일에서 

height_weight.txt

ratings.dat

두개의 파을을 업로드


다시 data 폴더에서 나가서 인재캠퍼스_Numpy 학습자료.ipynb 에 업로드


# ✨ Numpy란?

numpy는 과학 계산을 위한 라이브러리로서 다차원 배열을 처리하는데 필요한 여러 유용한 기능을 제공

- 빠르고 효율적인 벡터 산술연산을 제공하는 다차원배열 제공

- 반복문 없이도 전체 배열에 대해 연산이 가능

- 표준 수학 함수 제공(sum()합계,sqrt()제곱근,mean()평균)


# numpy 라이브러리를 import로 불러오고, as로 앞으로는 np라는 별칭으로 부른다고 정의

import numpy as np


###  1. Numpy  배열 크기 가늠이 안됩니다 ! N차원 배열 생성

Numpy 라이브러리 안에는 다차원 배열을 지원하는 클래스가 존재함 -> numpy.ndarray

- 배열은 동일한 타입값을 가짐

- 다(N) ~ 차원 형태로 구성 가능

- 배열의 차원 rank라고 부름 

- 각 차원의 크기는 shape으로 표시

- 각 값들은 양의 정수로 인덱스 값을 가짐

- ndarray를 array라고 표현하기도 함


#### numpy 배열 생성하기

- 1차원 

array([1,2,3,4,5])

# 1. list 변수 선언 후 함수 연결

#lst

#type 타입을 확인하는 기본 함수

lst = [1,2,3,4,5]

type(lst)

list


# arr1 배열 변수 정의

arr1 = np.array(lst)

# arr1 값 확인 

print(arr1)

type(arr1)

[1 2 3 4 5]

numpy.ndarray


#two_lst(리스트 안에 리스트)

two_lst = [[1,2,3],[4,5,6]]

two_lst

[[1, 2, 3], [4, 5, 6]]


#arr2 배열 변수 정의

arr2 = np.array(two_lst)

# arr2 배열 확인

arr2

array([[1, 2, 3],

       [4, 5, 6]])


#특정한 값으로 배열 생성하기

#기본적으로 0이나 1로 초기화 하는 방법

#0 -> zeros(행, 열)  1-> ones(행, 열)

arrZero = np.zeros((3,4))

arrZero

array([[0., 0., 0., 0.,],

          [0., 0., 0., 0.,],

          [0., 0., 0., 0.,],

          [0., 0., 0., 0.,]])


arrOne = np.ones((5,5))

arrOne


#0과 1이 아닌 숫자로 배열을 생성할 때 -> full((행, 열), 원하는 숫자)

arrFull = np.full((5,5),3)

arrFull


#1~5까지의 숫자를 array로 만들기

arr = np.arange(1,6,1)

arr


#데이터 타입 지정 -> dtype

#정수형으로 된 0의 배열

arrZero=np.zeros((3,4), dtype=np.int32)

arrZero


#실수로된 수를 정수형으로 변환해서 배열저장

arr1=np.array([1.2, 2.4, 5.14], dtype=np.int32)

arr1


#정수로 변환된 배열을 다시 실수로 변환

#arr1.astype("float64")

arr1 = arr1.astype(np.float32)

arr1.dtype

arr1


#랜덤값 배열 만들기 -> random.rand()

arr = np.random.rand(2,3)

arr


#정수형 랜덤값 배열 만들기 -> random.randint(범위, size=(행, 열))

arr2 = np.random.randint(1,11, size=(2,3))


#요소별 연산 arr* arr     arr+arr


# 배열생성 유용한 함수  

arange 함수로 만들고 reshape 함수로 배열 크기 설정하자!  

(반복문 없이 리스트 생성 후 크기 지정)

#1차원 배열의 생성

arg_arr1 = np.arange(1,51)

arg_arr1

array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,

       18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,

       35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50])


#2차원 배열 생성

arg_arr2 = arg_arr.reshape(5,10)

arg_arr2

array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10],

       [11, 12, 13, 14, 15, 16, 17, 18, 19, 20],

       [21, 22, 23, 24, 25, 26, 27, 28, 29, 30],

       [31, 32, 33, 34, 35, 36, 37, 38, 39, 40],

       [41, 42, 43, 44, 45, 46, 47, 48, 49, 50]])


# 배열의 크기만큼 요소의 갯수가 정확하게 대응되어야함

arg_arr.reshape(5,11) #--> 오류 발생 arg_arr.reshape(5,10) 으로 지정하면 오류가 발생한다.


print(arr1.shape)

# 2차원 배열 크기 확인하시오!

(5,)


print(arr2.shape)

(2, 3)


# 배열 요소 개수 확인

# 배열.사이즈

print(arr1.size)

# 2차원 배열 요소 개수 확인하시오 !

5


# 2차원 배열 데이터 타입 확인하시오 ! 

print(arr1.dtype)

int32


# 2차원 배열 차원 확인하시오

print(arr1.ndim)


2. Numpy 데이터 접근은 어떻게 하지??

Numpy 배열은 파이썬 리스트(python list)와 마찬가지로 인덱싱(indexing), 슬라이싱(slicing)을 지원


Numpy 정수 인덱싱(integer indexing), 슬라이싱(slicing) : 배열에 부여되어 있는 인덱스(index)를 이용

Numpy 불리언 인덱싱(boolean indexing): 배열 각 요소를 True,False로 표현하는 방식

Numpy 슬라이싱(slicing)

인덱스의 범위를 정하여 부분 집합을 구하는 것

arr = np.arange(1,51).reshape(5,10)

arr

array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10],

       [11, 12, 13, 14, 15, 16, 17, 18, 19, 20],

       [21, 22, 23, 24, 25, 26, 27, 28, 29, 30],

       [31, 32, 33, 34, 35, 36, 37, 38, 39, 40],

       [41, 42, 43, 44, 45, 46, 47, 48, 49, 50]])


# 1번째 행까지와 모든 열에 접근 arr[0:2] 

arr[0:2]

array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10],

       [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]])


# 1번째 행까지와 모든 열 접근 arr[0:2,:] 

# 배열이름[행, 열] arr[0:2, :] = 0~2행, 모든열

arr[0:2,:]

array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10],

       [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]])


# 1번째 행까지와 7번째열부터 끝열까지 접근 arr[0:2,7:] 

arr[0:2, 7:10] #arr[:2, 7:] 생략가능 처음0 과 마지막에 10

array([[ 8,  9, 10],

       [18, 19, 20]])

arr[2:5, 2:7]

array([[23, 24, 25, 26, 27],

       [33, 34, 35, 36, 37],

       [43, 44, 45, 46, 47]])


Numpy 정수 인덱싱(integer indexing)

하나하나 선택되어지는 인덱스들을 일렬로 나열한 부분집합

arr2 = np.array([[1,2,3],[4,5,6]])

arr2

array([[1, 2, 3],

       [4, 5, 6]])


arr2[0]

array([1, 2, 3])


arr2[0][0]

1


arr2[0,0] # 넘파이는 []안 콤마를 기준으로 행과 열로 구분

1

arr2[:,0]

array([1, 4])



# 요소값 중 1,6 에 접근 arr2[[0,1],[0,2]]

#0,0 1,2의 값을 불러온다.

arr2[[0,1],[0,2]]

array([1, 6])


Numpy 불리언 인덱싱(boolean indexing)

특정 조건에 맞으면 True, 아니면 False 값으로 배열을 만들어 True에 해당하는 요소값의 데이터에 접근

arr2 = np.array([[1,2,3,4,5],[55,0,60,80,90]])

arr2

array([[ 1,  2,  3,  4,  5],

       [55,  0, 60, 80, 90]])


# 0이 아닌 요솟값에 접근

arr2 != 0

array([[ True,  True,  True,  True,  True],

       [ True, False,  True,  True,  True]])


arr2[arr2 != 0]

array([ 1,  2,  3,  4,  5, 55, 60, 80, 90])


#짝수에 접근(이 상황에서는 0도 포함이 된다.)

arr2[arr2%2==0]

array([ 2,  4,  0, 60, 80, 90])



#행복습

arr2[0][arr2[1] >=70]

#1행 - 사람번호

#2행 - 성적

array([4, 5])



3. 누구보다 빠르게 남들과는 다른 Numpy 배열 연산!!

import numpy as np

arr3 = np.array([[1,2],[3,4]])

arr4 = np.array([[3,4],[5,6]])

# 요소별 연산 :배열에 3더하기

arr3+3

array([[4, 5],

       [6, 7]])

# 요소별 연산 :배열에 2.0 나누기

arr4/2.0

array([[1.5, 2. ],

       [2.5, 3. ]])

#리스트를 연산하고 싶다면 numpy로 변경해주면된다

np.array([1,2,3])


# 배열 간 연산 : 곱하기

arr4*10

array([[30, 40],

       [50, 60]])


# 참고) 배열의 행렬 연산은 np.dot 함수를 통해서 할 수 있다 ! 

np.dot(arr3,arr4)

array([[13, 16],

       [29, 36]])


4. Numpy 배열 관련 유용한 함수

# np.sum

np.sum(arr4)

18


# np.sqrt

np.sqrt(arr4)

array([[1.73205081, 2.        ],

       [2.23606798, 2.44948974]])



@@데이터 불러오기

data = np.loadtxt("data/height_weight.txt", delimiter=",")

data

array([[175.2, 180.3, 175. , 169.2, 185.2, 188. , 177.6, 178.2, 177. ,

        179. ],

       [ 65.6,  88. ,  79.2,  69.3,  55. ,  71.2,  73. ,  68.9,  74. ,

         82. ]])


#shape 크기확인

#ndim 차원수 확인

#size 요소개수확인

print('data크기 :', data.shape)

print('차원 : ', data.ndim)

print('요소개수 : ', data.size)(2, 10)

data크기 : (2, 10)

차원 :  2

요소개수 :  20


2. 배열 데이터에서 키와 몸무게 데이터 각각 변수에 넣기

height = data[0]

height

array([175.2, 180.3, 175. , 169.2, 185.2, 188. , 177.6, 178.2, 177. ,

       179. ])


weight = data[1]

weight

array([65.6, 88. , 79.2, 69.3, 55. , 71.2, 73. , 68.9, 74. , 82. ])


3. BMI지수 공식에 대입해보기

키는 M로 표기(height.100 또는 height *0.01

bmi지수 = weight/(height**2)

height = data[0]

height

height2 = height/100

height2

weight = data[1]

weight

bm = weight/height2**2

bm


4. 과체중 이상인 사람은 몇명일까요 ?(불리언 인덱싱을 이용해보세요 ! )

bm >=23 

array([False,  True,  True,  True, False, False,  True, False,  True,

        True])

bm[bm >= 23]

array([27.07018468, 25.86122449, 24.20652885, 23.14392095, 23.62028791,

       25.59220998])

bm[bm >= 23].size

6

len(bm[bm>=23])

6


-----------------------------------------------------------


### 응용예제2) 영화가 좋은 평점을 받았는지 알아보기 

최종목표 : 각 영화의 평균 평점이 4이상을 구하는 것.

# Readme

# user_id 사용자 아이디

# item_id 영화 아이디

# rating 영화 평점

# timestamp 평점 입력 시간

movieData = np.loadtxt('data/ratings.dat', delimiter='::', dtype=np.int64)

movieData

array([[        1,      1193,         5, 978300760],

       [        1,       661,         3, 978302109],

       [        1,       914,         3, 978301968],

       ...,

       [     6040,       562,         5, 956704746],

       [     6040,      1096,         4, 956715648],

       [     6040,      1097,         4, 956715569]], dtype=int64)


1. 데이터 속성 확인은 필수 !

배열 크기

배열 차원수

배열 전체 요소 개수

print(movieData.shape)

print(movieData.ndim)

print(movieData.size)



2. 전체 영화 평점 평균 구하기

ratings = movieData[:, 2]

np.mean(ratings)

3.581564453029317



3. 영화 아이디 1번인 영화의 평점 평균 구하기

특정 조건으로 배열의 요소값에 접근 : boolean index(true, false)

movieData[:, 1]

#해당하는 행에 true가 존재할 때 출력

movieData[movieData[:,1]==1]

array([[        1,         1,         5, 978824268],

       [        6,         1,         4, 978237008],

       [        8,         1,         4, 978233496],

       ...,

       [     6032,         1,         4, 956718127],

       [     6035,         1,         4, 956712849],

       [     6040,         1,         3, 957717358]], dtype=int64)


#영화 아이디가 1이 아닌 것에 접근하는데 평점만 보고 싶다.

#전체 구문 사용시

movieData[movieData[:,1] !=1][:,2]

array([5, 3, 3, ..., 5, 4, 4], dtype=int64)


#짧은 구문으로 접근하기

movieData[movieData[:,1] !=1,2]

array([5, 3, 3, ..., 5, 4, 4], dtype=int64)


 

 

추천0 비추천0

첨부파일

댓글목록

등록된 댓글이 없습니다.

Total 19건 1 페이지
+2
  • 19 [ python ] pandas read & count & value_counts()
  • pandas read & count import pandas as pd population_number=pd.read_csv("population_number.csv", index_col="도시", encoding="euc-kr") population_number #각 컬럼별 데이터 개수 세기 population_number.count() 지역 4 2015 4 2010 3 2005 2 200...
  • 웹지기 03-08 6242 0 0 댓글 0
+16
  • 18 [ python ] Pandas 라이브러리 불러오기 사용하기
  • #Pandas 라이브러리 불러오기, 사용하기 import pandas as pd #serise 사용 population=pd.Series([9904312,3448737,289045,2466052]) population 0 9904312 1 3448737 2 289045 3 2466052 dtype: int64 population = pd.Series([9904312,3448737,289045,2466052], index=['서울','부산',...
  • 웹지기 03-05 5076 0 0 댓글 0
  • 17 [ python ] 영화 데이터 불러와서 확인하기
  • 영화 데이터 불러와서 확인하기 @@데이터 불러오기 최종목표 : 각 영화의 평균 평점이 4이상을 구하는 것. # Readme # user_id 사용자 아이디 # item_id 영화 아이디 # rating 영화 평점 # timestamp 평점 입력 시간 movieData = np.loadtxt('data/ratings.dat', delimiter='::', dtype=np.int64) movieData array([[ 1, 11...
  • 웹지기 03-05 4982 0 0 댓글 0
  • 16 [ python ] 배열과 여러 함수들
  • 배열과 여러 함수들 #배열 가져오기 #배열명[행, 열] import numpy as np arr=np.arange(1,51).reshape(5,10) array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [11, 12, 13, 14, 15, 16, 17, 18, 19, 20], [21, 22, 23, 24, 25, 26, 27, 28, 29, 30], [31, 32, 33, 34, 35, 36, 37, 38, 39, 40], [41, 42,...
  • 웹지기 03-05 4579 0 0 댓글 0
  • 15 [ python ] BMI 지수 구하기
  • BMI 지수 구하기 일단 파일을 파이썬의 폴더로 업로드 시킨 후 사용가능 data = np.loadtxt("height_weight.txt", delimiter=",") data array([[175.2 ~~~~~~], [65.6 ~~~~~]]) #키를 저장 ( 키 / 100 또는 키 * 0.01 ) ki = data[0]/100 ki #몸무게를 저장 mom = data[1] mom #BMI지수 저장 bmi = mom...
  • 웹지기 03-05 7749 0 0 댓글 0
  • 14 [ python ] 파일을 모듈로 저장하기
  • 파일을 모듈로 저장하기 #함수 선언 -> 두개의정수를 더해주는 함수 def add(num1, num2) : return num1+num2 File > Download AS > Python(.py) 클릭 저장위치는 현재 사용하는 폴더를 선택하면됨 #모듈 사용하기(불러오기) import module_test module_test.add(10,20) from module_test import add add(10,20)
  • 웹지기 03-05 5452 0 0 댓글 0
  • 13 [ python ] 반복문 , for, while
  • 반복문 , for, while #반복문 while i = 0 while i<10: i+=1 print('나무를 {}번 찍었습니다.'.format(i)) if i==10 : print("나무가 넘어갑니다.") 나무를 1번 찍었습니다. 나무를 2번 찍었습니다. 나무를 3번 찍었습니다. 나무를 4번 찍었습니다. 나무를 5번 찍었습니다. 나무를 6번 ...
  • 웹지기 03-03 2086 0 0 댓글 0
+1
  • 12 [ python ] 단축키, Command mode , Edit mode
  • Command mode Enter : edit mode 로 전환 a : 위에 셀(Cell)추가 b: 아래에 셀(Cell)추가 m: Markdown으로 전환 y: Code로 전환 dd: 셀(Cell) 삭제 Edit mode Esc : Command Mode로 전환 Ctrl + z : 되돌리기 Ctrl + y : 앞으로 되돌리기 공통 단축키 - Ctrl + Enter : 실행 - Shift + Enter : 실행 후 아래로 커서 이동 - Alt + E...
  • 웹지기 03-03 2689 0 0 댓글 0
  • 11 [ python ] 파이썬 정의 및 간단 설명
  • 파이썬은 인터프리터 언어이다..(대화형언어) 배우기 쉽다. 다양한 라이브러리 툴. 인간다운 언어(직관적) 문법이 쉬워 배우기 쉽고 코드가 간결하다. 파이썬패키지 - 에디터(주피터 에디터) - ANACONDA anaconda.com > download > install 설치가 되면 anaconda 설치 > jupyter 실행 실행은 우측상단 new > python3 클릭 아래 화면에서 왼쪽이 녹색과 파란색 파란색은 실행완...
  • 웹지기 03-03 2306 0 0 댓글 0
  • 10 [ python ] 타이타닉 승객의 사망 분석 (Titanic 탑승객 중 생존/사망자 예측) - 엑셀활용
  • 타이타닉 승객의 사망 분석 - 엑셀활용 Titanic 탑승객 중 생존/사망자 예측) 과연, 어떤 사람이 생존하고 어떤사람이 사망했을까? EXCEL - 데이터 분석 kaggle.com 회원가입 후 검색창에 titanic Titanic - Machine Learning From Disaster > enter Data click > 화면아래로 내려서 Download All 정상 다운로드가 되면 다운로드 받고 > 다운로드가 안되고 다른화면이...
  • 웹지기 03-03 2245 0 0 댓글 0
  • 9 [ python ] python을 활용한 데이터 분석 / 예측
  • python을 활용한 데이터 분석 / 예측 1) 빅데이터 - 1~2012 까지의 데이터 0.1% - 2013~현재 까지의 데이터 99.9% (스마트폰, 사물인터넷등의 의한 데이터) 2) 활용사례 - 기저귀와 맥주? (편의점 체인점에서 쇼핑 행태를 분석하여 발견) - 구글 독감 유행 징후 감지 (사람들의 검색어 분석 독감의 증상, 치료법, 가까운 병원등) - 금융권 빅데이터 - 자동차회사 IoT #빅데이터 #인공지능 #사물인터넷 #수요증가 #산업채용 3)...
  • 웹지기 03-03 2526 0 0 댓글 0
  • 열람중 [ python ] Numpy 라이브러리 활용 - 데이터 불러와서 확인하기 1
  • 데이터 불러와서 확인하기numpy_학습자료.zip 파일을 압축을 풀어서 jupyter 노트에서 새폴더 > 폴더명:data > 압축푼파일에서 height_weight.txt ratings.dat 두개의 파을을 업로드 다시 data 폴더에서 나가서 인재캠퍼스_Numpy 학습자료.ipynb 에 업로드 # ✨ Numpy란? numpy는 과학 계산을 위한 라이브러리로서 다차원 배열을 처리하는데 필요한 여러 유용한 기능을 제공 - 빠르고 효율적인 벡터 산술...
  • 웹지기 02-25 3784 0 0 댓글 0
  • 7 [ python ] 함수의 정의와 사용 방법
  • 함수의 정의와 사용 방법 함수란(function) - 하나의 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된 코드의 집합 - 함수 사용 목적 = 반폭을 피함 = 모듈화로 가독성 높임 = 문제발생시 기능변경 필요시 손쉽게 유지보수 - 구조 (defined: 정의) def 함수명(매개변수) : 실행문장 return 반환변수 #함수 만들어 보기 def numberSum(num1, num2) : result =...
  • 웹지기 02-24 2477 0 0 댓글 0
  • 6 [ python ] 리스트와 튜플
  • 리스트와 튜플 리스트(list)란? - 파이썬의 자료구조 형태중 하나 - 순서가 있는 수정이 가능한 객체의 집합 - 대괄호( [ ] ) 로 작성, 내부는 ,로 구분 - 추가,수정,삭제 가능 리스트는 + 연산이 가능하다 list4 = [1,2,3] list5 = [3,4,5,6] print(list4+list5) print(list5+list4) list4 = [1,2,3] list5 = [3,4,5,6] print(l...
  • 웹지기 02-24 2856 0 0 댓글 0
게시물 검색

회원로그인

접속자집계

오늘
20,251
어제
25,733
최대
43,745
전체
10,601,866

그누보드5
Copyright © funyphp.com. All rights reserved.