반응형

📝판다스(Pandas)

판다스(Pandas)는 파이썬 데이터 처리를 위한 라이브러리입니다. 파이썬을 이용한 데이터 분석과 같은 작업에서 필수 라이브러리입니다. → 테이블 형태 표현

 

시리즈

  • 1차원 배열의 값(values)에 각 값에 대응되는 인덱스(index)를 부여할 수 있는 구조를 갖고 있습니다.
# pip install pandas

import pandas as pd

sr = pd.Series([17000, 18000, 1000, 5000],
               index=["피자", "치킨", "콜라", "맥주"])
print(sr)

'''
=== 출력 결과 ===
피자    17000
치킨    18000
콜라     1000
맥주     5000
'''

print('시리즈의 값 : {}'.format(sr.values))
print('시리즈의 인덱스 : {}'.format(sr.index))
# 시리즈의 값 : [17000 18000  1000  5000]
# 시리즈의 인덱스 : Index(['피자', '치킨', '콜라', '맥주'], dtype='object')

 

 

데이터프레임(DataFrame)

  • 데이터프레임은 2차원 리스트를 매개변수로 전달합니다. 2차원이므로 행방향 인덱스(index)와 열방향 인덱스(column)가 존재합니다. 다시 말해 행과 열을 가지는 자료구조입니다.
# pip install pandas

import pandas as pd

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))
print('데이터프레임의 열이름: {}'.format(df.columns))
print('데이터프레임의 값 : {}'.format(df.values))

# 데이터프레임의 인덱스 : Index(['one', 'two', 'three'], dtype='object')
# 데이터프레임의 열이름: Index(['A', 'B', 'C'], dtype='object')
# 데이터프레임의 값 :
# [
#   [1 2 3]
#   [4 5 6]
#   [7 8 9]
# ]

 

리스트 To 데이터프레임

import pandas as pd

# 리스트로 생성하기
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],
]

df = pd.DataFrame(data)
print(df)
'''
=== 출력 결과 ===
      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
'''

df = pd.DataFrame(data, columns=['학번', '이름', '점수'])
print(df)
'''
=== 출력 결과 ===
   학번        이름     점수
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
'''

 

딕셔너리 To 데이터프레임

# pip install pandas

import pandas as pd

# 딕셔너리로 생성하기
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]
    }

df = pd.DataFrame(data)
print(df)

'''
=== 출력 결과 ===
   학번        이름     점수
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
'''

 

데이터프레임 다양하게 출력해보기

import pandas as pd

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]
    }

df = pd.DataFrame(data)

# 앞 부분을 3개만 보기
print(df.head(3))
'''
   학번      이름     점수
0  1000   Steve  90.72
1  1001   James  78.09
2  1002  Doyeon  98.43
'''

# 뒤 부분을 3개만 보기
print(df.tail(3))
'''
   학번        이름     점수
3  1003      Jane  64.19
4  1004  Pilwoong  81.30
5  1005      Tony  99.14
'''

# 원하는 열만 보기
print(df['학번'])
'''
0    1000
1    1001
2    1002
3    1003
4    1004
5    1005
Name: 학번, dtype: object
'''

 

📝넘파이(Numpy)

넘파이(Numpy)는 수치 데이터를 다루는 파이썬 패키지입니다. Numpy의 핵심이라고 불리는 다차원 행렬 자료구조인 ndarray를 통해 벡터 및 행렬을 사용하는 선형 대수 계산에서 주로 사용됩니다. Numpy는 편의성뿐만 아니라, 속도면에서도 순수 파이썬에 비해 압도적으로 빠르다는 장점이 있습니다. → 계산에 이용

 

 

1차원 넘파이

import numpy as np
vec = np.array([1, 2, 3, 4, 5])
print(vec)
# [1 2 3 4 5]

# 0부터 9까지
range_vec = np.arange(10)
print(range_vec)
# [0 1 2 3 4 5 6 7 8 9]

# 1부터 9까지 +2씩 적용되는 범위
n = 2
range_n_step_vec = np.arange(1, 10, n)
print(range_n_step_vec)
# [1 3 5 7 9]

print('vec의 축의 개수 :',vec.ndim) # 축의 개수 출력
print('vec의 크기(shape) :',vec.shape) # 크기 출력
# vec의 축의 개수 : 1
# vec의 크기(shape) : (5,)

Numpy 배열에는 축의 개수(ndim)와 크기(shape)라는 개념이 존재하는데, 배열의 크기를 정확히 숙지하는 것은 딥 러닝에서 매우 중요합니다

 

 

2차원 넘파이

import numpy as np

mat = np.array([[10, 20, 30], [ 60, 70, 80]])
print(mat)
#[
# [10 20 30]
# [60 70 80]
#]

print('mat의 축의 개수 :',mat.ndim) # 축의 개수 출력
print('mat의 크기(shape) :',mat.shape) # 크기 출력
# mat의 축의 개수 : 2
# mat의 크기(shape) : (2, 3)

# 모든 값이 0인 2x3 배열 생성.
zero_mat = np.zeros((2,3))
print(zero_mat)
# [
#  [0. 0. 0.]
#  [0. 0. 0.]
# ]

# 특정 값이 들어간 2x3 배열 생성
same_value_mat = np.full((2,2), 7)
print(same_value_mat)
# [
#  [7 7]
#  [7 7]
# ]

# 대각선 값이 1이고 나머지 값이 0인 2차원 배열을 생성.
eye_mat = np.eye(3)
print(eye_mat)
# [
#  [1. 0. 0.]
#  [0. 1. 0.]
#  [0. 0. 1.]
# ]

# 임의의 값으로 채워진 배열 생성
random_mat = np.random.random((2,2)) # 임의의 값으로 채워진 배열 생성
print(random_mat)
# [
#  [0.18242516 0.85876578]
#  [0.60103237 0.2575347 ]
# ]

 

데이터 값 변경 없이 배열의 구조 변경

import numpy as np
# 내부 데이터는 변경하지 않으면서 배열의 구조를 바꿉니다
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]
# ]

0부터 29까지의 숫자를 생성하는 arange(30)을 수행한 후, 원소의 개수가 30개이므로 5행 6열의 행렬로 변경

 

특정 행 또는 열에 접근

mat = np.array([[1, 2, 3], [4, 5, 6]])
print(mat)
# [
#  [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]

 

특정 원소 출력

mat = np.array([[1, 2], [4, 5], [7, 8]])
print(mat)
# [
#  [1 2]
#  [4 5]
#  [7 8]
# ]

# 1행 0열의 원소
# => 0부터 카운트하므로 두번째 행 첫번째 열의 원소.
print(mat[1, 0])
# 4

# mat[[2행, 1행],[0열, 1열]]
# 각 행과 열의 쌍을 매칭하면 2행 0열, 1행 1열의 두 개의 원소.
indexing_mat = mat[[2, 1],[0, 1]]
print(indexing_mat)
# [7 5]

 

행렬 연산

x = np.array([1,2,3])
y = np.array([4,5,6])

# result = np.add(x, y)와 동일.
result = x + y
print(result)
# [5 7 9]

# result = np.subtract(x, y)와 동일.
result = x - y
print(result)
# [-3 -3 -3]

# result = np.multiply(result, x)와 동일.
result = result * x
print(result)
# [-3 -6 -9]

# result = np.divide(result, x)와 동일.
result = result / x
print(result)
# [-3. -3. -3.]


# 행렬곱
mat1 = np.array([[1,2],[3,4]])
mat2 = np.array([[5,6],[7,8]])
mat3 = np.dot(mat1, mat2)
print(mat3)
# [
#  [19 22]
#  [43 50]
# ]

 

 

📝Matplotlib(맷플롯립)

맷플롯립(Matplotlib)은 데이터를 차트(chart)나 플롯(plot)으로 시각화하는 패키지입니다. 데이터 분석에서 Matplotlib은 데이터 분석 이전에 데이터 이해를 위한 시각화나, 데이터 분석 후에 결과를 시각화하기 위해서 사용됩니다.

 

plt.title('students')
plt.plot([1,2,3,4],[2,4,8,6])
plt.plot([1.5,2.5,3.5,4.5],[3,5,8,10]) # 라인 새로 추가
plt.xlabel('hours')
plt.ylabel('score')
plt.legend(['A student', 'B student']) # 범례 삽입
plt.show()

 

 

 

 

🔗 참고 및 출처

https://wikidocs.net/32829

반응형