분석할 수 있는 데이터 : table, DataFrame, 2차원 Array
- 열 : 변수, 요인, Features, X, input (독립변수) / 결과, Target, y, Lable, Output (종속변수)
- 행 : 분석단위, 샘플, 관측치, 데이터 건 수
Numpy
- 리스트 : 값의 집합. 다른 타입의 데이터도 한꺼번에 저장 가능. 요소 변경, 추가, 제거가 용이
- 그러나 수학적 계산이 느려서 대량의 데이터 처리 속도가 느리다 ㅜ
- Numpy : Numerical Python의 준말. 빠른 계산 가능
a=np.array([1,2,3,4,5])
a # [1 2 3 4 5]
type(a) # numpy.ndarray
a.shape # (5, )
a.ndim # 1
a.dtype # int32'
a[0] # 1
a = np.array([[[1, 3, 1],
[4, 7, 6],
[8, 3, 4]],
[[6, 2, 4],
[8, 1, 5],
[3, 5, 9]]])
a.shape #(2,3,3)
- 3차원 배열일 때
a.shape ⇒ (개수, 행, 열), (3,3) 행렬이 2개 있음.
reshape
행렬의 형태를 변환
a = np.array([[1, 2, 3],
[4, 5, 6]])
b = a.reshape(3, 2)
'''
[[1 2]
[3 4]
[5 6]]
'''
- -1의 편리성
(m, -1) 또는 (-1, n) 처럼 사용해 행 또는 열 크기 한쪽만 지정할 수 있습니다.
print(a.reshape(2, -1)) #2행으로 열 크기 맞춰줘
[[1 2 3]
[4 5 6]]
- 함수와 method(attribute)
np.mean(a) : a가 리스트, 튜플 등을 일 때 사용 가능, numpy로 변환해서 계산한 다음 결과만 출력
a.mean() : a가 numpy array만 됨
- 배열 조회(인덱스 조회)
print(a[[0, 1]]) #1,2번째 행 조회
[[1 2 3]
[4 5 6]]
[값, 범위], [범위, 값]→ 1차원 예) a [:1]
[범위, 범위]→ 2차원 예)a [:,1:2]
[값, 값] → 원소만 예) print(a[[1,2], [1,2]]) #a [1,1]&a [2,2]
1) 배열 더하기
- + 또는 np.add() 함수를 사용합니다.
# 배열 더하기 print(x + y) # 또는 print(np.add(x, y))
2) 배열 빼기
- - 또는 np.subtract() 함수를 사용합니다.
# 배열 빼기 print(x - y) # 또는 print(np.subtract(x, y))
3) 배열 곱하기
- * 또는 np.multiply() 함수를 사용합니다.
# 배열 곱하기 print(x * y) # 또는 print(np.multiply(x, y))
4) 배열 나누기
- / 또는 np.divide() 함수를 사용합니다.
# 배열 나누기 print(x / y) # 또는 print(np.divide(x, y))
5) 배열 제곱
- ** 또는 np.power() 함수를 사용합니다.
# 배열 y 제곱 print(x ** y) # 또는 print(np.power(x, y)) # 배열 제곱 print(x ** 2)
- np.where(조건문, 참일 때 값, 거짓일 때 값)
a=np.array([1,2,3,4]), np.where(a>2,1,0)=[0,0,1,1]
- argmax, argmin : 전체 중에서 가장 큰/작은 값의 인덱스
print(np.argmax(a))
열 기준 큰 값의 인덱스
print(np.argmax(a, axis = 0))
행 기준 큰 값의 인덱스
print(np.argmax(a, axis = 1))
Pandas
- DataFrame이란? 관계형 데이터베이스의 테이블 또는 엑셀 시트와 같은 형태 (2차원 구조)
- 열 이름 확인 list(data)⇒ 데이터프레임을 리스트 함수에 넣으면 열 이름이 리스트로 반환됨.
- print(data.columns) print(data.columns.values) # np array 형태
- 자료형 확인
- int64: 정수형 데이터(int)
- float64: 실수형 데이터(float)
- object: 문자열 데이터(string)
- 열 자료형, 값 개수 확인
data.info() - 열 기준 정렬
- data.sort_values(by=’column name’, ascending=True)
- 복합 열 정렬
- data.sort_values(by=['JobSatisfaction', 'MonthlyIncome'], ascending=[True, False])
⇒ 1번째로 Job 오름차순으로 보고 같으면 2번째로 Income 내림차순으로 정렬
- data.sort_values(by=['JobSatisfaction', 'MonthlyIncome'], ascending=[True, False])
- 고윳값 확인
- unique() 메서드로 고유값을 확인하며, 결과값은 배열 형태
print(data ['MaritalStatus']. unique())⇒ ['Married' 'Single' 'Divorced']
- unique() 메서드로 고유값을 확인하며, 결과값은 배열 형태
- 조건으로 조회(location)
df.loc [조건] 형태로 조건을 지정해 조건에 만족하는 데이터만 조회할 수 있습니다.
우선 조건이 제대로 판단이 되는지 확인한 후 그 조건을 대 괄호 안에 넣으면 됩니다.
예) data.loc [data ['DistanceFromHome'] > 10] 또는 data.loc [data ['DistanceFromHome'] > 10, 'DistanceFromHome'] ← 마지막에 열 이름 추가
- isin(), between()
- isin([값 1, 값 2,..., 값 n]) : 값 1 또는 값 2 또는... 값 n인 데이터만 조회합니다. *값은 리스트로
data.loc[data['JobSatisfaction'].isin([1,4])]
#직무 만족도가 1이거나 4인 사람만
- between(시작값 1, 끝값 2) : 값 1 ~ 값 2까지 범위 안의 데이터만 조회합니다. *변하지 않으므로 튜플
data.loc[data['Age'].between(25, 30)]
#나이가 25~30인 사람
예제 1
1,2를 불만(unsat), 3,4를 만족(sat)으로 하는 새로운 변수 JobSat2를 추가하시오.
data['JobSat2']=np.where(data['JobSat'].isin([1,2]),'unsat','sat')
data.head()
열 삭제
- 삭제 전에는 항상 copy본으로!!
1) 열 하나 삭제
- drop() 메서드를 사용해 열을 삭제합니다.
- axis=0: 행 삭제(기본 값)
- axis=1: 열 삭제
- inplace=True 옵션을 지정해야 실제로 반영이 됩니다.
- False : 삭제한 것처럼 보여줘(조회!)
2) 여러 개 삭제
data2.drop(['JobSat2','Diff_Income'], axis=1, inplace=True)
값 변경
1) 열 전체 값 변경
data2['Income_LY'] = 0
2) 조건에 의한 값 변경
# Diff_Income 의 값이 1000보다 작은 경우, 0로 변경해 봅시다.
data2.loc[data2['Diff_Income'] < 1000, 'Diff_Income' ] = 0
# Age가 40보다 많으면 1, 아니면 0으로 바꿔 봅시다.
data2['Age'] = np.where(data2['Age'] > 40, 1, 0)
'Python' 카테고리의 다른 글
| [빅데이터 분석기사] 실기 7회 후기, 대구 시험장 주차장, 3일 준비(합격!!) (2) | 2023.12.04 |
|---|---|
| [빅데이터 분석기사] 실기 문제 연습 (작업형2) 모델링과 예측 (0) | 2023.12.01 |
| [빅데이터 분석기사] 실기 시험 준비, 독학, 온라인, python (0) | 2023.11.30 |
댓글