[모두의연구소] 풀잎스쿨 - 데이터분석 2주차

미남홀란드·2023년 6월 20일

1장

머신러닝 : 머신러닝은 컴퓨터 프로그램이 데이터로부터 학습하여 패턴을 인식하고 의사 결정을 할 수 있는 인공 지능의 한 분야입니다. 머신러닝은 데이터를 분석하고 모델을 구축하여 예측, 분류, 군집 등 다양한 작업을 수행할 수 있습니다. 이를 위해 머신러닝은 통계학, 최적화 이론, 컴퓨터 과학 등 다양한 학문을 기반으로 하며, 데이터를 통해 모델을 학습시켜 문제를 해결하는 과정을 거칩니다. 머신러닝은 현대 사회에서 많은 분야에서 활용되며, 예측 분석, 자연어 처리, 음성 인식, 이미지 인식 등 다양한 응용 분야에서 중요한 역할을 수행합니다.

NUMPY

Numpy : 넘파이(NumPy)는 파이썬에서 과학적 계산을 위한 핵심 라이브러리로, 다차원 배열과 행렬 연산에 특화되어 있습니다. 넘파이는 벡터 및 행렬 연산에 효율적이며, 수치 계산을 위한 다양한 함수와 도구를 제공하여 데이터 분석, 머신러닝, 과학 연구 등 다양한 분야에서 사용됩니다. C기반(기계친화적인 언어)으로 작성된 패키지이다.

머신러닝 주요 알고리즘은 선형대수학과 통계 기반의 알고리즘이고 행렬계산이 많기 때문에 대용량 데이터를 다루고 그에 따라 인퍼런스 타임도 많이 걸리게 된다.그 때 우리는 넘파이를 활용하여 데이터를 잘 전처리 해준다면 메모리 절약 및 속도향상 두마리 토끼를 잡을 수 있다

아래는 numpy로 의 예제이다.

  • 사실 현실의 데이터는 이렇지는 않지만 넘파이의 명령어 등을 공부해보면서 다양한 시각에서 데이터 전처리 및 활용을 할 수 있다.
  1. 배열생성하기
import numpy as np

# 1차원 배열 생성
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1)

# 2차원 배열 생성
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2)
  1. 배열 연산하기
import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

# 덧셈
addition = arr1 + arr2
print(addition)

# 곱셈
multiplication = arr1 * arr2
print(multiplication)

# 제곱근
sqrt_arr1 = np.sqrt(arr1)
print(sqrt_arr1)
  1. 배열 형태 변경하기
import numpy as np

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

# 2x3 행렬로 형태 변경
reshape_arr = arr.reshape(2, 3)
print(reshape_arr)

# 전치행렬 구하기
transpose_arr = arr.reshape(2, 3).T
print(transpose_arr)
  1. 배열의 인덱싱과 슬라이싱
import numpy as np

arr = np.array([1, 2, 3, 4, 5])

# 인덱싱
print(arr[0])  # 첫 번째 요소 접근
print(arr[-1])  # 마지막 요소 접근

# 슬라이싱
print(arr[1:4])  # 인덱스 1부터 3까지의 요소 슬라이싱
print(arr[:3])  # 처음부터 인덱스 2까지의 요소 슬라이싱
print(arr[3:])  # 인덱스 3부터 마지막 요소까지 슬라이싱
  1. 배열 연산과 통계 함수
import numpy as np

arr = np.array([1, 2, 3, 4, 5])

# 합계
print(np.sum(arr))

# 평균
print(np.mean(arr))

# 최댓값
print(np.max(arr))

# 최솟값
print(np.min(arr))

Reshape : 내가 배우면서 중요하다고 생각한 넘파이 명령어

  1. 1차원 배열을 2차원 배열로 변환:
import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])
reshaped_arr = arr.reshape(2, 3)

print(reshaped_arr)
# 출력 결과:
# [[1 2 3]
#  [4 5 6]]
    1. 2차원 배열을 1차원 배열로 변환:
import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])
reshaped_arr = arr.reshape(6)

print(reshaped_arr)
# 출력 결과:
# [1 2 3 4 5 6]
  1. 3차원 배열을 2차원 배열로 변환:
import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])
reshaped_arr = arr.reshape(6)

print(reshaped_arr)
# 출력 결과:
# [1 2 3 4 5 6]
  1. 다차원 배열을 1차원 배열로 변환:
import numpy as np

arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
reshaped_arr = arr.reshape(-1)

print(reshaped_arr)
# 출력 결과:
# [1 2 3 4 5 6 7 8]
  1. 다차원 배열의 모양 변경:
import numpy as np

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
reshaped_arr = arr.reshape(2, 3, 2)

print(reshaped_arr)
# 출력 결과:
# [[[ 1  2]
#   [ 3  4]
#   [ 5  6]]
#
#  [[ 7  8]
#   [ 9 10]
#   [11 12]]]

Pandas

판다스(Pandas)는 파이썬에서 데이터 조작과 분석을 위한 라이브러리입니다. 주로 표 형태의 데이터를 다루는데 특화되어 있으며, 데이터 프레임(DataFrame)이라는 자료구조를 제공합니다. 판다스를 사용하면 데이터의 필터링, 정렬, 그룹화, 결측치 처리 등 다양한 작업을 편리하게 수행할 수 있습니다.

파이썬 역량 : 딕셔너리, 슬라이싱, 리스트의 이해 등이 있다.

데이터 프레임 생성

import pandas as pd

data = {'이름': ['홍길동', '김철수', '이영희'],
        '나이': [25, 30, 28],
        '성별': ['남', '남', '여']}

df = pd.DataFrame(data)
print(df)
# 출력 결과:
#    이름  나이 성별
# 0  홍길동  25  남
# 1  김철수  30  남
# 2  이영희  28  여

데이터 프레임 정보 확인

import pandas as pd

data = {'이름': ['홍길동', '김철수', '이영희'],
        '나이': [25, 30, 28],
        '성별': ['남', '남', '여']}

df = pd.DataFrame(data)
print(df.info())
# 출력 결과:
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 3 entries, 0 to 2
# Data columns (total 3 columns):
#  #   Column  Non-Null Count  Dtype 
# ---  ------  --------------  ----- 
#  0   이름     3 non-null      object
#  1   나이     3 non-null      int64 
#  2   성별     3 non-null      object
# dtypes: int64(1), object(2)
# memory usage: 200.0+ bytes
# None

데이터 프레임 필터링

import pandas as pd

data = {'이름': ['홍길동', '김철수', '이영희'],
        '나이': [25, 30, 28],
        '성별': ['남', '남', '여']}

df = pd.DataFrame(data)
filtered_df = df[df['나이'] > 25]
print(filtered_df)
# 출력 결과:
#    이름  나이 성별
# 1  김철수  30  남
# 2  이영희  28  여

데이터 프레임 주요 파라미터

  1. data: 데이터프레임을 생성하는 데 사용할 데이터입니다. 데이터는 여러 형식으로 제공될 수 있으며, 일반적으로 딕셔너리, 리스트, 배열 등의 형태로 입력됩니다.
  2. index: 데이터프레임의 인덱스를 지정합니다. 인덱스는 행을 고유하게 식별하는 데 사용되는 값으로, 기본적으로 정수형 인덱스가 할당됩니다. 특정 열을 인덱스로 지정하거나, 사용자가 임의의 인덱스를 지정할 수도 있습니다. ex) index를 활용하여 데이터 전처리
  3. columns: 데이터프레임의 열 이름을 지정합니다. 열 이름은 각 열을 고유하게 식별하는 데 사용되며, 기본적으로 정수형 열 이름이 할당됩니다. 사용자가 원하는 열 이름을 지정할 수도 있습니다. ex) df.columns 컬럼별로 데이터 슬라이싱 하는 능력
  4. dtype: 데이터프레임의 각 열의 데이터 타입을 지정합니다. 기본적으로 판다스는 각 열의 데이터 타입을 추론하지만, 경우에 따라 사용자가 직접 데이터 타입을 지정할 수 있습니다. ex) df.info() 를 확인후 각 컬럼들의 object → int , float 형식으로 변환 astype 활용
  5. copy: 데이터프레임을 복사할지 여부를 지정합니다. 기본값은 False이며, True로 설정하면 새로운 복사본을 생성합니다.

작업 실행할때 알아두면 좋은 파라미터

axis = 1 열단위 작업

axis = 0 행단위 작업

inplace = True 원본데이터프레임 바로저장

profile
AI engineer

0개의 댓글