Python의 실시간 대시 보드
스트리밍 및 새로 고침

데이터 과학자는 데이터 시각화를 사용하여 데이터를 전달하고 통찰력을 생성합니다.데이터 과학자는 의미있는 시각화 대시 보드, 특히 실시간 대시 보드를 만드는 방법을 알아야합니다.이 기사에서는 Python에서 실시간 대시 보드를 얻는 두 가지 방법에 대해 설명합니다.
- 먼저 스트리밍 데이터를 사용하고 자동 업데이트되는 스트리밍 대시 보드를 만듭니다.
- 둘째, 대시 보드를 새로 고쳐야 할 때마다 “새로 고침”단추를 사용하여 대시 보드를 새로 고칩니다.
데모 목적으로 플롯과 대시 보드는 매우 기본적이지만 실시간 대시 보드를 수행하는 방법에 대한 아이디어를 얻을 수 있습니다.
이 기사의 코드는 다음에서 찾을 수 있습니다.realtime_dashboard.ipynb과realtime_dashboard.py.이 두 파일의 내용은 서로 다른 형식으로 완전히 동일합니다.
데이터 소스
방법을 보여주기 위해 실제 API로이 대시 보드를 만들고이 기사의 예로 OpenWeather API의 날씨 데이터를 사용합니다.
이 기사에 언급 된 코드를 시험 해보고 싶다면 OpenWeather 날씨 API에 액세스해야합니다.에서 등록 할 수 있습니다.날씨 웹 사이트 열기그런 다음API 키.
설정
코드를 시작하기 전에 필요한 패키지를 설치하겠습니다.나는 만들었습니다environment.yml파일.이 파일을 다운로드하고 다음을 실행하여 환경을 만들고 활성화하십시오.
conda env create -f environment.yml
conda 활성화 realtime_dashboard
또는 모든 패키지를 직접 설치하려면conda install datashader holoviews hvplot 노트북 numpy pandas panel param requests streamz
.문제가 발생하면 내가 사용중인 Python 버전 및 패키지 버전이 environment.yml에 기록됩니다.
패키지 가져 오기
여기에서이 기사에 사용 된 패키지를 가져옵니다.
스트리밍 데이터 및 대시 보드
먼저 함수를 만듭니다.weather_data
OpenWeather API를 사용하여 도시 목록에 대한 날씨 데이터를 가져옵니다.출력은 각 도시를 나타내는 각 행이있는 pandas 데이터 프레임입니다.
둘째, 우리는Streamz
샌프란시스코의 날씨 데이터를 기반으로 스트리밍 데이터 프레임을 만듭니다.함수스트리밍 _ 날씨 _ 데이터
콜백 함수로 사용됩니다.주기적 DataFrame
만드는 기능Streamz
스트리밍 데이터 프레임df
.Streamz
문서화 방법주기적 DataFrame
공장:
streamz는이를 위해 PeriodicDataFrame이라고하는 고급 편의 클래스를 제공합니다.PeriodicDataFrame은 Python의 asyncio 이벤트 루프 (Jupyter 및 기타 대화 형 프레임 워크에서 Tornado의 일부로 사용됨)를 사용하여 사용자가 제공 한 함수를 정기적으로 호출하여 결과를 수집하고 나중에 처리 할 수 있도록합니다.
https://streamz.readthedocs.io/en/latest/dataframes.html#streaming-dataframes
그만큼Streamz
스트리밍 데이터 프레임df
값은 30 초마다 업데이트됩니다 (간격 = ’30 '
).

셋째, 우리는hvPlot
플롯하기 위해Streamz
데이터 프레임을 사용한 다음패널
플롯을 구성하고 모든 것을 대시 보드에 넣습니다.사용 방법에 대해 더 알고 싶다면hvPlot
플롯Streamz
데이터 프레임, 참조하십시오hvPlot 문서.
다음은 대시 보드의 모습입니다.스트리밍 데이터 프레임은 30 초마다 업데이트되므로이 대시 보드도 30 초마다 자동으로 업데이트됩니다.여기에서 온도는 변했지만 습도와 풍속은 변하지 않았습니다.

이제 스트리밍 데이터 프레임과 스트리밍 대시 보드를 만드는 방법을 알았습니다.
더 자세히 알고 싶다면 여기 멋진 비디오가 있습니다.지도 시간제 친구 Jim Bednar 박사의 스트리밍 대시 보드에서그것을 확인하시기 바랍니다!
대시 보드 새로 고침
때로는 스트리밍 대시 보드가 실제로 필요하지 않습니다.대신 대시 보드가 표시 될 때마다 새로 고칠 수 있습니다.이 섹션에서는 대시 보드에서 “새로 고침”버튼을 만들고 “새로 고침”을 클릭 할 때마다 새 데이터로 대시 보드를 새로 고치는 방법을 보여 드리겠습니다.
먼저 간단한 함수를 만들어 보겠습니다weather_plot
도시 이름이 지정된지도에 날씨 데이터를 플로팅하고 플롯과 데이터를 모두 반환합니다.

플로팅 기능이 준비되면 새로 고칠 수있는 대시 보드를 만들 수 있습니다.나는param.Action
버튼을 클릭 할 때마다 업데이트를 트리거하는 함수새롭게 하다
.또한param.ObjectSelector
플로팅에 관심이있는 데이터 프레임 열의 드롭 다운 메뉴를 생성하고param.ObjectSelector
드롭 다운 메뉴에서 다른 옵션을 선택할 때마다 업데이트를 트리거합니다.그런 다음@ param.depends ( 'action', 'select_column')
데코레이터는get_plot
클릭 할 때마다 다시 실행되는 기능새롭게 하다
버튼을 누르거나 다른 열을 선택하십시오.
새로 고침 대시 보드는 다음과 같습니다.

마지막으로패널
우리가 만든 두 대시 보드를 결합합니다.
전개
최종 대시 보드창유리
이다패널
다음을 실행하여 제공 할 수있는 객체입니다.
panel serve realtime_dashboard.py
또는
패널 서비스 realtime_dashboard.ipynb
자세한 내용은패널
배포, 참조하십시오패널
문서.
이제 Python에서 실시간 스트리밍 대시 보드와 새로 고침 가능한 대시 보드를 만드는 방법을 알았습니다.hvplot
,패널
과Streamz
.이 기사가 도움이 되었기를 바랍니다.
참고 문헌
https://anaconda.cloud/tutorials/4038ae58-286a-4fdc-b8bf-b4b257e2edf3
https://openweathermap.org/api
https://panel.holoviz.org/gallery/param/action_button.html
https://streamz.readthedocs.io/en/latest/dataframes.html
https://hvplot.holoviz.org/user_guide/Streaming.html
https://panel.holoviz.org/user_guide/Deploy_and_Export.html
2021 년 2 월 7 일 양 소피아