numpy, matplotlib, pandas에 아직 적응하지도 못했는데 또 새로운 라이브러리를 배웠다. seaborn은 matplotlib과 비슷한 것 같은데, 조금 더 예쁜 그래프를 뽑아낼 수 있는 툴인 것 같다. 아직 정확한 차이점은 모르겠다. 그나저나 4개 툴을 동시에 하려니 머리가 복잡하다. 아직 파이썬 명령어도 익숙하지 않은데 라이브러리 명령어까지 하려니 강의시간에 이해하지 못하고 넘어가는 부분이 많다. pandas는 엑셀 피벗테이블과 비슷한 것 같은데, 명령어 문법을 모르겠어서 진행 과정을 이해할 수가 없다. 이 또한 미래의 내가 해결해 주리라 믿는다. 부탁한다 미래의 나!
수업 시간에 강사님이 내준 문제를 단 한 개도 풀지 못했다. 다른 학생들은 어쩜 알려주는 대로 척척 잘할까 ㅠㅠ 후,, 이번 주는 잠을 포기한다.
학습시간 09:00~01:00(당일16H/누적70H)
!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
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))
# index_col='name' 이 부분은 필요 시에만!
data = pd.read_csv('tottenham_2021.csv', index_col='name')
# 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값 전부 합산
슬프게도 무슨 소리인지 아무것도 모르겠음 진짜로 정말로 리얼로
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())
너는 내가 이름만 기억해 두마. 나중에 보자 ㅡㅡ!!