파이썬 데이터 다루기 함수 정리
Numpy
Matplotlib
Pandas
Seaborn
Numpy
수학식을 다루기 위한 기본식
- np.zeros(), np.ones(), np.arange()
- Array연산은 기본적으로 동일한 matrix끼리 연산이 진행된다.
- 연산의 크기가 달라도 Broadcast란 기능으로 크기가 다른 array도 연산이 가능하다
- Array인덱싱이 좀 많이 쓰일것 같다. 1차원은 간단하기 때문에 2차원일때 다루기로 하겠다.
- x행의 모든 요소를꺼낼땐 data[ x - 1 , : ]
- y열의 모든 요소를꺼낼땐 data[ : , y - 1 ]
- 통계함수 행렬연산들 다루기
import numpy as np
import random as rm
data1 = np.array([1,2,3,4,5])
data2 = np.array([2,4,6,8,10])
np.zeros((3,5)) # 3행 5열 0값 생성
np.ones((3,5)) # 3행 5열 1값 생성
np.arange(3,10,) # 3부터 10까지 1차원 array 생성
np.arange(3,10,3)# 3차이 나게 생성도 가능
data1 + data2 #Array연산
data4 = np.array([[1,2,3],[4,5,6]]) #Array Broadcast 연산
data3 = np.array([3,4,5])
data4 + data3 # 3,4,5를 1행과 2행에 더함
data5 = np.array([[1,2,3],[4,5,6],[7,8,9]])
data5[2,2] # 2차원 데이터의 인덱스 표현 [행,열] 로해야 한다.
data5[1,:] # 2행의 모든 요소를 나타낼때
data5[:,1] # 2열의 모든 요소를 나타낼때
data6 = np.random.randn(5,5) # 5,5행열로 기대갑이0 표준편차가 1인 가우시안 난수를 발생시키는 함수
np.abs(data6) # abs는 절댓값 구하기
np.sqrt(data6) # 성분의 제곱근 구하기
np.square(data6) #성분의 제곱값 구하기
np.exp(data6) # 자연로그 e^data6 성분으로 값을 구하기
np.sum(data6, axis = 1) # 열간의 합을 구함
np.mean(data6, axis = 1) # 열간의 평균을 계싼
np.argmax(data6) # 최대값의 인덱스를 반환
np.argmin(data6) # 반대로 최소값
np.sort(data6) # 행별로 오름차순 정리
np.sort(data1)[::-1] #내림차순으로 정렬
np.sort(data6, axis = 0) #열별로 오름차순 정리
np.transpose(data6) #전치행렬 표현
np.dot(data1,data2) #행렬곱을 나타냄
data1 * data2 # 행렬의 요소끼리의 곱
np.diagonal(data6) # 행렬의 대각행렬을 뽑아냄
np.linalg.inv(data6) # 역행렬을 배열로 나타냄
Pandas
Pandas는 데이터들을 분석하기위해서 데이터 표를 만드는 과정에 사용되는 함수
- Series 에 대해서 정리
- Series는 데이터들을 표형태로 왼쪽에 인덱스와 오른쪽의 인덱스 값으로 함수안에 수를 표편함
- Data Frame
- Data Frame은 Series 보다 좀더 넓고 확장되어 사용이가능함
- 엑셀식의 표처럼 이차원으로 표현이 가능하게 되어있다
- Data Frame 이해하기
- Data Frame 데이터 추가 삭제
- 행 열 선택하고 조작하기
- Boolean 값으로 값 조작
- Data 분석용 함수들 https://doorbw.tistory.com/172?category=706990
import pandas as pd
import numpy as np
import random as rn
data1 = pd.Series([4,1,2,6,7]) # 데이터를 표에 index / value 로 표현함
data1.values # 데이터1에 있는 value들을 확인
data1.index # 인덱스만 확인
pd.Series([2,3,1,4,5], index =['a','b','c','d','f']) # 원하는 인덱스로 변경 가능 사이즈는 맞춰야하
data2 = {'firs' : ['hello','nice','moce'], # ' 열의이름', ['안에 values']로 구성
'day' : [1,2,3],
'point' : [1.5,3.7,4.2]}
Frame1 = pd.DataFrame(data2)
Frame1.index #인덱스 확인
Frame1.values # 값들 확인
Frame1.columns # 컬럼값들고 확인가능
pd.DataFrame(data2, columns = ['first','day','po','pena'],
index = ['one','two','three'])
# 기존에 있는 데이터에서 열과 행의 인덱스만 빌려 사용도 가능 이때 index의 갯수가 맞아야 값이 들어감
# 인덱스 값이 맞아야함 값이 없으면 알아서 NAN으로 들어감
Frame1.describe() # 데이터들을 정리해 요약해서 보여준다 갯수, 평균, 분산,최소값 등등
#Data Frame indexing
Frame1['firs'] #first 열의 값만 출력
Frame1.firs #위와 같은 의미
Frame1[['firs','day']] #원하는 열을 뽑을수도 잇음
Frame1['add'] = 0.7 #add열을 추가하고 값을 대입할수 있음
Frame1['add2'] = np.random.rand(3,1) # 이렇게도 삽입이 가능
Se = pd.Series([1,2,3], index =[0,1,2])
Frame1['add3'] = Se #이렇게 Series도 삽입가능
#그외 다양한 조건식 수식계산 대입도 가능 생략
del Frame1['add3'] #해당 열 삭제
#loc 와 iloc를 사용해서 원하는 행열을 뺄수 있음
print(Frame1)
Frame1.loc[:,['firs','day']]
Frame1.loc[0:1,'firs':'day'] #0~1행 에서 first,day 열 값 출력
Frame1.loc[4,:] =['new',3,4,1,None] # 새로운 행 삽입 loc['index이름',:]
Frame1.iloc[0] # 행들의 데이터들을 출력한다.
Frame1.iloc[0:2,2:4] # [인덱스,열] 0,1,2 번째 행, 2,3 번째 열 출력
Frame1.iloc[[0,2],[1,2]] # 0,2 번째 index와 1,2번째 열 출력
print(Frame1)
Frame1['point'] > 3.0 # 3.0 이상의 값으로 조건을 달수도 있음
Frame1.loc[Frame1['point'] > 3.0] #Frame1 중 point열이 3이상인 데이터를 출력
Frame1.loc[Frame1['firs'] == 'hello',['firs','day','add']] # 이렇게 원하는 값만 출력도 가능
Frame1.loc[Frame1['point'] > 3, 'add'] = 0 # 3보다큰 포인터 값에 add열을 0으로 대체
print(Frame1)
randfr = pd.DataFrame(np.random.rand(4,6))
randfr.columns = ['A','B','C','D','E','F']
randfr.index = pd.date_range('2015-05-05',periods = 4) #date_range함수를 사용
print(randfr)
Frame1.dropna(how='any') # 하나의 값이라도 null이있으면 그 행을 삭제
Frame1.fillna(value = 0.9) # nan값을 value값으로 채워넣기
Frame1.isnull() #null값인지 아닌지 확인 Df로 확인가능
Frame1.sum(axis = 0) # 열의 합을 나타냄
Frame1.sum(axis = 1) # 행방향으로 합을 나타냄 Nan은 배제시킨다
Frame1['day'].sum() #특정행만 삽입
Frame1.iloc[:,1].sum()
Matplotib
- Matplotlib는 이전의 numpy와 pandas를 사용해서 자료구조를 쉽게 시각화 하기위해 사용하는 함수이다
- Mataplotlib 기초
- plot 종류
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
%matplotlib nbagg
import random as rn
plt1 = pd.Series(np.random.randint(0,10, size = 10),index = np.arange(0,100,10))
plt2 = pd.DataFrame(np.random.randn(10, 4).cumsum(axis=0),
columns=["A", "B", "C", "D"],
index=np.arange(0, 100, 10))
plt3 = pd.DataFrame(np.random.rand(4,6).cumsum(axis = 0)) #cumsum은 행대로 합을합침
# plt3.plot(kind='bar') #바형태로 그리기
#산점도 그리기
x1 = np.random.normal(1,1, size=(500,1))
x2 = np.random.normal(6,8,size = (500,1))
X = np.concatenate((x1,x2), axis =1)
plt.scatter(x1,x2, color = 'g') #500개 데이터 # x1 은 x축 x2는 y축
# plot(x , y) : x ,y 데이터 출력
# set_title() : 그래프 제목 설정
# set_xlabel() : x label 설정
# set_ylabel() : y lable 설정
# set_xlim() : x 범위 설정
# set_ylim() : y 범위 설정
# legend() : 그래프 범례 설정
# fig.savefig() : figure 저장
fig, AX = plt.subplots()
AX.plot(x1)
AX.plot(x2)
AX.set_title('data')
AX.set_xlabel("x1")
AX.set_ylabel("x2")
Ax.legend(
loc='upper left',
shadow=True,
fancybox=True,
borderpad=2
)
'공부 > AI School 인공지능 여름캠프' 카테고리의 다른 글
머신러닝 의사결정트리(Decision Tree), 앙상블, 엔트로피 - [AI School] (0) | 2021.05.03 |
---|---|
머신러닝 분류 Classification - [AI School] (0) | 2021.05.03 |
머신러닝 회귀(Regression) 정리 - [AI School] (0) | 2021.05.03 |
파이썬 사이킷 런(sklearn) 이용 - [AI School] (0) | 2021.05.03 |
탐색적 데이터 분석(EDA) 정리 - [AI School] (0) | 2021.05.03 |