使用 Streamlit 製作3D 地圖資料科學APP - 1

閱讀時間約 9 分鐘
raw-image

Streamlit 在幾分鐘內將數據腳本轉換為可共享的 Web 應用程序。
全部使用純 Python。無需前端經驗。

不久前才被snowflake收購

GitHub - streamlit/demo-uber-nyc-pickups: A Streamlit demo to interactively visualize Uber pickups…
A Streamlit demo to interactively visualize Uber pickups in New York City - GitHub - streamlit/demo-uber-nyc-pickups: A…github.com

pip install — upgrade streamlit 
streamlit run https://raw.githubusercontent.com/streamlit/demo-uber-nyc-pickups/main/streamlit_app.py

使用上述指令會出現錯誤

改成

git clone https://github.com/streamlit/demo-uber-nyc-pickups.git
cd demo-uebr-nyc-pickups 
pip install -r requirements.txt
streamlit run streamlit_app.py

這邊先預設您已經使用了anaconda的環境

raw-image

生成端口 8501

raw-image

數據集

Uber Pickups in New York City
Trip data for over 20 million Uber (and other for-hire vehicle) trips in NYCwww.kaggle.com

此APP預設擷取10000筆資料

可以取消nrows=10000這項參數導入全部數據

app讀取時間如果拉長的話

或是一直都是running

試著重啟APP

# LOAD DATA ONCE
@st.experimental_singleton
def load_data():
data = pd.read_csv(
“uber-raw-data-sep14.csv.gz”,
nrows=10000, # approx. 10% of data
names=[
“date/time”,
“lat”,
“lon”,
], # specify names directly since they don’t change
skiprows=1, # don’t read header since names specified directly
usecols=[0, 1, 2], # doesn’t load last column, constant value “B02512”
parse_dates=[
“date/time”
], # set as datetime instead of converting after the fact
)
return data

導入模組

import streamlit as st
import pandas as pd
import numpy as np
import altair as alt
import pydeck as pdk

頁面內容應該如何佈局。默認為“centered”,將元素約束為固定寬度的居中列;“wide”使用整個屏幕。

st.set_page_config(layout=”wide”)

存儲單例對象的函數裝飾器

@st.experimental_singleton
# LAYING OUT THE TOP SECTION OF THE APP
row1_1, row1_2 = st.columns((2, 3))
with row1_1:
st.title(“NYC Uber Ridesharing Data”)
hour_selected = st.slider(“Select hour of pickup”, 0, 23)
with row1_2:
st.write(
“””
##
Examining how Uber pickups vary over time in New York City’s and at its major regional airports.
By sliding the slider on the left you can view different slices of time and explore different transportation trends.
“””
)

以上程式碼對應下圖功能

raw-image
# LAYING OUT THE MIDDLE SECTION OF THE APP WITH THE MAPS
row2_1, row2_2, row2_3, row2_4 = st.columns((2, 1, 1, 1))
# SETTING THE ZOOM LOCATIONS FOR THE AIRPORTS
la_guardia = [40.7900, -73.8700]
jfk = [40.6650, -73.7821]
newark = [40.7090, -74.1805]
zoom_level = 12
midpoint = mpoint(data[“lat”], data[“lon”])
with row2_1:
st.write(
f”””**All New York City from {hour_selected}:00 and {(hour_selected + 1) % 24}:00**”””
)
map(filterdata(data, hour_selected), midpoint[0], midpoint[1], 11)
with row2_2:
st.write(“**La Guardia Airport**”)
map(filterdata(data, hour_selected), la_guardia[0], la_guardia[1], zoom_level)
with row2_3:
st.write(“**JFK Airport**”)
map(filterdata(data, hour_selected), jfk[0], jfk[1], zoom_level)
with row2_4:
st.write(“**Newark Airport**”)
map(filterdata(data, hour_selected), newark[0], newark[1], zoom_level)

以上程式碼對應下圖功能

產生pydeck提供的地圖套件

raw-image
# CALCULATING DATA FOR THE HISTOGRAM
chart_data = histdata(data, hour_selected)
# LAYING OUT THE HISTOGRAM SECTION
st.write(
f”””**Breakdown of rides per minute between {hour_selected}:00 and {(hour_selected + 1) % 24}:00**”””
)
st.altair_chart(
alt.Chart(chart_data)
.mark_area(
interpolate=”step-after”,
)
.encode(
x=alt.X(“minute:Q”, scale=alt.Scale(nice=False)),
y=alt.Y(“pickups:Q”),
tooltip=[“minute”, “pickups”],
)
.configure_mark(opacity=0.2, color=”red”),
use_container_width=True,
)

以上程式碼對應下圖功能

raw-image
#再導入以下模組
#這個模組可以使用PANDAS進行快速探索性數據分析
import pandas_profiling #元套件
#st的組件
from streamlit_pandas_profiling import st_profile_report 

pandas profiling 模組可以使用PANDAS進行快速探索性數據分析

pr = data.profile_report()
st_profile_report(pr)

CTRL+S 儲存

便會生成以下資訊

  • 類型推斷:檢測數據框中列的類型。
  • 要點:類型、唯一值、缺失值
  • 分位數統計,例如最小值、Q1、中位數、Q3、最大值、範圍、四分位間距
  • 描述性統計,如均值、眾數、標準差、總和、中值絕對差、變異係數、峰度、偏度
  • 最常見的值
  • 直方圖
  • 突出高度相關變量、Spearman、Pearson 和 Kendall 矩陣的相關性
  • 缺失值矩陣、計數、熱圖和缺失值樹狀圖
  • 文本分析了解文本數據的類別(大寫、空格)、腳本(拉丁文、西里爾文)和塊 (ASCII)。
  • 文件和圖像分析提取文件大小、創建日期和尺寸,並掃描截斷的圖像或包含 EXIF 信息的圖像。
raw-image
raw-image

如果我的文章對你幫助

請給我一點掌聲

謝謝!

作者:黃翊鈜 Roy Hwang

經歷:ML engineer , AI engineer

    0會員
    24內容數
    留言0
    查看全部
    發表第一個留言支持創作者!
    你可能也想看
    使用紫妍萃第一型膠原蛋白精華凝露的使用體驗 | 陳菊安陳菊安分享她使用紫妍萃第一型膠原蛋白精華凝露的使用體驗,純粹的第一型膠原蛋白能全面改善肌膚問題,質地輕盈且易吸收,是值得推薦的護膚產品。
    Thumbnail
    avatar
    陳菊安
    2024-06-20
    使用 VBA 進行檔案操作:新增、刪除與移動Visual Basic for Applications(VBA)是一種功能強大的程式語言,廣泛用於自動化 Microsoft Office 應用程式中的重複性任務。在這篇教學文章中,我們將介紹如何使用 VBA 來新增、刪除和移動檔案。
    Thumbnail
    avatar
    Pochi
    2024-06-17
    使用Wix網站架設好嗎?Wix網站設計平台:優缺點解析 Wix架設網站的優點 Wix最大的特色在於其簡單易用的拖放式編輯工具,這使得即便是不會寫程式的新手,也能輕鬆打造出美觀的網站,無論是為品牌還是個人用途。 Wix架設網站的缺點 然而,使用Wix架設網站也有一些缺點。免費版本的功能較為有限,且會有廣告,許多設計模
    Thumbnail
    avatar
    Arthur
    2024-06-14
    【使用Obsidian 5年後,我的3個重大发現】無論是學術工作者還是生活愛好者, 都能從這篇文章中找到使用Obsidian的好處。 這篇文章將揭示如何有效地管理和利用資訊。 透過實踐, Obsidian已成為我生活與工作中的重要工具。 ▋發現1 - 高效的學術閱讀管理 在學術工作中, 我利用Obsidia
    avatar
    王啟樺
    2024-06-12
    使用 Gemini AI 聊天整理 YouTube 影片摘要使用 Gemini AI 聊天服務時,點擊「設定>擴充功能」啟用「YouTube」功能,即可在對話中利用 @YouTube 指令尋找 YouTube 影片和詢問內容。
    Thumbnail
    avatar
    xiaoyao
    2024-06-12
    【使用GPT-4三個月後,我認為他會從根本改變每個人寫作方式的3個體悟】GPT-4對每日寫作的人,是一個超強大的工具! AI讓寫作變得更輕鬆高效,更愛寫,更想寫。 這3個月與GPT-4一起寫作的日子,我體悟了3個深刻收穫:
    Thumbnail
    avatar
    王啟樺
    2023-05-12
    【使用了提詞自由寫作4個月,激發了我無窮創意的3大收穫】提詞自由寫作(Prompted Freewriting) 是一種創新的寫作方法,以模板和提示來引導我們展開想像,激發寫作創意! 嘗試提詞自由寫作4個月後,我獲得了以下3大收穫: 收穫1 - 快速點燃內心的想像力:透過自己寫過的筆記、發表的文章,以及欣賞他人的佳作,作為寫作的提示,讓我在寫作過程中不斷
    Thumbnail
    avatar
    王啟樺
    2023-04-16
    【使用Obsidian22個月以後,讓我重新領悟寫作過程的3個核心價值】Obsidian的強大連結筆記功能,不僅改變了我的知識管理方式,同時也重新塑造了我對寫作過程的理解。 在使用Obsidian的過程中,我漸漸體會到寫作過程中的三個重要層面,它們分別是: 體悟1 - 預寫階段:跨越觀點的融合:透過Obsidian的連結筆記,我能深入了解他人觀點,並將其納入我的文章框架
    Thumbnail
    avatar
    王啟樺
    2023-04-13
    使用 AI 無損放大圖片!用 real-esrgan 將小圖放大至極致!簡介 「Real-ESRGAN」是一個非常方便的影像處理工具,它可以讓你把小圖片無損地放大成大圖片。 如果你曾經在網絡上搜索圖片,你可能會發現很多圖片都是很小的,而且放大後會變得模糊不清。這時候,你可以使用「Real-ESRGAN」來幫助你解決這個問題。 這個專案是由騰訊 ARC Lab 團隊開源的
    Thumbnail
    avatar
    Bobo Chen
    2023-03-06
    使用SPSS分割資料將數據集分割成多個檔案有很多原因:方便管理: 如果數據集很大,分割數據集可以更容易地管理記錄。分享數據: 如果您要與其他人分享數據集,分割成多個文件可以更容易分享。比較不同族群:有時候我們想看不同族群在統計結果上的差異。總之,將數據集分割成多個檔案可以更容易管理和分析數據,並提高效率。
    Thumbnail
    avatar
    Dr. Rover
    2023-01-22