본문 바로가기
ROKEY

[20250205] 파이썬 프로그래밍 - 딥러닝 파이썬 패키지 1

by kode-daks 2025. 2. 6.

수업 목표

- pandas 모듈의 기본 함수를 사용할 수 있다.

- numpy 모듈의 기본 함수를 사용할 수 있다.

- matplotlib 모듈의 기본 함수를 사용할 수 있다.

 

 

1. pandas

- 데이터 분석과 조작을 위한 python 라이브러리

    - csv 파일 등의 데이터를 읽고 원하는 데이터 형식으로 변환

 

자료 구조

    - Series : 1차원 배열, 라벨이 있는 데이터

    - DataFrame : 2차원 테이블 구조, 라벨이 있는 행과 열

 

Series 생성

- pandas.Series(리스트 or 딕셔너리)

- 리스트를 사용하면 인덱스가 0부터, 딕셔너리를 사용하면 인덱스가 키로 구성

 

import pandas as pd

lst = [10,20,30]
dct = {'a':10,'b':20,'c':30}

sl = pd.Series(lst)
sd = pd.Series(dct)

 

DataFrame 생성

- pandas.DataFrame(중첩리스트, columns=[컬럼이름])

import pandas pd

lst = [
        [1, "Alice", 30],
        [2, "Bob", 35],
        [3, "Charlie", 25]
	]

dct = {
        "ID" : [1, 2, 3],
        "Name" : ["Alice", "Bob", "Charlie"],
        "Age" : [30, 35, 25]
    }
    
df1 = pd.DataFrame(lst, columns=["ID", "Name", "Age"])
df2 = pd.DataFrame(dct)

 

데이터 탐색

- csv : df_csv = pd.read_csv('경로')

- excel : openpyxl pip 설치 이후, df_xl  = pd.read_excel('경로')

- 상위 행 확인 : df_csv.head()

- 하위 행 확인 : df_csv.tail()

- 데이터 요약 정보 : df_csv.info()

- 기술 통계 : df_csv.describe()

- 샘플링 : df_csv.sample()

 

데이터 조작

- 열 선택 : df['컬럼']

- 조건 필터링 : df[조건]     e.g. df[df['age']>30]

- 값으로 정렬 : df.sort_values(by="컬럼")

- 행 추가 : df.loc[len(df)] = 데이터

- 행 삭제 : df.drop(인덱스)

- 데이터 연결

    - 여러 데이터프레임 합칠 수 있음 : pd.concat([df1, df2]) * ignore_index=True로 인덱스 초기화

    - 두 데이터프레임만 합칠 수 있음 : pd.merge(df1, df2) *특정 공통 열을 기준으로 합칠 수 있음

- 결측치 확인 : df.isnull().sum() --> 컬럼 별 결측치 수 확인 가능

- 결측치 채우기 : df['컬럼'].mean()으로 평균을 구해, df['컬럼'] = df['컬럼'].fillna(평균)

- 중복 데이터 확인 : df.duplicated() 

- 중복 제거 : df.drop_duplicates()

 

2. numpy

- 다차원 배열 및 행렬 연산 지원 라이브러리

- 과학 계산을 위한 다양한 함수 제공

 

numpy 다루기

- 배열 생성 : arr = np.array(리스트)

- 배열 모양 확인 : arr.shape

- 데이터 타입 : arr.dtype

- 0으로 초기화된 배열 : np.zeros((m, n)) *m:행, n:열

- 1로 초기화된 배열 : np.ones((m,n))

- 특정 값으로 채운 배열 : np.full((m,n), 특정값)

- 단위 행렬 : np.eye(크기)

- 난수 배열 : np.random.rand(m,n)

- 정수 난수 배열 : np.random.randint(범위시작, 범위끝, (m,n))

 

배열 연산

- 행렬과 스칼라 연산 -> 행렬에 전체 적용

- 행렬 간 연산

arr1 = np.array([1, 2, 3])
arr2 = np.array([[1], [2], [3]])
result = arr1 + arr2
print(result)


실행 결과
» [[2 3 4]
» [3 4 5]
» [4 5 6]]

- 행렬 곱 : m*n  * n*m : np.dot(arr1, arr2)

- 합계 : arr.sum()

- 평균 : arr.mean()

- 최대 : arr.max()

- 최소 : arr.min()

 

배열 인덱싱

- 1차원 배열 : arr[i]

- 다차원 배열 : arr[i,j]

- 슬라이싱 : arr[행, :] *vice versa

- 조건부 연산 : arr[조건]

 

numpy 입출력

- 배열 저장 : np.save(경로, arr) *.npy로 저장

- 배열 로드 : np.load(경로)

 

numpy, pandas 통합 사용

pd.DataFrame(numpyarray, columns=[컬럼]) 

 

3. matplotlib

- import matplotlib.pyplot as plt로 사용

  * seaborn은 통계적 데이터 시각화에 적합하며, matplotlib은 기본적이고 유연한 시각화 도구

 

기본 플롯

x = [1, 2, 3, 4]
y = [10, 20, 25, 30]
plt.plot(x, y)
plt.title("Line Plot")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.show()

 

막대 그래프

categories = ["A", "B", "C", "D"]
values = [3, 7, 8, 5]
plt.bar(categories, values)
plt.title("Bar Chart")
plt.show()

 

히스토그램

data = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
plt.hist(data, bins=4, color="skyblue", edgecolor="black")
plt.title("Histogram")
plt.show()

 

산점도

x = [5, 7, 8, 7, 2, 17, 2, 9, 4, 11]
y = [99, 86, 87, 88, 100, 86, 103, 87, 94, 78]
plt.scatter(x, y, color="green")
plt.title("Scatter Plot")
plt.show()

 

원 그래프

sizes = [15, 30, 45, 10]
labels = ["Group A", "Group B", "Group C", "Group D"]
plt.pie(sizes, labels=labels, autopct="%1.1f%%", startangle=90)
plt.title("Pie Chart")
plt.show()

 

박스 플롯

data = [7, 8, 5, 6, 8, 9, 6, 7, 5, 8]
plt.boxplot(data)
plt.title("Box Plot")
plt.show()

 

그래프 커스터마이징

- 색상, 선스타일, 마커 : plt.plot(x,y, color="색상", linestyle="스타일", marker="마커")

- 축 범위 : plt.xlim(시작범위, 끝범위); plt.ylim(시작범위, 끝범위);

- 축 눈금 설정 : plt.xticks(range(시작범위, 끝범위)); plt.yticks(range(시작범위, 끝범위)); 

- 범례 추가 : plt.legend(loc="위치")

- 그래프 저장 : plt.savefig("위치") *plt.show() 전에 사용

 

Subplot

fig, axs = plt.subplots(2, 2)
axs[0, 0].plot(x, y)
axs[0, 1].bar(categories, values)
axs[1, 0].scatter(x, y)
axs[1, 1].hist(data)
plt.tight_layout()
plt.show()