入门指南:使用Streamlit创建交互式数据应用程序
Streamlit是一个强大的Python库,它使得创建交互式的数据应用程序和数据可视化变得轻而易举。无论你是数据分析师、机器学习工程师,还是想要为数据添加一个动态的外观,Streamlit都是一个强大的工具。本文将带你逐步了解Streamlit的安装和主要功能,帮助你入门这个令人兴奋的库。
一、安装Streamlit
在开始之前,请确保你已经安装了Python。然后,你可以按照以下步骤来安装Streamlit:
打开终端(命令行界面)。
输入以下命令并按下回车键:
安装完成后,你就可以开始使用Streamlit了。
二、Streamlit功能
1、数据可视化
当使用Streamlit进行数据可视化时,你可以将数据转化为各种类型的图表和图像,以更好地理解和传达信息。Streamlit提供了多个函数和工具,使得创建折线图、柱状图、散点图、地图等各种类型的图表变得非常简单。以下是一些常见的数据可视化示例,以及如何使用Streamlit来创建它们:
1)、折线图
折线图是显示数据随时间或其他连续变量的变化趋势的有效方式。在Streamlit中,你可以使用st.line_chart()
函数来创建折线图。以下是一个创建折线图的示例:
在这个示例中,我们首先导入了streamlit
和pandas
库。然后,我们创建了一个示例的数据字典,并用pd.DataFrame
创建了一个Pandas DataFrame对象。最后,我们使用st.title()
设置标题,并使用st.line_chart()
展示销售趋势的折线图。
2)、柱状图
柱状图用于比较不同类别的数据之间的差异。在Streamlit中,你可以使用st.bar_chart()
函数来创建柱状图。以下是一个创建柱状图的示例:
在这个示例中,我们使用st.title()
设置标题,并使用st.bar_chart()
展示产品销售的柱状图。注意,我们使用了set_index()
来将"Product"列设置为索引,以便在柱状图中以产品名称为标签。
3)、散点图
散点图用于显示两个变量之间的关系,每个点代表一个数据点。在Streamlit中,你可以使用st.scatter_chart()
函数来创建散点图。以下是一个创建散点图的示例:
在这个示例中,我们使用st.title()
设置标题,并使用st.scatter_chart()
展示身高与体重之间的关系的散点图。通过指定x
和y
参数,我们可以设置散点图的横轴和纵轴变量。
4)、地图可视化
地图可视化用于展示地理分布和位置数据。在Streamlit中,你可以使用st.map()
函数来在地图上显示数据点。以下是一个展示城市销售地点的地图可视化的示例:
在这个示例中,我们使用st.title()
设置标题,并使用st.map()
展示城市销售地点的地图。数据中的纬度和经度信息将被用来定位数据点在地图上的位置。
通过这些示例,你可以看到Streamlit是如何提供简单的方法来创建各种类型的数据可视化,从而帮助你更好地理解和传达数据的信息。你可以根据实际需求,使用不同的图表类型和数据,创造出各种各样的数据可视化效果。
2、交互式小部件
交互式小部件是Streamlit的一个强大功能,它允许你在应用程序中添加交互式元素,使用户能够在应用程序中进行选择、输入和操作。这些小部件使你的应用程序更加动态和可定制。以下是一些常见的交互式小部件,以及如何在Streamlit中使用它们:
1)、文本输入框
文本输入框允许用户输入文本信息。你可以使用st.text_input()
函数创建文本输入框。
在这个示例中,用户可以在文本输入框中输入他们的姓名。st.text_input()
函数接受一个标签(用于显示在输入框旁边),并返回用户输入的文本。
2)、数字输入框
数字输入框允许用户输入数字。你可以使用st.number_input()
函数创建数字输入框。
在这个示例中,用户可以在数字输入框中输入他们的年龄。st.number_input()
函数接受一个标签、最小值和最大值,返回用户输入的数字。
3)、下拉菜单
下拉菜单允许用户从预定义选项中进行选择。你可以使用st.selectbox()
函数创建下拉菜单。
在这个示例中,用户可以从给定的选项中选择性别。st.selectbox()
函数接受一个标签和选项列表,返回用户选择的项。
4)、多选框
多选框允许用户从多个选项中进行多项选择。你可以使用st.multiselect()
函数创建多选框。
在这个示例中,用户可以从多个选项中选择他们的兴趣。st.multiselect()
函数接受一个标签和选项列表,返回用户选择的项。
5)、滑动条
滑动条允许用户在一个范围内选择一个值。你可以使用st.slider()
函数创建滑动条。
在这个示例中,用户可以在0到10的范围内选择一个评分值。st.slider()
函数接受一个标签、最小值、最大值和初始值,返回用户选择的值。
通过这些示例,你可以看到Streamlit的交互式小部件是如何让你与用户进行实时的交互和反馈的。你可以根据实际需求,选择合适的小部件类型,为你的应用程序添加更多交互性和用户友好性。
3、数据表格展示
数据表格展示是Streamlit中的一个重要功能,它允许你以表格形式呈现数据,让用户能够查看和分析数据。你可以使用st.table()
函数将Pandas DataFrame或其他表格数据显示在应用程序中。以下是关于如何在Streamlit中展示数据表格的详细讲解:
1)、展示Pandas.DataFrame
你可以使用st.table()
函数来展示一个Pandas.DataFrame。以下是一个示例:
在这个示例中,我们首先导入了streamlit
和pandas
库。然后,我们创建了一个示例的数据字典,并用pd.DataFrame
创建了一个Pandas DataFrame对象。最后,我们使用st.title()
设置标题,使用st.write()
添加说明文字,以及使用st.table()
展示数据表格。
2)、自定义数据格式
Streamlit允许你自定义展示表格的样式,以适应你的应用程序外观。你可以使用st.table()
的use_container_width
参数,将表格的宽度设置为容器的宽度,以确保表格适应应用程序的布局。
在这个示例中,我们通过将use_container_width
参数设置为True
,将表格的宽度设置为容器的宽度。这样可以确保表格不会过宽,与应用程序的布局保持一致。
3)、数据表格的交互
尽管st.table()
默认是静态的,但你可以通过一些技巧增加数据表格的交互性。例如,你可以使用st.dataframe()
函数将Pandas DataFrame转化为一个可滚动的数据表格,允许用户浏览大量数据。
在这个示例中,我们使用st.dataframe()
函数将Pandas DataFrame转化为一个可滚动的数据表格,使用户能够浏览较大的数据集。
通过这些示例,你可以看到如何在Streamlit中展示数据表格,并根据需要自定义样式和交互性。展示数据表格可以帮助你向用户传达数据,使他们能够更好地理解和分析数据。
4、文本和说明
在Streamlit中,你可以使用文本和说明来为你的应用程序添加标题、段落、注释和其他文字内容,以帮助用户更好地理解数据和应用程序的功能。以下是关于如何使用文本和说明的详细讲解:
1)、添加标题
你可以使用st.title()
函数来设置应用程序的标题。
在这个示例中,我们使用st.title()
设置了一个标题,用于欢迎用户使用应用程序。
2)、添加段落文字
你可以使用st.write()
函数来添加段落和说明文字。
在这个示例中,我们使用st.write()
函数添加了一些段落和说明文字,以向用户解释应用程序的用途和功能。
3)、使用markdown语法
除了普通的文本,你还可以使用Markdown语法来添加更丰富的文本样式,如标题、链接、列表等。
在这个示例中,我们使用st.markdown()
函数来添加使用Markdown语法的文本。通过Markdown语法,你可以创建更具有格式的文本内容。
4)、使用HTML标签
如果你需要更高级的文本格式控制,你还可以使用HTML标签来添加文本内容。
在这个示例中,我们使用unsafe_allow_html=True
参数来允许使用HTML标签。这样,你可以自定义文本的样式和格式。
5)、说明文字的排版
通过结合使用不同的文本和说明函数,你可以创建丰富多样的文本内容,以满足不同的展示需求。你可以在不同的地方添加标题、段落、链接等,以便向用户提供更多信息。
通过这些方法,你可以在Streamlit应用程序中添加各种类型的文本和说明,以帮助用户更好地理解你的数据和应用程序的功能。
5、交互式过滤和筛选
在Streamlit中,你可以使用交互式小部件来实现数据的过滤和筛选,以便用户可以根据自己的需求选择不同条件下的数据。这样的功能使用户能够在不同视角下查看数据,更好地分析和理解数据集。以下是关于如何实现交互式过滤和筛选的详细讲解:
1)、使用下拉菜单
使用下拉菜单(st.selectbox()
函数)是一种常见的方式来实现交互式筛选。下面是一个示例,展示如何根据用户选择来筛选产品销售数据:
在这个示例中,用户可以从下拉菜单中选择一个产品名称,然后根据选择来展示相应的销售数据。通过使用st.selectbox()
函数和条件筛选,你可以在应用程序中实现交互式的过滤功能。
2)、使用滑动条和多选框
除了下拉菜单,你还可以使用滑动条(st.slider()
函数)和多选框(st.multiselect()
函数)来实现不同类型的过滤。以下是一个示例,展示如何使用滑动条和多选框来过滤用户年龄数据:
在这个示例中,用户可以使用滑动条设置最小和最大年龄,以及使用多选框选择特定年龄。根据用户选择的过滤条件,应用程序将展示相应的数据。通过结合不同的交互式小部件,你可以创建更复杂的过滤和筛选功能。
交互式过滤和筛选可以使用户在应用程序中自由选择不同条件下的数据,从而更好地理解数据集的特点。你可以根据你的数据和应用场景,使用不同的交互式小部件来创建个性化的过滤体验。通过这些方法,你可以为用户提供一种更加交互式和灵活的数据浏览方式。
6、实时数据更新
在Streamlit中,你可以实现实时数据更新,即当用户与应用程序进行交互时,数据和可视化结果可以实时地进行更新,以呈现最新的信息。这样的功能可以使用户在交互中获得实时反馈,更好地理解数据的变化。以下是关于如何实现实时数据更新的详细讲解:
1)、利用小部件的状态
Streamlit中的小部件是状态感知的,这意味着它们可以在应用程序运行过程中保持状态。你可以利用小部件的状态来实现数据的实时更新。以下是一个示例,展示如何创建一个实时更新的计数器:
在这个示例中,我们使用st.number_input()
创建一个输入框,用户可以输入计数器的初始值。然后,我们使用st.button()
创建一个按钮,当用户点击按钮时,计数器的值将增加,并且实时显示在页面上。
2)、使用小部件回调函数
为了实现更复杂的实时数据更新,你可以使用小部件回调函数。小部件回调函数会在小部件的值发生变化时被调用,你可以在回调函数中更新相关的数据和可视化结果。以下是一个示例,展示如何创建一个实时数据可视化,当用户调整滑动条时,图表会实时更新:
在这个示例中,我们使用st.slider()
创建一个滑动条,允许用户选择频率。然后,我们在小部件回调函数中实时更新图表,根据用户选择的频率来显示不同的正弦曲线。
实时数据更新可以让用户在与应用程序交互时获得即时的反馈,使用户能够更直观地理解数据的变化。无论是简单的计数器还是复杂的数据可视化,你都可以使用Streamlit的小部件和回调函数来实现实时数据更新,为用户提供更好的交互体验。
7 、图像展示
在Streamlit中,你可以使用各种图像展示技术来向用户展示图像,包括照片、图表、绘图等。图像展示可以帮助用户更生动地理解数据和信息。以下是关于如何在Streamlit中进行图像展示的详细说明:
1)、展示静态图像
你可以使用st.image()
函数来展示静态图像,例如照片、图表、logo等。以下是一个示例,展示如何展示一张静态图片:
在这个示例中,我们使用st.image()
函数展示了一张示例图片。通过指定caption
参数和use_column_width=True
,你可以添加图像的标题和使图像宽度自适应应用程序的布局。
2)、展示动态图像
你还可以展示动态图像,例如使用Matplotlib创建的动态图表。以下是一个示例,展示如何展示一个动态的正弦曲线图:
在这个示例中,我们首先创建了一个动态图像,展示了正弦曲线。然后,我们在一个循环中更新图像的数据,从而实现动态效果。
3)、图像交互和可视化
结合小部件和图像展示,你可以创建交互式的图像可视化。以下是一个示例,展示如何使用滑动条来调整图像的显示效果:
在这个示例中,用户可以使用滑动条来调整正弦曲线的振幅,实时观察图像的变化。
通过图像展示,你可以向用户呈现图像、图表和可视化结果,使他们更好地理解数据和信息。无论是静态图像还是动态图表,你都可以使用Streamlit的图像展示功能来创造生动的交互体验。
8、集成外部资源
在Streamlit中,你可以集成外部资源,如文档、链接和嵌入式内容,以丰富你的应用程序。这样可以使用户能够获取更多信息,与其他内容进行互动,或者展示来自其他平台的数据。以下是关于如何在Streamlit中集成外部资源的详细讲解:
1)、链接和文本
你可以使用st.write()
函数来添加链接和文本,以将用户引导到其他资源或提供更多信息。以下是一个示例,展示如何添加外部链接和文本说明:
在这个示例中,我们使用st.write()
函数添加了一个外部链接,指向Streamlit官方网站。用户可以点击链接以获取更多信息。
2)、嵌入式内容
你还可以使用st.markdown()
函数来嵌入Markdown格式的内容,以显示嵌入式资源,如YouTube视频、图表等。以下是一个示例,展示如何嵌入YouTube视频:
在这个示例中,我们使用st.markdown()
函数嵌入了一个YouTube视频,用户可以直接在应用程序中观看视频。
3)、显示外部图片
你可以使用st.image()
函数来展示外部图片,例如通过URL加载的图像。以下是一个示例,展示如何展示一张外部图片:
在这个示例中,我们使用st.image()
函数展示了一个通过URL加载的外部图片。
通过集成外部资源,你可以为你的应用程序添加额外的内容和互动性,使用户能够访问其他有关信息、观看媒体内容或与外部数据进行交互。这可以为用户提供更丰富的体验和信息。
9、自定义样式
在Streamlit中,你可以通过自定义样式来使你的应用程序与品牌一致,或者以独特的方式呈现。你可以使用CSS样式表来调整应用程序的外观和布局。以下是关于如何在Streamlit中进行自定义样式的详细讲解:
1)、自定义CSS样式
你可以通过在Streamlit应用程序中使用HTML和CSS代码来自定义样式。你可以使用st.markdown()
函数添加包含HTML和CSS代码的Markdown文本。以下是一个示例,展示如何自定义按钮的颜色:
在这个示例中,我们使用st.markdown()
函数添加了包含自定义CSS代码的Markdown文本。然后,我们在应用程序中使用HTML代码来创建一个自定义样式的按钮。
2)、使用外部CSS文件
如果你有一个独立的CSS文件,你可以使用st.markdown()
函数中的<link>
标签将其导入到应用程序中。以下是一个示例,展示如何使用外部CSS文件来自定义样式:
*首先,在与应用程序相同的目录下,创建一个名为styles.css
的CSS文件,并添加自定义样式代码。
*在Streamlit应用程序中,使用st.markdown()
函数导入外部CSS文件:
在这个示例中,我们在应用程序中使用st.markdown()
函数导入了外部CSS文件。然后,我们在应用程序中使用HTML代码来应用自定义样式。
3)、自定义全局样式
除了单独的组件样式外,你还可以使用st.markdown()
来自定义全局样式。以下是一个示例,展示如何自定义全局字体和颜色:
在这个示例中,我们使用st.markdown()
函数来应用自定义的全局样式,包括字体和颜色。
4)、自定义样式的注意事项
当你使用自定义样式时,确保它不会影响到Streamlit的核心布局和功能,以免产生不可预测的结果。
了解HTML和CSS基础是非常有帮助的,这样你可以更好地掌控自定义样式。
在添加不安全的HTML和CSS代码时,使用
unsafe_allow_html=True
参数来明确表示你的意图。
通过自定义样式,你可以将你的Streamlit应用程序变得更加独特和个性化,以便更好地与你的品牌或主题保持一致。
10、结论
通过本文,你已经了解了如何安装Streamlit以及它的主要功能,包括数据可视化、交互式小部件、数据表格展示、文本和说明、交互式过滤和筛选、实时数据更新、图像展示、集成外部资源、自定义样式和部署。现在,你可以开始创建你自己的交互式数据应用程序了!