기본 환경: IDE: VS code, Language: Python
1. Pandas
1.1. ⭐ Series
: 1차원 배열의 값(values)에 대응되는 인덱스(index)를 부여할 수 있는 구조
: index와 value로 구성된 자료구조
# pandas_basic.py
import pandas as pd
# Series
sr = pd.Series([1000, 2000, 3000, 4000],
index=["일천원", "이천원", "삼천원", "사천원"])
print(sr)
'''
일천원 1000
이천원 2000
삼천원 3000
사천원 4000
dtype: int64
'''
print(format(sr.index)) # Index(['일천원', '이천원', '삼천원', '사천원'], dtype='object')
print(format(sr.values)) # [1000 2000 3000 4000]
1.2. ⭐ DataFrame
: 행과 열을 가지는 자료구조로, col, index, value로 구성됨
# pandas_basic.py
import pandas as pd
# dataFrame
values = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
index = ['one', 'two', 'three']
columns = ['A', 'B', 'C']
df = pd.DataFrame(values, index=index, columns=columns)
print(df)
'''
A B C
one 1 2 3
two 4 5 6
three 7 8 9
'''
print(format(df.index)) # Index(['one', 'two', 'three'], dtype='object')
print(format(df.columns)) # Index(['A', 'B', 'C'], dtype='object')
print(format(df.values)) # [[1 2 3] [4 5 6] [7 8 9]]
# dataFrame using list
list_data = [
['1000', 'Steve', 90.72],
['1001', 'James', 78.09],
['1002', 'Doyeon', 98.43],
['1003', 'Jane', 64.19],
['1004', 'Pilwoong', 81.30],
['1005', 'Tony', 99.14],
]
df2 = pd.DataFrame(list_data)
print(df2)
'''
0 1 2
0 1000 Steve 90.72
1 1001 James 78.09
2 1002 Doyeon 98.43
3 1003 Jane 64.19
4 1004 Pilwoong 81.30
5 1005 Tony 99.14
'''
df2 = pd.DataFrame(list_data, columns=['학번', '이름', '점수']) # col_name 부여
print(df2)
'''
학번 이름 점수
0 1000 Steve 90.72
1 1001 James 78.09
2 1002 Doyeon 98.43
3 1003 Jane 64.19
4 1004 Pilwoong 81.30
5 1005 Tony 99.14
'''
df2.index=["영", "일", "이", "삼", "사", "오"] # idx_name 부여
print(df2)
'''
학번 이름 점수
영 1000 Steve 90.72
일 1001 James 78.09
이 1002 Doyeon 98.43
삼 1003 Jane 64.19
사 1004 Pilwoong 81.30
오 1005 Tony 99.14
'''
# dataFrame using dictionary(key-value)
dic_data = {
'학번' : ['1000', '1001', '1002', '1003', '1004', '1005'],
'이름' : [ 'Steve', 'James', 'Doyeon', 'Jane', 'Pilwoong', 'Tony'],
'점수': [90.72, 78.09, 98.43, 64.19, 81.30, 99.14]
}
df3 = pd.DataFrame(dic_data)
print(df3)
'''
학번 이름 점수
0 1000 Steve 90.72
1 1001 James 78.09
2 1002 Doyeon 98.43
3 1003 Jane 64.19
4 1004 Pilwoong 81.30
5 1005 Tony 99.14
'''
1.3. Panel
: 다차원 데이터 구조
: 현재 pandas에서 지원하지 않음
2. Numpy
2.1. ⭐ numpy.ndarray()
:N-dimensional array, 다차원 배열의 자료구조
# numpy_basic.py
import numpy as np
# 1차원 배열
vec = np.array([1, 2, 3, 4, 5])
print(vec) # [1 2 3 4 5]
# 2차원 배열
mat = np.array([[10, 20, 30], [60, 70, 80]])
print(mat) # [[10 20 30] [60 70 80]]
2.2. numpy.arrange(i, j, k)
: i부터 j-1까지 k씩 증가하는 배열 생성
# numpy_basic.py
import numpy as np
# np.arange(i, j, k): i부터 j-1까지 k씩 증가하는 배열 생성
n = 2
range_n_step_vec = np.arange(1, 10, n)
print(range_n_step_vec) # [1 3 5 7 9]
2.3. numpy.reshape()
: 내부 데이터 변경없이 배열의 구조 변경
# numpy_basic.py
import numpy as np
# np.reshape(): 내부 데이터 변경없이 배열의 구조 변경
originshape_mat = np.array(np.arange(30))
print(originshape_mat) # [0 1 2 ... 28 29]
reshape_mat = np.array(np.arange(30)).reshape((5,6))
print(reshape_mat)
'''
[[ 0 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]]
'''
2.4. numpy slicing
: 특정 행이나 열들의 원소들에 접근할 수 있음
# numpy_basic.py
import numpy as np
# numpy slicing
mat2 = np.array([[1, 2, 3], [4, 5, 6]])
print(mat2) # [[1, 2, 3] [4, 5, 6]]
# 첫번째 행 출력
slicing_mat = mat[0, :]
print(slicing_mat) # [1 2 3]
# 두번째 열 출력
slicing_mat = mat[:, 1]
print(slicing_mat) # [2 5]
2.5. numpy indexing
: 슬라이싱을 사용할 경우, 연속적이지 않은 원소들을 추출할 수 없음
: 인덱싱을 사용하여, 연속적이지 않은 원소들을 추출하여 배열을 생성
# numpy_basic.py
import numpy as np
# numpy indexing
mat3 = np.array([[1, 2], [4, 5], [7, 8]])
print(mat3) # [[1, 2] [4, 5] [7, 8]]
# 특정 위치 원소 1개 반환
print(mat3[1, 0]) # 4
# 특정 위치 원소 2개 반환 -> 배열 생성
indexing_mat = mat3[[2, 1],[0, 1]] # mat3[[2행, 1행], [0열, 1열]]
print(indexing_mat) # [7 5]
소스 코드
참고 자료
📑 01-04 판다스(Pandas) and 넘파이(Numpy) and 맷플롭립(Matplotlib)
📑 [Python] 10. Pandas - DataFrame
'Naver Clould with BitCamp > Aartificial Intelligence' 카테고리의 다른 글
Data Preprocessing: StandardScaler, MinMaxScaler (0) | 2023.01.23 |
---|---|
Classification Model Construction (0) | 2023.01.23 |
Classification and One-Hot Encoding (0) | 2023.01.23 |
Handling Overfitting: EarlyStopping (0) | 2023.01.22 |
Validation Data (0) | 2023.01.22 |