활용) 시계열 데이타 생성시, 일자를 기준으로 차트를 구성하려고 하는 경우 내가 보유한 데이타는 2010, 2013, 2014, 2015 이렇게 있다고 가정하자 (2011,2012년 데이타가 없다) 이런경우, 2011, 2012년을 생성하고 데이타는 이전 년도의 데이타를 넣어야지 차트가 그려진다. method='ffill' 메소드를 활용 P. 199에 상세 설명 빨강색 줄친 부분이 ffill 기능을 이용해서 이전 데이타로 채워진 모습
index뿐만이 아니라, 컬럼에 대해서도 조건을 걸고 reindex를 수행할 수 있다. reindex를 통해서 b index의 새로운 사항이 들어갔다.
P.200 : 재색인 함수 인자 정의되어 있음
컬럼만 지정해서 reindex가 가능하다 columns= 의 형식으로 입력
loc방식으로 재색인 하는 방식 (가장 선호된다고 한다.) frame.loc[['a', 'b', 'c', 'd'], states] 명식적으로 index를 지정하고, 컬럼도 정의하는 형태
하나의 로우, 컬럼 삭제하기 삭제를 하려면, 기준이 필요한데 가로축(컬럼항목)과 세로축(색인:index)의 조합으로 삭제가 가능한다. · axis=0 : 색인(index)를 의미한다. (명시적으로 axis를 정의하지 않으면, index기준으로 삭제를 한다.) · axis=1 or axis='columns' : 컬럼을 의미한다.
drop메소드를 사용해서 선택한 값을 삭제한 새로운 객체를 얻을 수 있다.
obj.drop('1') : 1개 삭제 (인덱스 기준)
obj.drop(['2','3']) : 복수개 (인덱스 기준)
obj.drop(['2'], axis=1) : 컬럼 기준으로 컬럼 이름이 2인 사항 삭제
obj.drop(['2','3'], axis='columns') : 컬럼 기준으로 컬럼 이름이 2,3인 사항 삭제
색인하기, 선택하기, 거르기
Series 색인 : 정수가 아닌 문자열도 가능 (Numpy 색인 : 정수만 가능)
인덱스를 지정하는 경우와 순번으로 지정하는 경우 (결국 같은 결과를 의미함) 샘플데이타 대상 series로 생성한 변수명이 tmp라고 한다면 (아래 샘플은 Series를 대상으로 한다.!!,) Series는 컬럼값이 없이 색인만 존재한다. tmp['b'] 와 tmp[1]은 동일하게 1.0이 출력됩니다. - [' '] : index의 이름을 지정하는 패턴 - [ ] : index의 0부터 시작하는 순번에 해당하는 값을 식별하는 패턴
loc와 iloc 선택 (DataFrame에서 사용하는 것)
loc : 정수 색인, index로 선택하는 경우 ??
loc를 사용한다고 해서, 무조건 index기반으로만 찾는것은 아닌것 같다
loc[1, 'b'] 의미가 색인 1에서 컬럼 'b'를 찾는것이다.
iloc : 축, 컬럼으로 선택하는 경우 ??
P.208 : loc와 iloc에 대한 API (i로 시작하는 연산자는 곧 사라질 예정이라고 사용을 않기 추천한다고 한다.)
정수색인
pandas를 사용중, 리스트나 튜플같은 파이선 자료구와 색인 방식이 다르다. (실수를 많이 한다.)
산술연산, 데이타 정렬
두 색인색인의 통합 (데이타베이스의 join과 유사하다)
각각 생성된 pd.Series 를 통합해서 s1+ s2로 처리 (겹치는 색인이 없는 경우 NA값이 된다.)
pd.DataFrame 의 경우 정렬은 로우와 컬럼 모두에 적용된다.
특정 위치에 값을 넣어보기 loc메소드 → 색인 검색 후, 컬럼을 검색 색인 1에서 컬럼 b값을 변경한것인자값에 '1'을 입력시 색인 정보로 보지 않고, 새로 row를 생성하여서 들어갔다.
na값 특정 값으로 채우기 (fill_value 사용하기)
df1과 df2가 있을때, na값을 0으로 채우기
df1.add(df2, fill_value = 0)
P.214 : 산술연산 메소드 정의됨
r로 시작하는 짝꿍 메소드 (각각의 산술연산 메소드는 인자를 뒤집어서 계산하는 메소드를 가진다.) - 아래 빨강색과 파란색은 같은 결과를 가진다. - 1 / df1 에 사항이 df1.rdiv(1) 의 의미를 가진다.
DataFrame과 Series간의 연산
Series의 색인을 DataFrame컬럼에 맞추고 아래 row로 전파한다.
frame.sub(seris, axis = 'index')
axis값은 연산을 적용 할 축 번호이다.
axis='index' 나 axis=0은 DataFrame의 row에 대해서 연산을 수행하는 의미