본문 바로가기
GD's IT Lectures : 기초부터 시리즈/파이썬(Python) 기초부터 ~

[파이썬(PYTHON) : 중급] 데이터 처리 및 분석

by GDNGY 2023. 5. 11.

6. 데이터 처리 및 분석

데이터 처리 및 분석에서는 JSON과 CSV 파일 처리 방법을 배우고, pandas와 NumPy 라이브러리를 활용하여 데이터를 분석하는 방법을 익힙니다. 이를 통해 실제 데이터를 다루는 프로젝트에 적용할 수 있는 기술을 습득하게 됩니다.


6.1. JSON 파일 처리

JSON(JavaScript Object Notation)은 데이터를 교환하는 데 사용되는 경량의 데이터 포맷입니다. 이 포맷은 사람이 읽고 쓰기 쉬우며, 기계가 파싱하고 생성하기에도 적합합니다.

 

6.1.1. JSON 파일 읽기와 쓰기

파이썬에서는 'json' 이라는 내장 모듈을 사용하여 JSON 파일을 읽고 쓸 수 있습니다.

 

6.1.1.1. 파이썬의 json 모듈 이해하기

파이썬의 'json' 모듈은 JSON 데이터를 읽고 쓰는 기능을 제공합니다. 이 모듈은 다음과 같은 함수들을 제공합니다.

  • json.dump
  • json.load
  • json.dumps
  • json.loads

 

6.1.1.2. JSON 파일 읽기

파이썬에서 JSON 파일을 읽으려면 'json.load()' 함수를 사용합니다. 이 함수는 JSON 형식의 데이터를 파이썬 데이터 타입으로 변환합니다.

import json

with open('data.json', 'r') as f:
    data = json.load(f)

 

6.1.1.3. JSON 파일 쓰기

파이썬에서 JSON 파일을 쓰려면 'json.dump()' 함수를 사용합니다. 이 함수는 파이썬 데이터 타입을 JSON 형식의 데이터로 변환합니다.

import json

data = {"name": "John", "age": 30, "city": "New York"}
with open('data.json', 'w') as f:
    json.dump(data, f)


6.1.2. JSON 파일 포맷 이해하기

JSON은 키-값 쌍으로 이루어진 데이터 객체를 포함하는 파일 포맷입니다. JSON 파일은 간단한 데이터 구조를 표현할 수 있으며, 중첩된 JSON 객체를 포함할 수 있습니다.

 

6.1.2.1. JSON 구조 이해하기

JSON 데이터는 다음과 같은 형태를 가질 수 있습니다:

  • 객체: {"key": "value"}
  • 배열: ["value1", "value2", ...]
  • 값: string, number, object, array, true, false, null

6.1.2.2. JSON과 파이썬 데이터 타입 비교하기

JSON 데이터 타입과 파이썬 데이터 타입은 대체로 잘 매칭됩니다. 예를 들어, JSON 객체는 파이썬의 딕셔너리에, JSON 배열은 파이썬의 리스트에 해당합니다. 그러나 JSON의 'null' 값은 파이썬의 'None'에 해당합니다.

 

6.1.3. JSON 데이터를 파이썬 데이터 타입으로 변환하기

'json' 모듈의 'load()' 함수를 사용하여 JSON 데이터를 파이썬 데이터 타입으로 변환할 수 있습니다.

 

6.1.3.1. JSON 데이터 로드하기

'json.load()' 함수를 사용하여 JSON 파일에서 데이터를 읽어 파이썬 데이터 타입으로 변환할 수 있습니다.

import json

with open('data.json', 'r') as f:
    data = json.load(f)
print(data)

 

6.1.3.2. 로드된 데이터를 파이썬 데이터 타입으로 사용하기

로드된 데이터는 파이썬의 딕셔너리, 리스트, 숫자, 문자열, 불린, None 타입으로 변환되어 사용할 수 있습니다.

import json

with open('data.json', 'r') as f:
    data = json.load(f)

print(data["name"])  # Access values in the dict
print(data["hobbies"][0])  # Access elements in the list

 

6.1.4. 파이썬 데이터 타입을 JSON 데이터로 변환하기

'json' 모듈의 'dump()' 함수를 사용하여 파이썬 데이터 타입을 JSON 데이터로 변환할 수 있습니다.

 

6.1.4.1. 파이썬 데이터 타입을 JSON 형태로 덤프(dump)하기

'json.dump()' 함수를 사용하여 파이썬 데이터 타입을 JSON 파일에 쓸 수 있습니다.

import json

data = {
    "name": "John",
    "age": 30,
    "city": "New York",
    "hobbies": ["Reading", "Music"]
}

with open('data.json', 'w') as f:
    json.dump(data, f)

 

6.1.4.2. JSON 데이터로 변환된 데이터 활용하기

JSON 데이터로 변환된 데이터는 웹 API로 전송하거나 파일 시스템에 저장하는 등 다양한 용도로 사용할 수 있습니다.

 

6.1.5. 복잡한 JSON 데이터 처리하기

중첩된 JSON 데이터 또는 JSON 배열 등의 복잡한 JSON 데이터도 파이썬 'json' 모듈을 사용하여 처리할 수 있습니다.

 

6.1.5.1. 중첩된 JSON 데이터 처리하기

중첩된 JSON 데이터는 파이썬의 중첩된 딕셔너리와 리스트로 변환됩니다. 이런 데이터를 처리하기 위해선 일반적으로 반복문 또는 재귀 함수를 사용합니다.

 

6.1.5.2. JSON 데이터의 배열 처리하기

JSON 배열은 파이썬 리스트로 변환됩니다. 따라서 리스트의 인덱싱, 슬라이싱, 반복문 등의 기능을 사용하여 JSON 배열의 데이터를 처리할 수 있습니다.

import json

with open('data.json', 'r') as f:
    data = json.load(f)

for hobby in data["hobbies"]:
    print(hobby)

 

6.2. CSV 파일 처리

CSV는 콤마로 구분된 값을 포함하는 텍스트 파일로, 표 형식의 데이터를 저장하는 데 널리 사용됩니다.

 

6.2.1. CSV 파일 읽기와 쓰기

파이썬의 내장 'csv' 모듈을 사용하여 CSV 파일을 읽고 쓸 수 있습니다.

 

6.2.1.1. 파이썬의 csv 모듈 이해하기

'csv' 모듈은 CSV 파일의 읽기와 쓰기를 위한 함수와 클래스를 제공합니다.

 

6.2.1.2. CSV 파일 읽기

'csv.reader()' 함수를 사용하여 CSV 파일을 읽을 수 있습니다.

import csv

with open('data.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

 

6.2.1.3. CSV 파일 쓰기

'csv.writer()' 함수를 사용하여 CSV 파일에 쓸 수 있습니다.

import csv

data = [["Name", "Age"], ["John", 30], ["Jane", 25]]

with open('data.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(data)

 

6.2.2. CSV 파일 형식 이해하기

CSV 파일은 테이블 데이터를 저장하는 데 사용되며, 각 행은 개별 레코드를 나타내고 콤마로 구분된 각 값은 해당 레코드의 필드를 나타냅니다.

 

6.2.2.1. CSV 데이터 구조 이해하기

CSV 데이터는 테이블의 행과 열로 구성되며, 첫 번째 행은 종종 헤더 행으로 사용되어 각 열의 이름을 제공합니다.

 

6.2.2.2. CSV와 파이썬 데이터 타입 비교하기

CSV 파일의 한 행은 파이썬의 리스트와 유사하며, 전체 CSV 파일은 리스트의 리스트로 간주할 수 있습니다. 각 값은 문자열로 처리됩니다.

 

6.2.3. CSV 파일과 데이터프레임 변환하기

pandas 라이브러리의 'read_csv()' 함수를 사용하여 CSV 파일을 데이터프레임으로 읽을 수 있습니다.

 

6.2.3.1. CSV 파일을 pandas 데이터프레임으로 읽기

'pandas.read_csv()' 함수를 사용하여 CSV 파일을 데이터프레임으로 읽을 수 있습니다.

import pandas as pd

df = pd.read_csv('data.csv')
print(df)

 

6.2.3.2. 데이터프레임을 CSV 파일로 저장하기

데이터프레임의 'to_csv()' 메서드를 사용하여 데이터프레임을 CSV 파일로 저장할 수 있습니다.

import pandas as pd

df = pd.DataFrame({
    'Name': ['John', 'Jane'],
    'Age': [30, 25]
})

df.to_csv('data.csv', index=False)

 

6.2.4. CSV 파일 데이터 필터링과 정렬하기

pandas 라이브러리를 사용하면 CSV 파일에서 읽은 데이터를 쉽게 필터링하고 정렬할 수 있습니다.

 

6.2.4.1. pandas를 활용한 데이터 필터링

데이터프레임의 불리언 인덱싱을 사용하여 특정 조건에 맞는 행을 필터링할 수 있습니다.

import pandas as pd

df = pd.read_csv('data.csv')

# 30세 이상의 행만 필터링
filtered_df = df[df['Age'] >= 30]
print(filtered_df)

 

6.2.4.2. pandas를 활용한 데이터 정렬

데이터프레임의 'sort_values()' 메서드를 사용하여 데이터를 특정 열에 따라 정렬할 수 있습니다.

import pandas as pd

df = pd.read_csv('data.csv')

# 'Age' 열에 따라 오름차순으로 정렬
sorted_df = df.sort_values('Age')
print(sorted_df)

 

6.2.5. CSV 파일 데이터 그룹화와 집계하기

pandas를 사용하면 데이터를 특정 열에 따라 그룹화하고, 그룹화된 데이터에 대해 집계 함수를 적용할 수 있습니다.

 

6.2.5.1. 데이터프레임 그룹화

데이터프레임의 'groupby()' 메서드를 사용하여 데이터를 특정 열에 따라 그룹화할 수 있습니다.

import pandas as pd

df = pd.read_csv('data.csv')

# 'Department' 열에 따라 그룹화
grouped = df.groupby('Department')

 

6.2.5.2. 그룹화된 데이터 집계하기

그룹화된 데이터프레임에 'mean()', 'sum()', 'count()' 등의 메서드를 적용하여 그룹별로 데이터를 집계할 수 있습니다.

import pandas as pd

df = pd.read_csv('data.csv')

# 'Department' 열에 따라 그룹화하고, 각 그룹의 'Salary' 평균 계산
grouped = df.groupby('Department')['Salary'].mean()
print(grouped)

 

위의 모든 예제들은 기본적인 CSV 파일 처리 방법을 설명하고 있습니다. 실제 프로젝트에서는 데이터의 크기, 복잡성, 그리고 요구 사항에 따라 다양한 방법으로 데이터를 처리하게 될 것입니다. 이에 대한 깊은 이해를 위해 여러 CSV 파일을 가지고 직접 연습해 보는 것을 권장드립니다.

 

6.3.1. pandas 데이터프레임과 시리즈 이해하기

pandas는 데이터프레임(DataFrame)과 시리즈(Series)라는 두 가지 핵심 객체를 제공합니다.

 

6.3.1.1. 데이터프레임 생성하기

데이터프레임은 표 형태의 데이터를 다루는데 유용합니다. 다음은 pandas를 이용해 데이터프레임을 생성하는 예제입니다.

import pandas as pd

data = {
    'Name': ['John', 'Anna', 'Peter', 'Linda'],
    'Age': [28, 24, 35, 32],
    'City': ['New York', 'Paris', 'Berlin', 'London']
}

df = pd.DataFrame(data)

print(df)

 

6.3.1.2. 시리즈 생성하기

시리즈는 1차원 배열과 유사합니다. 다음은 pandas를 이용해 시리즈를 생성하는 예제입니다.

import pandas as pd

s = pd.Series([3, -5, 7, 4], index=['a', 'b', 'c', 'd'])

print(s)

 

6.3.1.3. 데이터프레임과 시리즈의 차이점 이해하기

데이터프레임은 2차원 테이블 형태의 데이터를 나타내며, 각 열은 서로 다른 타입을 가질 수 있습니다. 반면, 시리즈는 1차원 배열과 같으며 모든 데이터는 동일한 타입을 가집니다. 

 

6.3.2. 데이터프레임에서 데이터 선택 및 조작하기

데이터프레임에서는 다양한 방법으로 데이터를 선택하고 조작할 수 있습니다.

 

6.3.2.1. 데이터프레임에서 열 선택하기

열 이름을 사용하여 데이터프레임에서 열을 선택할 수 있습니다.

import pandas as pd

data = {
    'Name': ['John', 'Anna', 'Peter', 'Linda'],
    'Age': [28, 24, 35, 32],
    'City': ['New York', 'Paris', 'Berlin', 'London']
}

df = pd.DataFrame(data)

# 'Name' 열 선택
print(df['Name'])

 

6.3.2.2. 데이터프레임에서 행 선택하기

행 인덱스를 사용하여 데이터프레임에서 행을 선택할 수 있습니다.

import pandas as pd

data = {
    'Name': ['John', 'Anna', 'Peter', 'Linda'],
    'Age': [28, 24, 35, 32],
    'City': ['New York', 'Paris', 'Berlin', 'London']
}

df = pd.DataFrame(data)

# 첫 번째 행 선택
print(df.loc[0])

 

6.3.2.3. 데이터프레임에서 특정 데이터 선택하기

데이터프레임에서 특정 조건을 만족하는 데이터를 선택할 수 있습니다.

import pandas as pd

data = {
'Name': ['John', 'Anna', 'Peter', 'Linda'],
'Age': [28, 24, 35, 32],
'City': ['New York', 'Paris', 'Berlin', 'London']
}

df = pd.DataFrame(data)

'Age'가 30보다 큰 데이터 선택
print(df[df['Age'] > 30])

 

6.3.3. 결측치 처리하기

데이터 처리 과정에서 결측치(데이터가 없는 경우) 처리는 중요한 단계입니다.

 

6.3.3.1. 결측치 확인하기

pandas의 isnull() 메서드를 사용하여 데이터프레임에서 결측치를 확인할 수 있습니다.

import pandas as pd
import numpy as np

data = {
    'Name': ['John', 'Anna', np.nan, 'Linda'],
    'Age': [28, 24, np.nan, 32],
    'City': ['New York', 'Paris', 'Berlin', 'London']
}

df = pd.DataFrame(data)

# 결측치 확인
print(df.isnull())

 

6.3.3.2. 결측치 삭제하기

dropna() 메서드를 사용하여 결측치를 가진 행을 삭제할 수 있습니다.

import pandas as pd
import numpy as np

data = {
    'Name': ['John', 'Anna', np.nan, 'Linda'],
    'Age': [28, 24, np.nan, 32],
    'City': ['New York', 'Paris', 'Berlin', 'London']
}

df = pd.DataFrame(data)

# 결측치 삭제
df = df.dropna()

print(df)

 

6.3.3.3. 결측치 대체하기

fillna() 메서드를 사용하여 결측치를 특정 값으로 대체할 수 있습니다.

import pandas as pd
import numpy as np

data = {
    'Name': ['John', 'Anna', np.nan, 'Linda'],
    'Age': [28, 24, np.nan, 32],
    'City': ['New York', 'Paris', 'Berlin', 'London']
}

df = pd.DataFrame(data)

# 결측치 대체
df = df.fillna('Unknown')

print(df)

 

6.3.4. 데이터프레임 병합, 결합, reshaping하기

데이터프레임을 병합하거나 결합하는 방법, 그리고 데이터프레임의 형태를 변경하는 방법에 대해 알아봅시다.

 

6.3.4.1. 데이터프레임 병합하기

merge() 메서드를 사용하여 두 개의 데이터프레임을 병합할 수 있습니다.

import pandas as pd

data1 = {
    'Key': ['A', 'B', 'C', 'D'],
    'Value': [1, 2, 3, 4]
}

data2 = {
    'Key': ['B', 'D', 'E', 'F'],
    'Value': [5, 6, 7, 8]
}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

#데이터프레임 병합
merged_df = pd.merge(df1, df2, on='Key')

print(merged_df)

 

6.3.4.2. 데이터프레임 결합하기

concat() 메서드를 사용하여 두 개의 데이터프레임을 결합할 수 있습니다.

import pandas as pd

data1 = {
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3']
}

data2 = {
    'A': ['A4', 'A5', 'A6', 'A7'],
    'B': ['B4', 'B5', 'B6', 'B7']
}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# 데이터프레임 결합
combined_df = pd.concat([df1, df2])

print(combined_df)

 

6.3.4.3. 데이터프레임 reshaping하기

pandas의 melt() 함수를 사용하여 데이터프레임의 형태를 변경할 수 있습니다.

import pandas as pd

data = {
    'first': ['John', 'Anna'],
    'last': ['Doe', 'Smith'],
    'height': [5.5, 6.0],
    'weight': [130, 150]
}

df = pd.DataFrame(data)

# 데이터프레임 reshaping
reshaped_df = pd.melt(df, id_vars=['first', 'last'])

print(reshaped_df)

 

6.3.5. pandas로 데이터 분석하기

pandas는 데이터 분석에도 많은 도구를 제공합니다.

 

6.3.5.1. 데이터프레임에서 통계 계산하기

데이터프레임에서는 mean(), median(), min(), max() 등의 메서드를 사용하여 통계를 계산할 수 있습니다.

import pandas as pd

data = {
    'A': [1, 2, 3, 4, 5],
    'B': [6, 7, 8, 9, 10]
}

df = pd.DataFrame(data)

# 평균 계산
print(df.mean())

# 중앙값 계산
print(df.median())

 

6.3.5.2. pandas로 시계열 데이터 분석하기

pandas는 시계열 데이터 분석을 위한 resample() 메서드와 같은 도구를 제공합니다.

import pandas as pd
import numpy as np

# 날짜 범위 생성
dates = pd.date_range('20230101', periods=6)

# 랜덤한 값으로 이루어진 데이터프레임 생성
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))

# 'A' 열의 값들을 3일 간격으로 재샘플링하고 평균 계산
resampled = df['A'].resample('3D').mean()

print(resampled)

 

이러한 방법들을 활용하면 pandas로 다양한 데이터 처리와 분석 작업을 수행할 수 있습니다. pandas는 Python에서 가장 널리 사용되는 데이터 처리 및 분석 라이브러리 중 하나이며, 그 유연성과 편리성 때문에 데이터 과학자들에게 인기가 많습니다. 

 

이 모든 내용을 통해 Python으로 데이터를 처리하고 분석하는 방법에 대해 간략하게 알아보았습니다. 실제로는 이보다 더 많은 기능과 도구를 제공하므로, 깊이 있는 학습을 위해 pandas 공식 문서를 참조하는 것이 좋습니다. 이 모든 작업은 데이터 과학, 머신러닝, 인공지능 등의 분야에서 중요한 역할을 합니다. 

 

 

6.4. NumPy 라이브러리 활용

NumPy는 'Numerical Python'의 약자로, Python에서 수치 계산을 빠르고 효과적으로 할 수 있도록 도와주는 핵심 라이브러리입니다. NumPy는 고성능의 다차원 배열 객체와 이를 다룰 도구를 제공합니다.

 

6.4.1. NumPy 배열 이해하기

NumPy의 핵심 기능은 n차원 배열인 ndarray 객체입니다. 이러한 배열을 활용하면, Python의 기본 리스트에 비해 훨씬 빠르고 메모리를 효율적으로 관리할 수 있습니다.

 

6.4.1.1. NumPy 배열 생성하기

NumPy 배열은 numpy.array 함수를 사용해 생성할 수 있습니다.

import numpy as np

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

# 2차원 배열 생성
arr2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr2)

 

6.4.1.2. NumPy 배열의 속성 이해하기

NumPy 배열은 다양한 속성을 가지고 있습니다. 배열의 차원 수(ndim), 형태(shape), 크기(size), 데이터 타입(dtype), 메모리 크기(itemsize) 등을 알 수 있습니다.

import numpy as np

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

print("차원 수: ", arr.ndim)
print("형태: ", arr.shape)
print("크기: ", arr.size)
print("데이터 타입: ", arr.dtype)
print("메모리 크기: ", arr.itemsize)

 

6.4.2. NumPy 배열 생성 및 조작하기

NumPy 배열은 다양한 방법으로 생성하고 조작할 수 있습니다.

 

6.4.2.1. NumPy 배열에서 데이터 선택하기

NumPy 배열에서 데이터를 선택하는 방법은 기본적으로 Python 리스트의 인덱싱과 비슷합니다.

import numpy as np

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

# 첫 번째 요소 선택
print(arr[0])

# 마지막 요소 선택
print(arr[-1])

# 2번째부터 4번째 요소 선택
print(arr[1:4])

 

6.4.2.2. NumPy 배열의 크기 변경하기

reshape 함수를 사용해 NumPy 배열의 크기를 변경할 수 있습니다.

import numpy as np

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

# 1차원 배열을 3x3 2차원 배열로 변경
arr_reshaped = arr.reshape(3, 3)
print(arr_reshaped)

 

6.4.3. NumPy로 수학적 연산 수행하기

NumPy는 다양한 수학적 연산을 지원합니다.

 

 

6.4.3.1. NumPy로 기본적인 수학 연산 수행하기

기본적인 수학 연산자와 함수를 사용해 NumPy 배열에 대한 연산을 수행할 수 있습니다.

import numpy as np

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

# 배열에 상수 더하기
print(arr + 2)

# 배열끼리 더하기
print(arr + arr)

# 배열의 모든 요소를 제곱하기
print(np.square(arr))

 

6.4.3.2. NumPy로 복잡한 수학 함수 계산하기

NumPy는 복잡한 수학 함수를 계산하는데도 사용됩니다. 예를 들어, np.exp, np.sin, np.cos 등의 함수를 제공합니다.

import numpy as np

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

# 지수 함수
print(np.exp(arr))

# 사인 함수
print(np.sin(arr))

 

6.4.4. NumPy 배열의 인덱싱과 슬라이싱

NumPy 배열은 다차원 배열을 지원하므로, 이에 대한 인덱싱과 슬라이싱도 더욱 복잡합니다.

 

6.4.4.1. NumPy 배열 인덱싱 이해하기

NumPy 배열에서 특정 요소를 선택하려면 인덱스를 사용합니다.

import numpy as np

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

# (0, 0) 위치의 요소 선택
print(arr[0, 0])

# (2, 2) 위치의 요소 선택
print(arr[2, 2])

 

6.4.4.2. NumPy 배열 슬라이싱 이해하기

NumPy 배열에서 여러 요소를 선택하려면 슬라이싱을 사용합니다.

import numpy as np

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

# 첫 번째 행 선택
print(arr[0, :])

# 마지막 열 선택
print(arr[:, -1])

# 중간 행과 열 선택
print(arr[1:3, 1:3])

 

6.4.5. NumPy로 통계, 선형대수 계산하기

NumPy는 통계와 선형대수 계산을 지원합니다.

 

6.4.5.1. NumPy로 기본 통계 계산하기 (평균, 중앙값, 표준편차 등)

NumPy는 기본적인 통계 계산을 지원합니다. 평균, 중앙값, 표준편차 등을 계산할 수 있습니다.

import numpy as np

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

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

# 중앙값 계산
print(np.median(arr))

# 표준편차 계산
print(np.std(arr))

 

6.4.5.2. NumPy로 상관계수 및 공분산 계산하기

NumPy는 상관계수와 공분산을 계산하는 함수를 제공합니다.

import numpy as np

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

# 상관계수 계산
print(np.corrcoef(arr1, arr2))

# 공분산 계산
print(np.cov(arr1, arr2))

 

6.4.5.3. NumPy로 선형대수 연산 수행하기 (벡터 내적, 행렬 곱셈 등)

NumPy는 선형대수 연산을 지원합니다. 벡터 내적, 행렬 곱셈 등을 계산할 수 있습니다.

import numpy as np

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

# 벡터 내적 계산
print(np.dot(arr1, arr2))

# 행렬 곱셈 계산
print(np.matmul(matrix1, matrix2))

 

6.4.5.4. NumPy로 고유값 및 고유벡터 계산하기

NumPy의 linalg.eig 함수를 사용해 행렬의 고유값과 고유벡터를 계산할 수 있습니다.

import numpy as np

matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 고유값과 고유벡터 계산
eigenvalues, eigenvectors = np.linalg.eig(matrix)

print("고유값: ", eigenvalues)
print("고유벡터: ", eigenvectors)

 

6.4.5.5. NumPy로 행렬의 역행렬 및 행렬식 계산하기

NumPy의 linalg.inv 함수를 사용해 행렬의 역행렬을, linalg.det 함수를 사용해 행렬식을 계산할 수 있습니다.

import numpy as np

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

# 역행렬 계산
inverse_matrix = np.linalg.inv(matrix)
print("역행렬: ", inverse_matrix)

# 행렬식 계산
matrix_det = np.linalg.det(matrix)
print("행렬식: ", matrix_det)

 

이로써, 기본적인 NumPy의 사용법을 살펴보았습니다. NumPy는 Python에서 과학적 계산을 위한 핵심 라이브러리로, 배열을 효과적으로 다루고 다양한 수학적 연산을 수행할 수 있습니다. NumPy를 잘 이해하고 활용하면, Python으로 데이터 분석과 머신 러닝 등의 작업을 효율적으로 수행할 수 있습니다.  

 

물론, NumPy는 이보다 훨씬 더 많은 기능을 제공하며, 위에서 다룬 내용은 그중 일부에 불과합니다. 이를테면, 브로드캐스팅, 집계 함수, 마스킹 연산, 정렬 등이 있습니다. 더 깊은 학습을 원하시면 NumPy의 공식 문서를 참고하시는 것을 추천드립니다. 

반응형

댓글