본문 바로가기
파이썬 (Python)/Pandas

Python Panda Index를 날짜 간격으로 선언, nan 값 Sort 하는 방법

by ★√★ 2021. 5. 12.

안녕하세요 이번 포스팅은 Python의 Pandas 패키지를 이용한 DataFrame 함수를 활용하는 방법 중에 Index를 날짜 간격으로 선언, nan 값 Sort 하는 방법까지 설명드리도록 하겠습니다. 

 

pandas-날짜-index-nan-값-sort-썸네일
날짜-index-nan-값-sort

 

 

코드 구현을 위한 Source Data DataFrame 화 하기

 

: 일단 DataFrame을 구현하기 위한 Source Data를 구현해보도록 하겠습니다. 이전 포스팅에서 설명드린 것처럼 DataFrame을 구현하기 위해서는 Dictionary로 구현되어 있는 Data Source가 필요합니다. 아래와 같이 예시 Data를 구현해보도록 하겠습니다. (참고로 이 부분은 이전 포스팅에서 똑같은 Source Data를 사용하고 있다는 걸 참조해주세요.)

 

# 필요한 패키지를 먼저 선언을 합니다.
import pandas as pd
import numpy as np

# 예시 Source Data를 구현하여, pandas를 이용하여 DataFrame화 시키는 코드입니다.
data = {"names": ["Kim", "Park", "Jang", "Kim", "MC-Yoo"],
"NumberofYear" : [2014, 2015, 2017, 2018, 2019],
"Value": [90, 86, 77, 99, 75]}
df = pd.DataFrame(data, columns=["names", "NumberofYear", "Value", "remarks"],
index=["first_row", "second_row", "third_row", "forth_row", "fifth_row"])

▼ 위의 Data는 예시로 한 것이고, Source Data는 원하시는 내용으로 다시 수정해서 구현하셔도 됩니다.

 

Index를 날짜 간격으로 선언

: 위에서 선언한 DataFrame의 Data 집합의 Index를 날짜간격으로 선언을 해보도록 하겠습니다. 일단 특정 날짜를 먼저 선언을 해주셔야 합니다. 그 다음에 행의 개수를 입력을 해주면 간단하게 Index를 날짜간격으로 정렬이 가능합니다.

아래와 같이 예시 코드를 짜 봤습니다. 참조 부탁드립니다.

# Column 과 Index를 새로 선언하여 수정함
# Index의 경우에는 20210101 날짜 시점으로 행의 개수인 6을 입력

df.columns = ['Column1', 'Column2', 'Column3', 'Column4']
df.index = pd.date_range('20210101', periods=6)
 
 위 코드에서 명시한 대로 20210101 날짜 기점으로 6일의 날짜 개념으로 Index를 선언을 하는 걸로 코드를 구현하였습니다. 위 코드를 실행 시켜 보면 아래와 같은 결과 값을 보실 수 있습니다. 
             Column1   Column2   Column3   Column4
2021-01-01 -0.104210  1.073584 -0.865588 -0.904132
2021-01-02 -0.192505  0.553214  1.732118 -1.286512
2021-01-03 -0.330982 -0.165117  0.704142  1.110536
2021-01-04  0.605906 -0.027792  0.008165  0.834904
2021-01-05 -0.762721 -0.072225 -1.510627 -1.702516
2021-01-06  0.885718 -0.499257 -0.311006  1.041797

Process finished with exit code 0
 

nan 값 Sort 하는 방법

: 그럼 이번에는 DataFrame 값 중에 nan 값이 있을 경우에는 제외를 시키는 코드를 구현해보도록 하겠습니다. 제외를 시키는 코드에는 한 행에 모든 Value 값이 nan 인 경우와 하나라도 nan 인 경우 이렇게 두 가지로 나뉠 수 있습니다.

그럼 두 가지 모두 다 아래와 같이 예시 코드를 통해서 설명드리도록 하겠습니다.

# 현재 df DataFrame 값에 임의로 nan 값을 입력하기 위해 Column5를 선언 및 입력

df['Column5'] = [5.0, np.nan, 5.5, 6.5, 10.0, np.nan]

# NaN 속성값을 하나 라도 가지고 있으며 누락시키는 코드
print(df.dropna(how='any'))

# 모든 속성 값이 NaN 경우에에 누락시키는 코드
print(df.dropna(how='all'))

 

 위 코드를 실행을 시켜 보면 아래와 같이 nan 가 하나라도 있으면 누락이 되는 결과와 모든 value 값이 nan이 경우에 누락이 되는 경우 이렇게 2가지 결과 값을 보실 수 있습니다. 모든 value 값을 가지고 있는 행은 없기 때문에 누락이 안 되는 걸 확인하실 수 있습니다. 

 

# nan value가 하나라도 있는 행은 누락하는 결과             
             
             Column1   Column2   Column3   Column4  Column5
2021-01-01  1.316169  0.255095 -1.294022 -0.287976      5.0
2021-01-03  0.959540  0.437421  0.603966 -0.718117      5.5
2021-01-04  0.468466  0.423073  0.103835 -0.622743      6.5
2021-01-05 -0.338243  0.579866 -0.108100 -0.758439     10.0

# 어떤 특정행의 모든 value가 nan인 경우 누락하는 결과
# 모든 value의 값이 nan인 경우가 없으니까 그대로 출력되는 걸 확인

             Column1   Column2   Column3   Column4  Column5
2021-01-01  1.316169  0.255095 -1.294022 -0.287976      5.0
2021-01-02 -1.312929 -0.325931 -0.228680 -1.227987      NaN
2021-01-03  0.959540  0.437421  0.603966 -0.718117      5.5
2021-01-04  0.468466  0.423073  0.103835 -0.622743      6.5
2021-01-05 -0.338243  0.579866 -0.108100 -0.758439     10.0
2021-01-06  0.887039 -1.128454  1.368624  1.121169      NaN

Process finished with exit code 0
 

 

 이상입니다. 지금까지 Python의 Pandas 패키지를 이용한 DataFrame 함수를 활용하는 방법 중에 Index를 날짜 간격으로 선언, nan 값 Sort 하는 방법에 대해서 포스팅을 작성하였습니다. 위 코드를 이해하셨으면 실제로 파이 참에서 실행을 해보시는 걸 추천드립니다. 그럼 최고의 프로그래머가 되는 데 조금이나 도움이 되었으면 좋겠습니다. 이만 마무리하도록 하겠습니다. 감사합니다.

 

[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁드립니다. 검토 후 수정 및 삭제 조치하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을 때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.] 

 

관련 다른 글

 

728x90

댓글