Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

배우고 느낀 것들

패스트캠퍼스 4주차 요약 본문

파이썬/강의

패스트캠퍼스 4주차 요약

낑깡H 2022. 9. 15. 17:27

넘파이

 

 

arr.shape :  (5, ) != ( 5,1) 

np에서의 -1: 다른 칸 후 나머지에 맞춘 수 

v1 @ v2 : "dot prouct" : 각 자리별 원소의 곱의 합 

Briadcast와 Universal function
Broadcast : 크기가 다른 array를 연산시, 자동적으로 전파해줌 

 

 

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

arr2 = np.array([[-1, -1, -1],
                 [1, 1, 1]])
# 2개의 array를 더해보면?
arr1 + arr2

array([[ 0, 1, 2],

          [ 2, 3, 4]]) 가 출력됨 : 자동적으로 배분해서 계산

 


Universal Function:  numpy array의 모든 원소에 동일한 함수를 반복문으로 적용한 것과 같은 효과를 내는 기능

 

 

판다스

# 12x4 행렬에 1부터 36까지의 숫자를 원소를 가지고, index는 0부터 시작하고, coulmns은 순서대로 X1, X2, X3, X4로 하는 DataFrame 생성
import pandas as pd
import numpy as np

#df = pd.DataFrame(data=np.arange(1,49).reshape(8,6),
#              columns=["X1", "X2", "X3", "X4", "X5", "X6"],
#               index=["A", "B", "C", "D", "E", "F", "G", "H"])

df = pd.DataFrame(data=np.arange(1, 49).reshape(12, 4),
                  index=np.arange(12),
                  columns=["X1", "X2", "X3", "X4"])

 

 

column 방향으로 주로 분석함

numpy에서는 sort를 하면 그 값만 배열이 바뀜, 그러나 pd에서는 최소 단위가 series기 때문에 순서를 바꾸면 모두 바뀜
: 그 값의 배열만 바꾸고 싶으면 value를 np.array로 바꿔야 함 

Fancy indexing 


df index value를 기준으로 indexing 도 가능

df.index[0] : row의 0번째 값인 0 출력 
df.loc[0] : row 0 의 값인 
X1 1 
X2 2 
X3 3
X4 4 출력 
"Key- Value" 형태의 indexing 임 

2차원 indexing( row, column 둘 다 가져오기)도 가능

df.loc[4, "X2"] 
(4번째 row가 아니고 row4, column도 2가 아닌 X2를 입력)

slicing하는 경우 :
 번째를 기준이 아닌 index value 를 기준으로 하기 때문에 마지막 값도 포함임!! ( != illoc) 

띄엄띄엄인 경우 list로도 가능 

만약 row가 정수가 아닌 문자열이면..?
그래도 A:B? 안되는듯
column의 경우에도 범위 지정은 안되네 



mask를 활용한 indexing 

# dataframe에 조건식을 적용해주면 조건에 만족하는지 여부를 알려주는 "mask"가 생깁니다.
# Q. df에서 X3 column에 있는 원소들중에 3의 배수만 출력해주세요!
#df[df["X3"] > 20] # mask
df[df["X3"] % 3 == 0]   #"X3"의 값이 3의 배수에 해당하는 경우 그 row를 모두 출력 = SQL의 select와 where
#titanic["Pclass"].value_counts() : pcalss의 각 값 별 원소 개수 
#titanic[titanic.Age.isnull()] [age값이 null 인 row]들만 출력
# titanic.loc[0:100, "Name"]
# titanic.loc[0:100, "PassengerId":"Age"] : 슬라이싱
# titanic.iloc[100:200, :3]
#titanic[titanic.Age > 30]["Fare"] : 나이가 30보다 큰 값들의 fare값 , loc사용 권장(에러방지,속도)
titanic.loc[titanic.Age > 30, "Fare"].mean()
# 성별을 기준으로 생존률 파악 --> Mean vs Sum : 여성이 수가 더 적어서 생존률이 높은지 등 파악 : 각 성별의 생존자수, 생존률, 총 탑승인원
pd.pivot_table(data=titanic, index=["Sex"], values=["Survived"], aggfunc=["sum", "mean", "count"])


# 사회 계급을 기준으로 생존률 파악 : 1등석에 여성이 더 탄 거 아냐? 에 대한 대답
pd.pivot_table(data=titanic, index=["Pclass", "Sex"], values=["Survived"], aggfunc=["mean", "count"])

'파이썬 > 강의' 카테고리의 다른 글

[구름] 1일차  (0) 2022.11.07
패스트캠퍼스 5주차 EDA  (0) 2022.09.23
[언분프] 1주차  (0) 2022.09.08
패스트캠퍼스 3주차 요약  (0) 2022.09.07
인프런 파이썬 강의 섹션6  (0) 2022.08.24
Comments