[python] Numpy와 Pandas를 활용한 데이터 생성 및 분석

혜진·2024년 8월 15일

Python

목록 보기
14/16
post-thumbnail

Numpy와 Pandas를 활용한 데이터 생성 및 분석

1. Numpy를 활용한 배열 연산 및 통계 함수

📑 배열의 기본 연산 및 통계 함수

import numpy as np

a = np.random.random((3, 4)) * 10  # 3행 4열의 난수 배열 생성
print("배열의 합:", a.sum())  # 배열의 모든 요소들의 합
print("배열의 최소값:", a.min())  # 배열의 최소값
print("배열의 최대값:", a.max())  # 배열의 최대값
print("배열의 평균값:", a.mean())  # 배열의 평균값
print("배열의 표준편차:", a.std())  # 배열의 표준편차

📑 배열 수정 및 특정 요소 접근

배열의 특정 값을 수정하거나, 슬라이싱을 통해 배열의 일부분만 접근할 수 있다.

c = np.arange(10, 50)  # 10부터 49까지의 배열 생성
c[4] = 100  # 4번 인덱스의 값을 100으로 수정
print(c[:5])  # 0~4번 인덱스의 값 출력

d = np.arange(12).reshape(3, 4)  # 3행 4열의 배열 생성
print(d[1, 1])  # 1행 1열의 값 출력
print(d[0:2, 0:2])  # 슬라이싱을 통해 부분 배열 접근

📑 배열의 패딩 및 배열 변형

배열의 가장자리를 특정 값으로 패딩하거나, 배열의 모양을 변형할 수 있다.

e = np.ones((10, 10))  # 1로 채워진 10x10 배열 생성
e[1:-1, 1:-1] = 0  # 내부를 0으로 채움

f = np.zeros((8, 8))
f = np.pad(f, pad_width=1, constant_values=1)  # 패딩을 통해 가장자리를 1로 채움

2. Numpy를 활용한 난수 생성 및 확률 계산

📑 난수 생성과 배열 병합

Numpy를 활용하여 정수형 난수를 생성하고, 여러 배열을 병합할 수 있다.

i = np.random.randint(10, size=(2, 2))  # 0~9 사이의 정수형 난수 배열 생성
j = np.random.randint(10, size=(2, 2))

vstacked = np.vstack((i, j))  # 행 기준으로 배열 병합
hstacked = np.hstack((i, j))  # 열 기준으로 배열 병합

📑 정규분포와 히스토그램

정규분포를 따르는 난수를 생성하고, 이를 히스토그램으로 시각화할 수 있다.

import matplotlib.pyplot as plt

o = np.random.normal(0, 1, 10000)  # 평균 0, 표준편차 1의 정규분포 난수 생성
plt.hist(o, bins=100)  # 히스토그램으로 정규분포 확인
plt.show()

📑 확률 기반 선택 및 통계 분석

Numpy의 choice 함수를 사용하여 확률 기반으로 값을 선택하고, Pandas의 Series를 사용하여 데이터를 분석할 수 있다.

fruits = ["apple", "banana", "cherries", "durian", "grapes"]
u = np.random.choice(fruits, 100, p=[0.1, 0.2, 0.3, 0.2, 0.2])  # 가중치에 따라 과일 선택

import pandas as pd
sr = pd.Series(u)  # Series 객체 생성
print(sr.value_counts())  # 각 과일이 선택된 횟수 출력

0개의 댓글