본문 바로가기

Pandas/실전

판다스 - 시간 범위 수정하고 데이터 밀어내기 : date_range, first_valid_index, shift

반응형

데이터 불러오기

 

 

에볼라 바이러스에 대한 데이터이다.

 

각 나라별 발생 케이스가 언제부터인지 입력되어 있다.

 

 

 

 

 

 

이를 그래프로 보자

 

 

 

우리가 보고자 하는 것이

 

에볼라의 확산 속도라면 출발선이 같아야 비교가 가능할 것이다.

 

 

 

 

 

 

 

 

다만 원래 데이터프레임의 일자도 구멍이 난 부분이 많다.

 

 

 

 

 

 

 

 

 

따라서 인덱스부터 다시 설정해야 한다.

 

 

 

기존의 데이터프레임은 2014년 3월 22일부터 2015년 1월 5일까지 총 122행이지만

 

원래대로라면 290일이 맞다.

 

 

 

 

 

 

 

이제 새로운 인덱스로 다시 인덱스를 설정하자.

 

 

 

이제 290행으로 잘 맞춰졌으니

 

각 컬럼별로 2014년 3월 22일 행에 첫 데이터가 나올 수 있게

 

옮겨야 한다.

 

 

 

 

 

 

 

 

 

이는 첫 발생일에서 각 데이터가 처음 입력된 날을 빼면 된다.

 

 

 

 

 

 

 

 

자세한 사용법은 아래의 포스팅 참조

 

https://steadiness-193.tistory.com/83

 

판다스 - 데이터 끌어올리기 (first_valid_index, shift)

https://steadiness-193.tistory.com/82 판다스 - 데이터 밀어내기 (last_valid_index, shift) 데이터 불러오기 우선 Date 컬럼을 보면 날짜의 역순으로 데이터가 진행되고 있다. 또한 2월 10일부터 A컬럼의 데이..

steadiness-193.tistory.com

 

 

 

 

 

 

 

 

 

그러면 각 컬럼별로 옮겨야하는 일자들이 나온다.

 

데이터 타입은 timedelta64형이다.

 

 

 

 

 

 

 

 

만약 -5의 값만 얻기 위해선 다음과 같이 하면 된다.

 

 

 

 

 

 

 

이를 이용해 각 컬럼을 옮긴 시리즈를 리스트에 담고

 

 

 

 

 

 

 

 

pd.concat을 이용하면 데이터프레임으로 만들 수 있다.

 

 

 

그럼 우리가 원했던 대로 3월 22일부터 데이터가 입력된 것을 볼 수 있다.

 

 

 

 

 

 

 

이를 시각화하면

 

 

사실 확산 속도를 비교하기 위해 한 작업이지만

 

인덱스가 2배가 늘어나서

 

데이터가 너무 미미해 보인다.

 

 

 

 

 

 

 

 

 

그렇다면 date_range를 사용하지 않고 해보자

 

 

다시 그냥 122행의 데이터프레임을 가져와

 

 

 

 

 

 

기본 인덱스 기준으로 

 

 

 

 

 

 

 

각 컬럼별 옮길 숫자를 구한다.

 

 

 

 

 

 

 

 

 

같은 작업으로 만들어낸 122행의 데이터프레임이다.

 

 

 

 

 

 

 

이를 다시 시각화하면

 

 

 

우리가 원했던대로 첫 날짜부터 출발선을 동일하게 하고

 

 

확산 속도를 비교할 수 있게 됐다.

 

 

하늘색 데이터인 Guinea는 천천히 오르는 반면

 

주황색 데이터인 Liberia는 급격하게 증가하는 것을 볼 수 있다.

 

 

 

 

 

반응형