반응형

05. pandas 시작하기

5.2.1 재색인

pandas 객체의 중요한 기능 중 하나는 reindex인데 , 새로운 색인에 맞도록 객체를 새로 생성한다.

obj = pd.Series([4.5,7.2,-5.3,3.6], index=['d','b','a','c'])

print(obj)

obj2 = obj.reindex(['a','b','c','d','e'])

print(obj2)

method='ffill'  메서드를 이용해서 누락된 값을 직전의 값으로 채워 넣을 수 있다.

 

DataFrame에 대한 reindex는 로우(색인), 컬럼 또는 둘 다 변경 가능하다.

그냥 순서만 전달하면 로우가 재색인된다.

 

5.2.2 하나의 로우나 컬럼 삭제하기

색인 배열,또는 삭제하려는 로우나 컬럼이 제외된 리스트를 이미 가지고 있다면 로우나 컬럼을 쉽게 삭제할 수 있는데 이 방법은 데이터의 모양을 변경하는 작업이 필요하다.

drop메서드를 사용하면 선택한 값들이 삭제된 새로운 객체를 얻을 수 있다.

 

obj.drop('인덱스 값')

 

drop함수에 인자로 로우 이름을 넘기면 해당 로우(axis 0)의 값을 모두 삭제한다.

컬럼의 값을 삭제할 때는 axis = 1 또는 axis='columns'를 인자로 넘겨주면 된다.

drop함수처럼 Series나 DataFrame의 크기 또는 형태를 변경하는 새로운 객체를 반환하는 대신 원본 객체를 변경한다.

obj.drop('c',inplact= True)

 

5.2.3 색인하기 선택하기 거르기

Series의 색인 (obj[...])은 Numpy 배열의 색인과 유사하게 동작하지만 정수가 아니어도 된다는 점이 다르다.

슬라이싱 [시작점: 끝점] 

라벨 이름으로 하면 끝점은 포함된다.

 

loc과 iloc으로 선택하기

DataFrame의 로우에 대해 라벨로 색인하는 방법으로 특수한 색인 필드인 loc과 iloc을 소개

축 이름을 선택할 떄는 loc

정수 색인으로 선택할 때는 iloc 

 

5.2.4 정수 색인

정수 색인으로 pandas 객체를 다루다보면 리스트나 튜플 같은 파이썬 내장 자료구조에서 색인을 다루는 방법과의 차이점 떄문에 실수하게 되는 경우가 있다.

ser = pd.Series(np.arange(3))

print(ser)

 

ser2= pd.Series(np.arange(3.), index=['a','b','c'])

print(ser2[-1])

 

print(ser[:1])

print(ser.loc[:1])

print(ser.iloc[:1])

 

5.2.5 산술 연산과 데이터 정렬

두 객체를 더할 떄 

겹치는 색인이 없는 경우 데이터는 NA값이 된다.

산술 연산시 누락된 값은 전파된다.

 

 

산술 연산 메서드에 채워 넣을 값 지정하기

df1 = pd.DataFrame(np.arange(12.).reshape((3,4)), columns= list('abcd'))

df2 = pd.DataFrame(np.arange(20.).reshape((4,5)), columns= list('abcde'))

df2.loc[1,'b'] = np.nan

print(df1)

print(df2)

print(df1+ df2)

 

fill_value 로 없는 값을 채원다

 

DataFrame과 Series간의 연산

브로드캐스팅

axis 값은 연산을 적용할 축 번호다.

 

 

5.2.6 함수 적용과 매핑

frame.apply 메서드 사용

axis = 'columns'

frame.applymap()

 

5.2.7 정렬과 순위

DataFrame은 로우나 컬럼 중 하나의 축을 기준으로 정렬 할 수 있다.

sort_index(axis =1, ascending=False)

 

Series객체를 값에 따라 정렬하고 싶다면 sort_values메서드를 사용하면 된다.

sort_values(by ='b') 컬럼 이름

리스트도 가능하다.

 

순위는 정렬과 거의 흡사한데, 1부터 배열의 유효한 데이터 개수까지 순서를 매긴다.

rank()

rank(method='first') 

rank(ascentding=False, method='max') 

반응형

+ Recent posts