Streamlit的第一个应用(二)(下)

简介: Streamlit的第一个应用(二)


7 所有乘车点的地图 🌍🚖


当我们使用直方图分析Uber数据集时,我们可以确定乘车最繁忙的时间段,但是如果我们想弄清楚城市中的乘车集中区域呢?虽然我们可以使用条形图来展示这些数据,但是这很难理解,除非你对城市的纬度和经度坐标非常熟悉。为了展示乘车集中情况,让我们使用Streamlit的st.map()函数将数据叠加在纽约市的地图上。

首先,在该部分下方添加一个子标题:

st.subheader('Map of all pickups')

接下来,使用st.map()函数来绘制地图:

st.map(data)

保存你的脚本。这个地图是完全交互式的。尝试使用平移和缩放功能来探索一下吧!


在绘制完直方图之后,你确定了最繁忙的乘车时间是下午17:00。让我们重新绘制地图,展示在17:00乘车点的集中情况。

在绘制完直方图之后,确定了最繁忙的乘车时间是下午17:00。让我们重新绘制地图,展示在17:00乘车点的集中情况。

hour_to_filter = 17
filtered_data = data[data[DATE_COLUMN].dt.hour == hour_to_filter]
st.subheader(f'{hour_to_filter}:00时的所有乘车点地图')
st.map(filtered_data)


当我们绘制地图时,用于过滤结果的时间是硬编码在代码中的,但是如果我们希望读者能够实时动态地过滤数据怎么办呢?使用Streamlit的小部件,你可以实现这个功能。让我们在应用程序中添加一个滑块,使用st.slider()方法。


首先,找到 hour_to_filter 的代码片段,并将其替换为:

hour_to_filter = st.slider('选择小时', 0, 23, 17)  # min: 0h, max: 23h, 默认为 17h

这段代码创建了一个滑块,它允许用户通过拖动滑块来选择小时数。滑块的范围是从0到23(表示0点到23点),默认值是17点。


保存你的代码,现在你可以使用滑块实时观察地图的更新了。

滑块只是动态更改应用程序组成部分的一种方式。让我们使用st.checkbox()函数向你的应用程序添加一个复选框。我们将使用这个复选框来在应用程序顶部显示/隐藏原始数据表格。


首先,找到下面的代码段:

st.subheader('Raw data')
st.write(data)

将其替换为以下代码:

if st.checkbox('显示原始数据'):
    st.subheader('原始数据')
    st.write(data)


这段代码创建了一个复选框,并且在复选框被选中时显示原始数据表格。如果复选框未被选中,则不显示原始数据表格。


保存你的脚本,现在你可以使用复选框来显示或隐藏原始数据表格了。


8 完整代码


import streamlit as st
import pandas as pd
import numpy as np
st.title('Uber在纽约市的搭车数据')
# 设置日期/时间列的名称
DATE_COLUMN = 'date/time'
# 定义数据集的URL地址
DATA_URL = ('https://s3-us-west-2.amazonaws.com/'
            'streamlit-demo-data/uber-raw-data-sep14.csv.gz')
@st.cache_data
# 定义加载数据的函数
def load_data(nrows):
    # 从指定URL下载数据,并将其加载到数据帧中
    data = pd.read_csv(DATA_URL, nrows=nrows)
    # 将列名称转换为小写
    lowercase = lambda x: str(x).lower()
    data.rename(lowercase, axis='columns', inplace=True)
    # 将日期/时间列转换为日期时间类型
    data[DATE_COLUMN] = pd.to_datetime(data[DATE_COLUMN])
    # 返回加载的数据帧
    return data
# 创建一个文本元素,告诉读者数据正在加载中。
data_load_state = st.text('正在加载数据...')
# 加载10,000行数据到数据帧中。
data = load_data(10000)
# 通知读者数据已成功加载。
data_load_state.text("Done! (using st.cache_data)")
if st.checkbox('显示原始数据'):
    st.subheader('原始数据')
    st.write(data)
st.subheader('每小时乘车次数')
# 使用NumPy生成一个直方图,按小时统计乘车时间
hist_values = np.histogram(
    data[DATE_COLUMN].dt.hour, bins=24, range=(0,24))[0]
# 通过Streamlit的st.bar_chart()方法绘制直方图
st.bar_chart(hist_values)
st.subheader('Map of all pickups')
st.map(data)
hour_to_filter = st.slider('选择小时', 0, 23, 17)  # min: 0h, max: 23h, 默认为 17h
filtered_data = data[data[DATE_COLUMN].dt.hour == hour_to_filter]
st.subheader(f'{hour_to_filter}:00时的所有乘车点地图')
st.map(filtered_data)


至此,创建streamlit的第一个应用的内容介绍完成,你还可以将项目上传至streamlit cloud,具体内容我会在后续的博文中讲解,还请大家三连呀~

相关文章
|
Python
Pyside6-第一篇-创建第一个窗口
Pyside6-第一篇-创建第一个窗口
356 0
|
15天前
|
Java Android开发 开发者
探索安卓开发:构建你的第一个“Hello World”应用
在安卓开发的浩瀚海洋中,每个新手都渴望扬帆起航。本文将作为你的指南针,引领你通过创建一个简单的“Hello World”应用,迈出安卓开发的第一步。我们将一起搭建开发环境、了解基本概念,并编写第一行代码。就像印度圣雄甘地所说:“你必须成为你希望在世界上看到的改变。”让我们一起开始这段旅程,成为我们想要见到的开发者吧!
24 0
|
4月前
|
数据采集 存储 JavaScript
构建你的第一个Python爬虫
【8月更文挑战第31天】 本文是一篇入门级教程,旨在帮助初学者了解和实现一个简单的网络爬虫。我们将使用Python编程语言,因为它简单易学且功能强大。通过这篇文章,你将学会如何使用Python的requests库获取网页内容,以及BeautifulSoup库解析HTML。最后,我们将展示如何存储爬取的数据。无论你是编程新手还是想扩展你的技术栈,这篇文章都会为你打开网络数据抓取的大门。
|
5月前
|
Python
python中调用函数时使用位置参数
【7月更文挑战第25天】
42 1
|
7月前
|
索引 Python
Python如何将列表元素转换为一个个变量
Python中,要将列表list中的元素转换为一个个变量的方法可能有很多,比如for循环,但这里将先介绍的一个是个人认为比较简单也非常直接的方法,就是通过直接将Python列表中的元素赋值给变量的方法来完成,先来通过一个简单的实例来看一下这个方法,至于该方法中存在的问题,将在实例后面进行介绍,实例如下
103 4
|
7月前
|
UED 开发者 Python
制作你的第一个 Python 游戏
想要制作一个 Python 游戏?这是一个令人兴奋的项目!在这篇文章中,我将引导你完成制作第一个 Python 游戏的步骤。即使你没有编程经验,也不用担心,我们将从基础开始,一起探索游戏开发的乐趣。
|
存储 Python
Python 程序的输出 | 第十八套(列表和元组)
Python 程序的输出 | 第十八套(列表和元组)
50 0
|
索引 Python
Python 程序的输出 | 第十二套(列表和元组)
Python 程序的输出 | 第十二套(列表和元组)
75 0
|
索引 Python
Python 程序的输出 | 第十三套(列表和元组续)
Python 程序的输出 | 第十三套(列表和元组续)
37 0
|
索引 Python
Python 程序的输出 | 第六套(列表)
Python 程序的输出 | 第六套(列表)
51 0