research notes

Numpy/Pandas 정리 본문

머신러닝/ML basic

Numpy/Pandas 정리

forest62590 2022. 1. 28. 17:49
728x90

1. type() and .shape

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

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

print('array1 type: ', type(array1))

print('array1 shape: ', array1.shape)

print('array2 shape: ', array2.shape)

array1 type:  <class 'numpy.ndarray'>
array1 shape:  (3,)
array2 shape:  (1, 3)

2. ndarray data type

- ndarray 내의 데이터 타입은 같은 데이터 타입만 가능

- ndarray 데이터 값의 타입변경은 astype() 메서드를 사용

 

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

array_float = array_int.astype('float64')

print(array_float, array_float.dtype)

[1. 2. 3.] float64

3. ndarray reshape

array1 = np.arange(10)

array2 = array1.reshape(-1, 5) # 고정된 5개의 칼럼에 맞는 로우를 자동으로 선택하여 반환

array3 = array1.reshape(5, -1) # 고정된 5개의 로우에 맞는 칼럼을 자동으로 선택하여 반환

print('array1:', array1.tolist())

print('array2:', array2.tolist())

print('array3:', array3.tolist())

print('array1 shape:', array1.shape)

print('array2 shape:', array2.shape)

print('array3 shape:', array3.shape)

array1: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
array2: [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]
array3: [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]]
array2 shape: (10,)
array2 shape: (2, 5)
array3 shape: (5, 2)

ndarray reshape에서 -1인자는 reshape(-1, 1)과 같은 형태로 자주 사용 된다.

 

ndarray0 = np.arange(3)

ndarray0_1 = ndarray0.reshape(-1, 1)

print('ndarray0:', ndarray0.tolist())

print('ndarray0 shape:', ndarray0.shape)

print('ndarray0_1', ndarray0_1.tolist())

print('ndarray0_1 shape:', ndarray0_1.shape)

 

print('=============')

 

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

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

print('ndarray1 shape:', ndarray1.shape)

print('ndarray2 shape:', ndarray2.shape)

ndarray0: [0, 1, 2]
ndarray0 shape: (3,)
ndarray0_1 [[0], [1], [2]]
ndarray0_1 shape: (3, 1)
=============
ndarray1 shape: (1, 3)
ndarray2 shape: (3, 1)

4. ndarray axis

- axis0은 row 방향의 축을 의미하며, axis1은 column 방향의 축을 의미

- row와 column은 넘파이 ndarray에서 사용되지 않는 방식

- 3차원의 경우 axis0(행), axis1(열), axis2(높이)로 사용가능

5. Boolean 인덱싱

array = np.arange(start=1, stop=10)
array_con = array[array > 5]
print('array > 5 불린 인덱싱 값 결과:', array_con)

array > 5 불린 인덱싱 값 결과: [6 7 8 9]

6. DataFrame과 Series 객체

- DataFrame['칼럼명']은 Series 객체 형태로 특정 칼럼 데이터 세트를 반환

- value_counts()를 사용하면 해당 칼럼에 속한 카테고리별 데이터 수를 반환

- DataFrame은 value_counts() 메서드를 가지고 있지 않음

 

value_counts = titanic_df['Pclass'].value_counts()

print(value_counts)

 

3    491
1    216
2    184
Name: Pclass, dtype: int64

7. ndarray, 리스트 → DataFrame 변환

col_name1 = ['col1', 'col2', 'col3']

list1 = [[1, 2, 3], [11, 12, 13]]

array1 = np.array(list1)

print('array1 shape:', array1.shape)

df_list1 = pd.DataFrame(list1, columns=col_name1)

print('2차원 리스트로 만든 DataFrame:\n', df_list1)

df_array1 = pd.DataFrame(array1, columns=col_name1)

print('2차원 ndarray 만든 DataFrame:\n', df_array1)

array1 shape: (2, 3)
2차원 리스트로 만든 DataFrame:
    col1  col2  col3
0     1     2     3
1    11    12    13
2차원 ndarray로 만든 DataFrame:
    col1  col2  col3
0     1     2     3
1    11    12    13

8. DataFrame → ndarray, 리스트 변환

ndarray = df_array1.values

print('df_array1.values 타입:', type(ndarray), 'df_array1.values shape:', ndarray.shape)

print(ndarray)

list = ndarray.tolist()

print('ndarray to list:', list)

df_array1.values 타입: <class 'numpy.ndarray'> df_array1.values shape: (2, 3)
[[ 1  2  3]
 [11 12 13]]
ndarray to list: [[1, 2, 3], [11, 12, 13]]

9. iloc[ ], loc[ ]

iloc[ ](integer location) → 위치 기반 인덱싱만 가능. 따라서 행과 열 위치 값으로 정수형 값을 지정해 원하는 데이터를 반환 
loc[ ] (location) → 명칭 기반 인덱싱만 가능. 따라서 행 위치에 DataFrame 인덱스가 오며, 열 위치에는 칼럼 명을 지정해 원하는 데이터 반환

References:

[1] 파이썬 머신러닝 완벽가이드, 권철민, 위키북스

[2] https://www.sharpsightlabs.com/blog/numpy-axes-explained/

728x90
Comments