Skip to content

Streamlit Datetime Slider - 단계별 소개

Updated on

자료 시각화의 세계에서 데이터를 대화식으로 필터링하고 조작하는 능력은 중요합니다. 파이썬 커뮤니티에서 인기를 얻은 툴 중 하나는 Streamlit datetime slider입니다. 이 강력한 기능은 사용자가 시계열 데이터를 대화식으로 필터링하여 직관적이고 매력적인 사용자 경험을 제공할 수 있습니다. 이 가이드에서는 Streamlit datetime slider의 세부 사항에 대해 자세히 알아보고 이 기능을 프로젝트에 효과적으로 구현하기 위한 지식과 예제를 제공합니다.

Streamlit은 기계 학습 및 데이터 과학 프로젝트를 위해 커스텀 웹 앱을 만드는 과정을 간소화하는 오픈 소스 파이썬 라이브러리입니다. 그 중 하나인 datetime slider는 사용자가 타임라인을 따라 핸들을 이동하여 날짜 범위를 선택할 수 있는 위젯입니다. 이 기능은 특히 시계열 데이터를 다룰 때 유용하며, 사용자가 특정 시간 범위의 데이터를 쉽게 필터링하고 시각화할 수 있도록 해줍니다.

Streamlit datetime slider란 무엇인가요?

Streamlit datetime slider는 사용자가 타임라인을 따라 핸들을 이동하여 날짜 범위를 선택할 수 있는 위젯입니다. 이 기능은 특히 시계열 데이터를 다룰 때 유용하며, 사용자가 특정 시간 범위의 데이터를 쉽게 필터링하고 시각화할 수 있도록 해줍니다. Streamlit의 datetime slider는 slider 함수를 사용하여 생성되며, 날짜 범위를 입력하면 선택한 날짜 범위를 반환합니다.

Streamlit에서 datetime slider를 생성하려면 다음 매개변수를 사용하여 slider 함수를 사용해야 합니다:

  • label: 슬라이더의 라벨로 사용될 문자열입니다.
  • min_value: 슬라이더의 최솟값입니다. 이는 datetime 객체여야 합니다.
  • max_value: 슬라이더의 최댓값입니다. 이 역시 datetime 객체여야 합니다.
  • value: 슬라이더의 초기 값입니다. 단일 datetime 객체나 범위를 나타내는 두 개의 datetime 객체 중 하나로 설정할 수 있습니다.
  • step: 슬라이더 값 사이의 증분입니다. 이는 timedelta 객체여야 합니다.

다음은 Streamlit에서 datetime slider를 생성하는 예시입니다:

import streamlit as st
from datetime import datetime, timedelta
 
# 일주일 범위의 datetime slider 생성
start_date = datetime(2020, 1, 1)
end_date = start_date + timedelta(weeks=1)
 
selected_date = st.slider(
    "날짜 범위 선택",
    min_value=start_date,
    max_value=end_date,
    value=(start_date, end_date),
    step=timedelta(days=1),
)

위 예시에서 datetime slider는 2020년의 첫 주 내에서 사용자가 날짜 범위를 선택할 수 있는 기능을 제공합니다. step 매개변수는 하루를 나타내는 timedelta 객체로 설정되어 있으므로 사용자는 일 단위의 정밀도로 날짜 범위를 선택할 수 있습니다.

Streamlit datetime slider를 효과적으로 사용하는 방법은 무엇인가요?

Streamlit datetime slider는 강력한 도구이지만, 좋은 사용자 경험을 위해 효과적으로 사용해야 합니다. Streamlit datetime slider를 효과적으로 사용하기 위한 몇 가지 팁을 알려드립니다:

  1. 적절한 증분 크기 선택: 증분 크기는 사용자가 선택할 수 있는 날짜 범위의 정밀도를 결정합니다. 증분 크기가 너무 크면 사용자가 원하는 정확한 날짜 범위를 선택할 수 없을 수 있습니다. 반대로, 증분 크기가 너무 작으면 슬라이더가 너무 민감하게 반응하여 조작하기 어려워질 수 있습니다. 따라서 데이터와 사용 사례에 적합한 적절한 증분 크기를 선택하는 것이 중요합니다.

  2. 합리적인 기본 값 설정: 슬라이더의 기본 값은 사용자가 앱을 처음로드할 때 선택되는 초기 날짜 범위를 결정합니다. 데이터와 관련성이 있는 합리적인 기본 값 설정하는 것이 중요합니다. 예를 들어, 과거 1년간의 판매 데이터를 시각화하는 경우, 기본 값을 가장 최근 달로 설정할 수 있습니다.

  3. 누락된 데이터를 적절히 처리하기: 데이터에 일부 날짜에 대한 누락된 값이 있는 경우, 이러한 누락된 값을 적절하게 처리하는 것이 중요합니다. 주변 데이터를 기반으로 누락된 값을 보간하는 방법으로 처리할 수 있습니다. 또는 사용자가 사용 가능한 데이터만 선택할 수 있도록 할 수 있습니다.

  4. 슬라이더 값을 동적으로 업데이트하기: 일부 경우에는 사용자 입력에 따라 슬라이더 값을 동적으로 업데이트하고 싶을 수 있습니다. 예를 들어, 사용자가 시간 범위를 선택할 수 있는 두 번째 슬라이더를 가지고 있다면, datetime slider를 선택한 시간 범위를 반영하도록 업데이트하고 싶을 수 있습니다. 이는 st.empty 함수를 사용하여 플레이스홀더를 생성한 후, 나중에 위젯으로 채울 수 있도록 하는 것으로 구현할 수 있습니다.

다음은 datetime slider를 동적으로 업데이트하는 방법의 예시입니다:

import streamlit as st
from datetime import datetime, timedelta
 
# datetime slider를 위한 플레이스홀더 생성
slider_placeholder = st.empty()
 
# 시간 범위 선택을 위한 슬라이더 생성
time_range = st.slider("시간 범위 선택", 0, 23, (0, 23))
 
# 선택한 시간 범위에 따라 datetime slider를 업데이트
start_date = datetime(2020, 1, 1, time_range[0])
end_date = start_date + timedelta(hours=time_range[1] - time_range[0])
 
selected_date = slider_placeholder.slider(
    "날짜 범위 선택",
    min_value=start_date,
    max_value=end_date,
    value=(start_date, end_date),
    step=timedelta(hours=1),
)

이 예시에서는 사용자가 선택한 시간 범위가 변경될 때마다 datetime slider가 업데이트됩니다. slider_placeholder 함수는 datetime slider를 위한 플레이스홀더를 생성하는 데 사용되며, 사용자가 시간 범위를 변경할 때마다 업데이트된 슬라이더로 채워집니다.

Streamlit datetime slider: 일반적인 문제와 해결책

Streamlit 날짜 및 시간 슬라이더는 강력한 도구이지만 단점도 있습니다. Streamlit 날짜 및 시간 슬라이더를 사용할 때 발생할 수 있는 일반적인 문제와 해결 방법을 알아보겠습니다:

  1. 날짜 및 시간 슬라이더 작동하지 않음: 만약 날짜 및 시간 슬라이더가 사용자 입력에 대응하지 않는다면, value 매개변수가 올바르게 설정되지 않았을 가능성이 있습니다. value 매개변수가 초기 날짜 범위를 나타내는 두 개의 날짜 객체 튜플이 되도록 확인하십시오.

  2. 날짜 및 시간 슬라이더 기본값이 작동하지 않음: 만약 날짜 및 시간 슬라이더가 올바른 기본값을 표시하지 않는다면, value 매개변수가 올바르게 설정되지 않았을 가능성이 있습니다. value 매개변수가 기본 날짜 범위를 나타내는 두 개의 날짜 객체 튜플이 되도록 확인하십시오.

  3. 날짜 및 시간 슬라이더 크기가 작동하지 않음: 만약 날짜 및 시간 슬라이더의 크기가 올바르게 표시되지 않는다면, format 매개변수가 올바르게 설정되지 않았을 가능성이 있습니다. format 매개변수는 슬라이더 상의 날짜 표시 형식을 결정합니다. format 매개변수가 원하는 날짜 형식을 지정하는 문자열이 되도록 확인하십시오.

  4. 날짜 및 시간 슬라이더에서 모든 필터가 표시되지 않음: 만약 날짜 및 시간 슬라이더에서 모든 가능한 필터가 표시되지 않는다면, options 매개변수가 올바르게 설정되지 않았을 가능성이 있습니다. options 매개변수는 슬라이더의 가능한 필터를 결정합니다. options 매개변수가 원하는 필터를 나타내는 문자열의 리스트가 되도록 확인하십시오.

다음은 formatoptions 매개변수를 설정하는 예제입니다:

import streamlit as st
from datetime import datetime, timedelta
 
# 사용자 정의 형식 및 옵션으로 날짜 시간 슬라이더 생성
start_date = datetime(2020, 1, 1)
end_date = start_date + timedelta(weeks=1)
 
selected_date = st.slider(
    "날짜 범위 선택",
    min_value=start_date,
    max_value=end_date,
    value=(start_date, end_date),
    step=timedelta(days=1),
    format="MM/DD/YYYY",
    options=["일", "주", "월", "년"],
)

이 예제에서는 날짜 시간 슬라이더가 "MM/DD/YYYY" 형식으로 날짜를 표시하고, 일, 주, 월 또는 년별로 필터링하는 옵션을 제공합니다.

Streamlit 날짜 및 시간 슬라이더의 고급 기능 탐색

Streamlit 날짜 및 시간 슬라이더는 단순한 날짜와 시간 선택에만 제한되지 않습니다. 데이터 시각화 애플리케이션의 기능을 향상시킬 수 있는 고급 기능도 제공합니다. 이 중 하나는 범위를 선택하는 데 사용자가 단일 날짜 대신 날짜 범위를 선택할 수 있는 이중식 슬라이더입니다.

이중식 슬라이더를 Streamlit에서 만들려면 value 매개변수로 두 개의 날짜 객체 튜플을 전달하면 됩니다. 이를 통해 시작 날짜와 종료 날짜를 선택할 수 있는 두 개의 핸들이 있는 슬라이더가 생성됩니다.

다음은 Streamlit에서 이중식 슬라이더를 만드는 예제입니다:

import streamlit as st
from datetime import datetime, timedelta
 
# 이중식 날짜 시간 슬라이더 생성
start_date = datetime(2020, 1, 1)
end_date = start_date + timedelta(days=30)
 
selected_date_range = st.slider(
    "날짜 범위 선택",
    min_value=start_date,
    max_value=end_date,
    value=(start_date, start_date + timedelta(days=7)),
    step=timedelta(days=1),
)

이 예제에서 이중식 슬라이더는 2020년의 첫 번째 달에서 선택한 날짜 범위를 표시합니다. value 매개변수는 초기 설정된 날짜 범위를 나타내는 두 개의 날짜 객체 튜플로 설정됩니다.

Streamlit 날짜 및 시간 슬라이더: 대화형 데이터 시각화 도구

마지막으로, Streamlit 날짜 및 시간 슬라이더는 대화형 데이터 시각화를 위한 강력한 도구입니다. 사용자 친화적인 인터페이스와 유연한 사용자 정의 옵션을 통해 시계열 데이터를 직관적이고 매력적으로 탐색하고 이해할 수 있게 해줍니다.

하지만 Streamlit은 Python 데이터 시각화에 모두 적합한 것은 아닙니다. 판다스 데이터프레임을 드래그 앤 드롭으로 빠르게 시각화할 수 있는 오픈 소스 Python 라이브러리가 있습니다.

PyGWalker는 시각화와 함께 탐색적 데이터 분석을 위한 Python 라이브러리입니다. PyGWalker (opens in a new tab)는 판다스 데이터프레임 (및 polars 데이터프레임)을 테이블 스타일의 사용자 인터페이스로 구성하여 Jupyter Notebook 데이터 분석 및 데이터 시각화 워크플로우를 단순화할 수 있습니다.

시작하려면 Jupyter 노트북에 다음을 입력하십시오:

pip install pygwalker

설치되면 다음과 같이 Python 스크립트에서 다른 라이브러리와 같이 가져올 수 있습니다:

import pygwalker as pg

GitHub에서 PyGWalker에 별을 주는 것 (opens in a new tab)을 잊지 마십시오!

자주 묻는 질문

  1. Streamlit 날짜 및 시간 슬라이더란 무엇인가요?

Streamlit 날짜 및 시간 슬라이더는 사용자가 타임라인을 따라 핸들을 슬라이드하여 날짜 범위를 선택할 수 있는 위젯입니다. 이 기능은 특히 시계열 데이터를 다룰 때 특정 시간 기간에 대해 데이터를 쉽게 필터링하고 시각화할 수 있어 유용합니다.

  1. Streamlit에서 날짜 및 시간 슬라이더를 어떻게 생성할 수 있나요?

Streamlit에서 날짜 및 시간 슬라이더를 생성하려면 다음 매개변수와 함께 slider 함수를 사용해야 합니다: label, min_value, max_value, value, step. min_valuemax_value 매개변수는 슬라이더의 범위를 결정하고, value 매개변수는 초기 선택된 날짜 범위를 결정합니다.

  1. Streamlit에서 날짜 및 시간 슬라이더를 생성하기 위해 어떤 매개변수를 사용해야 하나요? Streamlit에서 datetime 슬라이더를 만들기 위한 매개변수는 label, min_value, max_value, value, step 입니다. label 매개변수는 슬라이더의 레이블로 사용될 문자열입니다. min_valuemax_value 매개변수는 슬라이더의 범위를 결정하는 datetime 객체입니다. value 매개변수는 단일 datetime 객체이거나 초기 선택 날짜 범위를 나타내는 두 datetime 객체의 튜플입니다. step 매개변수는 슬라이더 값 사이의 증분을 결정하는 timedelta 객체입니다.

결론

결론적으로, Streamlit datetime 슬라이더는 시계열 데이터와 상호작용하는 강력한 도구입니다. 효과적으로 사용하고 일반적인 문제를 해결하는 방법을 이해함으로써 보다 매력적이고 사용자 친화적인 데이터 과학 앱을 만들 수 있습니다. 경험이 풍부한 데이터 과학자이든 초보자이든, 이 가이드가 Streamlit datetime 슬라이더에 대한 깊은 이해와 프로젝트에서의 사용 방법을 제공해 드리길 바랍니다.