[개발일지 2022.4.7] 파이썬 데이터관련 필수 라이브러리

1.학습한 내용

1)Numpy

NumPy(Numerical Python)는 파이썬에서 과학적 계산을 위한 핵심 라이브러리이다. NumPy는 다차원 배열 객체와 배열과 함께 작동하는 도구들을 제공한다. 하지만 NumPy 자체로는 고수준의 데이터 분석 기능을 제공하지 않기 때문에 NumPy 배열과 배열 기반 컴퓨팅의 이해를 통해 pandas와 같은 도구를 좀 더 효율적으로 사용하는 것이 필요하다.

-Data 를 다루거나 Machine Learning 을 활용하기 위해서 잘 만들어진 데이터의 구조.
가볍고 강력한 성능과 적절한 기능으로 Python으로 데이터를 다룰때 필요한 배열을 제공해준다.
-NumPy의 배열은 차원의 개념도 잘 구현하고 있으며, 1차원부터 2차원의 데이터까지 구현한다.

우선은 Numpy 의 라이브러리를 불러온다.

import numpy as np

이 불러온 numpy 를 앞으로 np 로 호출하기로했다.

arr = np.array([1,2,3,4])
배열을 생성한다.
type(arr) 
# 배열의 타입을 확인한다.
np.zeros((3,3)) 
# 3행3열의 내용이 정수값 0인 배열을 만든다.
np.ones((4,4))
# 4행4열의 내용이 정수값 1인 배열을 만든다.

를 입력하게되면

위의 그림과 같이 나타난다.

np.arange(10)
# 0부터시작해서 10개의 값을 가지는 배열을 만든다

1-1)ndarray 배열의 모양, 차수, 데이터 타입 확인하기

arr = np.array([[1,2,3],[4,5,6]])
# 1행이 1,2,3 2행이 4,5,6인 2행3열의 배열을 만든다.

arr.shape
# arr 배열의 형태를 확인한다

arr.ndim
# arr 배열이 몇차원인지 확인한다.

arr.dtype
# arr의 데이터타입을 확인한다.

arr.astype(np.float64)
# arr의 타입을 64비트로 바꾸는것으로 리턴해준다. 스스로 바뀌는것이 아니기 때문에 변수값을 설정해줘야한다.

를 입력하게 되면 아래의 사진과 같이 나타난다.

또한, 배열에 따른 사칙연산도 적용이 된다.

덧셈은 add , 곱셈은 muliply 를 사용한다.

1-2) ndarray 배열 슬라이싱 하기

우선 배열을 만든다.

arr = np.array([[1,2,3],[4,5,6],[7,8,9]])

이 만든 배열 arr을 이용하면
arr[a:b:c] 의 배열은
a를 시작점, b를 끝점, c를 간격으로써 해당 범위를 가져오는 명령어로써 이용된다.
해당 점을 비우게 되면 해당 전범위를 뜻한다.
예를들어

arr_1 = arr[:2,1:3]

를 입력하게 되면

사진과 같이 0~1번째 행의 2~3번째 열을 가져오게 된다.

위와 같이 필요한 정보만을 잘라서 가져오는것을 슬라이싱이라고 한다.

1-3)NumPy 실습

redwine = np.loadtxt(fname='samples/winequality-red.csv',
                     delimiter=';',
                     skiprows=1)

np.loadtxt()
:파일안에 있는 txt를 불러올수있다.

레드 와인에 대한 와인정보csv 파일에서 불러올때, 구분은 세미콜론 ; 으로 하고 1번째줄은 스킵한다.

print(redwine) # redwine의 데이터를 출력한다

redwine.shape # redwine의 배열을 확인한다.

type(redwine) # redwine의 타입을 확인한다.

print(redwine.sum()) # redwine 의 값들을 합산한다.

print(redwine.mean()) # redwine의 값들의 평균을 구한다.

print(redwine.mean(axis=0)) # redwine 의 평균의 0번째 축(열 단위) 를 출력한다. ※ 행 단위는 axis =1 이다.

print(redwine[:,0].mean()) #redwine 0번째 축의 값 의 평균값

을 입력하게 되면

그림과 같은 값을 가지게된다.

2)Pandas

Pandas에서 제공하는 데이터 자료구조는 Series와 Dataframe 두가지가 존재하는데 Series는 시계열과 유사한 데이터로서 index와 value가 존재하고 Dataframe은 딕셔너리데이터를 매트릭스 형태로 만들어 준 것 같은 frame을 가지고 있다. 이런 데이터 구조를 통해 시계열, 비시계열 데이터를 통합하여 다룰 수 있다.

-pandas는 쉽고 직관적인 관계형 또는 분류된 데이터로 작업할수 있도록 설계된 빠르고 유연하며 표현이 풍부한 데이터 구조를 제공하는 Python 패키지이다.

-Python 에서 실용적인 실제 데이터 분석을 수행하기 위한 기능들을 제공한다.

-python 을 이용한 데이터 전처리 분야에서는 일반적으로 가장 많이 사용되는 패키지이다.

-데이터의 조회나 집계를 위한 기능들도 많이 포함되어있고, 일부 문법은 SQL과도 유사한 면이 있다.

우선 pandas 라이브러리를 불러온다.

import pandas as pd
from pandas import Series, DataFrame

2-1) Series

그 후 시리즈로 dict matrix를 만든다.

fruit = Series([2500,3800,1200,6000],
               index=['apple','banana','pear','cherry'])

fruit

print(fruit.values)

print(fruit.index)

위의 fruit 는

fruitData = {'apple':2500,'banana':3800,'pear':1200,'cherry':6000}
fruit = Series(fruitData)

이와 같이 나타낼수도 있지만, 과정에서 type이 다르다.

2-2) DataFrame

fruitData = {'fruitName':['apple','banana','cherry','pear'],
            'fruitPrice':[2500,3800,6000,1200],
             'num':[10,5,3,8]}

의 dict matrix 를 만들어내고

fruitFrame = DataFrame(fruitData)

DataFrame 을 이용하게 되면

사진과 같이 보기좋은 표의 frame 에 맞춰서 데이터가 정리가 된다.

DataFrame 을 사용하게되면

columns 의 순서를 바꿔서 입력하는것으로 표에 나오는 순서를 바꿀수 있으며

원하는 데이터 값만을 지정하여 꺼내올 수 있다.


또한 기존의 표에 원하는 문자의 줄을
arr['columns']='data' 의 형식으로 입력했을때
추가할수도 있다.

위의 방식은 모두 동일한 정보를 입력하는데 비해
원하는 위치에 원하는 정보를 넣기 위해서

사진과 같이 원하는 index값에 맞게 원하는 정보를 입력할수도있다.


drop 의 기능을 사용하여 삭제하고 싶은 항목을 삭제한 변수도 만들어 낼수있다.


이전까지 숫자의 형태를 취했던 index 에 이름을 입력할수있다.


연산을 할때 모두 가지고 있는 정보의 값은 연산이 되지만 , 한쪽이라도 가지고 있지 않는 정보의 값은 연산이 되지않는다.


sort_values 를 사용할때는
정보의 값을 오름차순으로 정렬하고싶다면 ()안에 True의 값을, 내림차순으로 정리하고싶다면 ()안에 False의 값을 넣으면 정리된다.


by를 통하여 원하는 정렬기준을 지정할수있다.

2-3) Pandas 실습

pd.read_csv()
의 명령어를 사용하면 csv 파일을 다운받아서 원하는 폴더에서 불러내는것이 아닌 웹상에 있는 파일을 바로 불러올수있다.

german = pd.read_csv('http://~~~/~~~.csv')

이때 수많은 정보를 가진 시트에서 원하는 정보값만을 골라서 호출을 한다.

german_sample = german[['Creditability','Duration of Credit (month)','Purpose','Credit Amount']]

이 데이터를 가지고 pandas 에서 사용할수있는 명령어들을 사용해본다.

exel과 같이 min으로 최솟값을, max에서 최댓값을, mean에서 평균값을 구할수있다.


describe 를 사용하여 전체의 요약정보도 얻어낼수있다.


데이터 간의 상관관계를 확인하기 위하여 corr을 이용하여 서로의 연관도에 대해서 확인할수있다. ★

german_sample = german[['Credit Amount', 'Type of apartment']]

이를 통해서
credit amount 와 type of apartment 의 데이터만을 가진 샘플을 만들어낸다.

이때 아파트의 타입에 따른 credit amout의 값을 구하고. 이의 평균값을 구한다.

german_grouped = german_sample['Credit Amount'].groupby(german_sample['Type of apartment'])

german_grouped.mean()


이를 통해서 아파트타입1의 평균 credit amount 는 3122, 타입2는 3067, 타입3은 4881을 가지는것을 알수있다.

이를 더 세분화 하기위해서 데이터중 purpose 를 더 가져온뒤, 분류 1순위로 purpose 를 가지고, 2번째 분류순위로 Type of apartment 에 따른 Credit amount의 평균을 구한다.

german_sample = german[['Credit Amount', 'Type of apartment','Purpose']]

german_grouped = german_sample['Credit Amount'].groupby([german_sample['Purpose'],german_sample['Type of apartment']])

german_grouped.mean()


이를 통하여 Pandas 를 이용하면 수많은 data 중에서 필요한 값만을 직관적으로 분류할수있다는 점을 확인할수있다.

2.학습내용 중 어려웠던 점

이번 수업은 NumPy의 기능들과 Pandas의 기능들을 살펴보는 수업으로써 내가 직접 생각해서 코드를 쓰는것보다 기존의 형식들을 알려주고 사용방법, 작동방식등을 배우며 진행하게 빠르게 되었다.
이를 통해서 이해도 필요하지만 암기에 가깝다는 느낌을 가지게 되었으며, 처음 접한것이기 때문에 혼란을 겪게 되었다.

3.해결방법

이는 복습을 하는 과정에서 단어를 다시 살펴보고 비교를 하는것으로 이해를 하게되었다.

4.학습소감

오늘의 수업은 기존에 짜여진 라이브러리의 명령어들을 빠르게 설명해주며 진행이 되었다.
복습을 통해서 다시 한번 확인하게 되기는 했지만, 역시나 한번에 너무 많은 정보를 얻게되어서 머리속이 혼란하기때문에, 이는 반복학습을 통해서 익숙해지는것이 중요할것이다.
또한 사용하는 명령어들을 구성하는 영단어 같은경우에도 명령어의 의미를 그대로 가지고 있기 때문에, 이를 제대로 인식하기 위한 영어공부 또한 필요로 할것같다.

좋은 웹페이지 즐겨찾기