[250318화70H] numpy, matplotlib, pandas, seaborn 심화학습

윤승호·2025년 3월 18일

numpy, matplotlib, pandas에 아직 적응하지도 못했는데 또 새로운 라이브러리를 배웠다. seaborn은 matplotlib과 비슷한 것 같은데, 조금 더 예쁜 그래프를 뽑아낼 수 있는 툴인 것 같다. 아직 정확한 차이점은 모르겠다. 그나저나 4개 툴을 동시에 하려니 머리가 복잡하다. 아직 파이썬 명령어도 익숙하지 않은데 라이브러리 명령어까지 하려니 강의시간에 이해하지 못하고 넘어가는 부분이 많다. pandas는 엑셀 피벗테이블과 비슷한 것 같은데, 명령어 문법을 모르겠어서 진행 과정을 이해할 수가 없다. 이 또한 미래의 내가 해결해 주리라 믿는다. 부탁한다 미래의 나!

수업 시간에 강사님이 내준 문제를 단 한 개도 풀지 못했다. 다른 학생들은 어쩜 알려주는 대로 척척 잘할까 ㅠㅠ 후,, 이번 주는 잠을 포기한다.

학습시간 09:00~01:00(당일16H/누적70H)

학습내용

라이브러리

1. 기본셋팅

  • 보통 아래와 같이 싹 import 받고 시작하는 것이 편하다.
!pip install pandas
!pip install numpy
!pip install matplotlib.pyplot
!pip install seaborn
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

2. numpy

  • 생성 관련
np.ones((5, 5)) # 값이 1인 5 * 5 배열 생성
np.zeros((5, 5)) # 값이 0인 5 * 5 배열 생성
np.full([5, 5], 10) # 5 * 5 배열 생성(값 10 입력)
np.linspace(1, 25, 25) # 1~25를 25등분한 배열 생성
np.random.random(20) # 0<1, 값20개, 랜덤배열 생성
np.random.randint(1, 26, (5, 5)) # 1<26, 5 * 5 랜덤배열 생성
np.diag([1, 2, 3, 4, 5]) # 5 * 5 배열 생성 후 사선으로 숫자 입력
  • 어레이 관련
arr1.shape # arr1 행렬 모양 확인
arr1.sort() # arr1 정렬
np.sqrt(arr1) # arr1 루트 적용
np.unique(arr1) # arr1 중복값 제거 후 정렬
np.matmul(arr1, arr2) # arr1 * arr2 (행렬 연산 전용)
np.dot(arr1, arr2) # arr1 * arr2 (벡터 연산 전용)
np.vstack([arr1, arr2]) # arr1위에 arr2 스택
np.hstack([arr1, arr2]) # arr1옆에 arr2 스택
np.intersect1d(arr1, arr2) # arr1, arr2 공통 원소 찾기 ★숫자 1임
np.setdiff1d(arr1, arr2) # arr1에만 있는 원소 찾기 ★숫자 1임
np.where(arr1 == arr2) # 중복값 위치 찾기
  • 어려운 것
# 정수 1<100 중 값이 10개인 배열 생성, 중복가능여부=Falsee
np.random.choice(range(1, 100), 10, replace=False) 

# 5 * 5 배열 생성(값 10 입력, 불린타입) 후 16 * 4 배열로 변경
np.full([8, 8], 10, dtype=bool).reshape(16, 4)

# 5<20 배열 생성(5열, 행 자동)
np.arange(5, 20).reshape(5, -1)

# 0~3 정수 랜덤생성, 256x256x3의 3차원 배열 생성
np.random.randint(0, 4, (256, 256, 3)). astype(np.ubyte)

# 에인섬 연산(주로 아인슈타인 표기법 사용)
# arr1의 행(i)과 arr2의 열(k)를 곱함
np.einsum('ij, jk -> ik', arr1, arr2)

# 뭔지 모르겠음 ㅠㅠ 
# np.meshgrid()는 좌표 격자를 만드는 함수라고 함 ㅠㅠ 살려줘
X, Y = np.meshgrid(np.linspace(-1, 1, 10), np.linspace(-1, 1, 10))

3. pandas

  • 데이터는 보통 아래와 같이 불러온다.
# index_col='name' 이 부분은 필요 시에만!
data = pd.read_csv('tottenham_2021.csv', index_col='name') 
  • 수치별 sort 하는 방법
# ascending=False 를 넣으면 큰 수치부터 내림차순으로 정렬
data.loc[data['goals'] >= 5].sort_values(by='goals', ascending=False)
  • 특정 열 생성 및 행값 적용하는 방법
# brand열 생성 후 unknown 값 일괄 입력
data['brand'] = "unknown"
  • 조건을 걸어 특정 열의 행값 변경하는 방법
# goals행값 5 이상일 때, brand열 모든 값 True 입력
data.loc[data['goals'] >= 5, 'brand'] = True
  • 특정 행&열 삭제
# name 행 삭제, 원본에서 삭제 
train.drop('name', axis=0, inplace=True)
# name 열 삭제, 원본에서 삭제 
train.drop('name', axis=1, inplace=True)
  • 명령어
data.describe() # 데이터 기본 통계 정보
data.groupby(['A'])['B'].sum() # 'A' 기준 그룹 후 'B' 열 값 sum
data.iloc[[1, 2],[1, 2]] # 1, 2번째 행 & 1, 2번째 열 선택
data.iloc[1: 4, 0: 3] # 1<3행 & 0<2열 선택
data.loc[['A1', 'A2'], ['B1', 'B2', 'B3']] # ??
data.loc['A1': 'A4', 'B1': 'B4'] # 'A1'~'A4' & 'B1'~'B4' 슬라이싱
data[['A', 'B']] # 다중 열 선택
data.isnull().sum() # 결측치 True값 전부 합산

4. matplotlib

실습: 타이타닉 생존자 데이터 전처리

슬프게도 무슨 소리인지 아무것도 모르겠음 진짜로 정말로 리얼로

import pandas as pd
import matplotlib.pyplot as plt

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

# 타이타닉 해결 순서
# 1. 생존자 확인
data.isnull().sum()
f, ax = plt.subplots(1, 1, figsize=(15, 8))
data['Survived'].value_counts().plot.pie()
ax.set_title('Survived')
plt.show()

# 2. 성별 생존자 확인
data[['Sex', 'Survived']].groupby('Sex').mean()
f, ax = plt.subplots(1, 1, figsize=(15, 8))
data.groupby(['Sex','Survived'])['Survived'].value_counts().plot.bar()
ax.set_title('Sex and Survived')
plt.show()

# 3. 클래스 생존자 확인
pd.crosstab(data.Pclass, data.Survived).style.background_gradient(cmap='summer_r')

# 4. 클래스 생존자 확인
f, ax = plt.subplots(1, 1, figsize=(8, 8))
data['Pclass'].value_counts().plot.bar()

# 5. 성별 생존자 확인
pd.crosstab([data.Sex, data.Survived], data.Pclass, margins=True)


# 1. 최고연령자의 나이
print(data['Age'].max())

# 2. 최소연령자의 나이  
print(data['Age'].min())

# 3. 타이타닉 승객들의 평균 나이
print(data['Age'].mean())

5. seaborn

너는 내가 이름만 기억해 두마. 나중에 보자 ㅡㅡ!!

profile
나는 AI 엔지니어가 된다.

0개의 댓글