day 2021-09-16
page 1-86
numpy 정리
numpy.argsort(a)
정렬된 행렬에서 기존 행렬의 인덱스를 반환해줌 - 아주 쓸떄가 많다
np.dot(a,b)
넘파이 행렬 내적(행렬 곱)
np.transpose(A)
넘파이 전치 행렬 - 대각선 긋고 반대로
판다스
a.info()
판다스 데이터프레임의 non이 아닌 데이터수와 타입을 알수있다
a.describe()
데이터의 분포를 알수있다 수,평균,표준편차,최소 ,최대,중간값등
a.["age"]value_count()
해당 칼럼의 많은 건수 순서로 정렬하여 반환
시리즈 - 컬럼하나 (세로한줄)
데이터프레임 - 컬럼 여러개
pd.DataFrame(a, columns=[name1,n2,n,3])
-컬럼명 설정
pd.DataFrame(a, columns=[name1,n2,n,3],index=[one,two,three])
-인덱스를 숫자가 아닌 내가 정한 고유값으로 설정
변환 //a.shape으로 확인
list -> 넘파이 - np.array(a)
list -> 데이터프레임 - pd.DataFrame(a, columns=[name1,n2,n,3])
데이터프레임 ->넘파이 - a.values
데이터프레임 -> list - a.values.tolist()
데이터프레임 -> 딕셔너리 - a.to_dict("list") // 괄호안에 list라써서 딕셔너리 value가 리스트로 저장
데이터프레임 컬럼 생성과 수정
a["age"] =0 - 컬럼 age를 생성하고 모든값을 0이됨 한번에 수정하거나 연산가능
데이터프레임 삭제
a.drop("age",axis=1)
axis =0 은 가로(로우,행)을 뜻함
행을 삭제할떄는 인덱스로 삭제
axis=1은 세로(칼럼,열)
열을 삭제할 떄는 컬럼명으로 삭제
a.drop(['name","age","height"],axis=1)
여러개 열을 삭제하고 싶을떄
a.drop(['name","age","height"],axis=1,inpace=True)
inplace는 ture일떄는 원본에 삭제, false는 삭제한 걸 반환(원본지장x)
false가 기본값이다
인덱스
a.index - 인덱스 값만 추출
한번만들어진 index는 변경x
a.values - 인덱스나 컬럼명을 제외한 데이터만 추출
a.reset_index(inplace=False)
기존에 인덱스는 컬럼으로 추가하고 새로운 인덱스를 만든다
인덱스가 연속된 숫자형 데이터가 아닌경우 많이 사용한다
데이터프레임 [ ] 연산자
DataFrame의 []는 넘파이와 시리즈의 []와 다르다
데이터프레임[]의 입력값은 칼럼명(or 칼럼명 리스트)를 지정하거나
불린 인덱스 용도( a[a["age"]>15] )로만 사용해야한다
a[0:2]와 같은 슬라이싱 연산으로 데이터 추출은 사용하지않는게 좋다
a[0]=5 같이 5번 인덱스의 행을 5로 바꾸려는 작업은 에러를 발생한다
데이터프레임 접근
ix[], iloc[],loc[]
명칭 기반 인덱싱 = 인덱스나 칼럼명으로 데이터에 접근
위치 기반 인덱싱 = 0부터 시작하는 행,열 위치 좌표에 의존해 접근
ix[]는 명칭기반과 위치기반 인덱싱 모두 적용가능
ex) ix[0,1] , ix["one",3],ix["one","name"] 등 자유롭게 위치와 명세로 접근
하지만 dataframe의 인덱스가 숫자형일 경우 행을 가리기는 숫자는
위치가 아닌 명칭 기반 인덱스를 가리킴 (가독성이 좋지못함, 곧사라짐)
iloc[3,1] - 위치 기반 인덱싱만으로 행과 열을 위치 값으로 데이터를 접근
loc["one","age"] - 명칭 기반 인덱싱만으로 행 위치에는 인덱스(인덱스는 고유값으로 자유롭게 정할 수 있다) 열 위치에는 컬럼명이 들어간다
위치기반 인덱싱에서 iloc[0:2,5]은 0과 1번째 행의 5번째 열 원소를 반환
하지만 명칭 기반 인덱싱에서 loc[1:2,"name" ] (index가 숫자형)인경우 1번쨰행의 name열 원소만 반환
or loc["one":"five",3]
boolean 인덱싱 - 데이터 필터링 방식
[],ix[],loc[]에 적용이 가능하고 iloc은 적용이 불가능하다
ex) b=a[a["age">18]] 데이터프레임 a에 나이가 18이상인것들 모두 반환
b=a[a["age">18], ["name","age"]] 나이가 18이상인것의 name과age행만 반환
b=a.loc[a["age">18], ["name","age"]] 위에것과 동일
b=a[a[("age">18)&("height>180")], ["name","age"]] - 여러 조건//나이 18이상 키180이상 name,age 열 반환
cond1= a["age">18]
cond2= a["height>180"]
a[[cond1&cond2],["name","age"]]
변수에 조건을 할당하고 결합하여 필터링
dataframe 정렬
a.sort_values(by=["name"])
a 데이터프레임을 name행 기준으로 오름차순으로 정렬
a.sort_values(by=["name"],ascending=False)
내림차순 정렬
ascending =True는 오름차순 False는 내려차순이고
True(오름차순)이 기본값이다
a.sort_values(by=["name","age"],ascending=False) -name과 age로 정렬
aggregation(집합) 함수
min,max,sum,count 같은 함수 적용 가능
groupby()
a.groupby(by="age") - age의 나이별로 그룹화해준다
a.groupby(by="age").count() 와 같은 집합함수를 쓰면 나머지 열에 그룹마다 몇개가 있는지 알려준다
sql의 groupby와 조금 다르다 sql은 select절에 출력할려는 컬럼을 다써야하지만 데이터프레임은 해당 컬럼을 필터링하고 집합함수를 적용해야 한다
a.groupby(by="age")[["name","age"]].count() -age로 그룹화한후 name과 age열을 필터링해서 카운트함수를 적용한다
a.groupby(by="age")[["name","age"]].agg(max,min) -여러 집합함수를 적용할려면 이런식으로 agg함수 이용
ad ={"year":"max","height:"min","weight":"mean"}
a.groupby("name").agg(ad)
그릅화된 데이터프레임에 여러 행에 각자다른 집합 함수를 이용하고 싶으면
dictionary를 만들어서 사용한다
name으로 그룹화해서 그룹별로 year의 max값 height min값 weight의 mean값을 반환한다
결손데이터 처리
결손데이터찾기
a.isna() - 모든 값들이 nan인지 아닌지 각각 true,false로 나타낸다
a.isna().sum()을 하면 각 열마다 nan값이 몇개 있는지 알수 있다 (nan값을 sum으로 하면 false이기에 0 이고 true는 1이기 떄문에)
결손데이터 대체
a["age"]=a["age"].fillna(15)
a["age"].fillna(15) 만쓰고 반환값을 다시 저장하고 싶지 않으면 inplace(True)설정
lambda람다
lambda는 함수를 한줄로 만들어준다
반환값 =lambda 입력값:반환값(수식)
hap = lambda x,y:x+y
람다에서 if문을 쓸떄
lambda 입력값:(if반환값) if 조건식 else (else반환값)
: 오른쪽에는 반환값이 들어가야 하기때문 if의 반환값이 앞으로 온다
람다에서는 else if를 이용할수없다 그래서 else절에 (if else)를 넣어서 사용해야한다
a= lambda x,y:x if x>y else y
b= lambda x,y:x if x>y else (0 if x==y else y)
apply에 lambda로 데이터가공
a["name_len"]=a["name"].apply(lambda x:len(x))
apply(함수,axis=0 or axis=1) 0은 열 1은 행 기본값 0
해당 행이나 열에 함수를 적용해준다
a의 name 행에 길이를 구하는 함수를 적용해 name_len이라는 함수를 만든다
a["mean_age"]=a["age"].apply(np.mean)
영단어
- inplace 제자리(원본)
- axcending 내림차순 descending 올림차순
- aggregation 집합
'데이터 분석 > (책)파이썬 머신러닝 완벽 가이드 정리' 카테고리의 다른 글
| 파이썬 머신러닝 완벽 가이드 정리 chapter 2 (1) | 2021.09.21 |
|---|