streamlit
515 строк · 17.3 Кб
1# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2024)
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15import datetime16import random17
18import numpy as np19import pandas as pd20
21import streamlit as st22
23np.random.seed(0)24random.seed(0)25
26st.set_page_config(layout="wide")27
28# Generate a random dataframe
29df = pd.DataFrame(30np.random.randn(5, 5),31columns=("col_%d" % i for i in range(5)),32)
33
34
35st.header("Hide index parameter:")36st.dataframe(df, hide_index=True)37st.dataframe(df, hide_index=False)38
39st.header("Column order parameter:")40st.dataframe(df, column_order=["col_4", "col_3", "col_0"])41
42st.header("Set column labels:")43st.dataframe(44df,45column_config={46"_index": "Index column",47"col_0": "Column 0",48"col_2": st.column_config.Column("Column 1"),49},50)
51
52st.header("Hide columns:")53st.dataframe(df, column_config={"col_1": None, "col_3": {"hidden": True}})54
55st.header("Set column width:")56st.dataframe(57df,58column_config={59"col_0": st.column_config.Column(width="small"),60"col_1": st.column_config.Column(width="medium"),61"col_4": {"width": "large"},62},63)
64
65st.header("Set help tooltips:")66st.caption("Hover over the column headers to see the tooltips.")67st.dataframe(68pd.DataFrame(69{70"col_0": ["a", "b", "c", None],71}72),73column_config={74"col_0": st.column_config.Column(help="This :red[is] a **tooltip** 🌟"),75"_index": {"help": "Index tooltip!"},76},77)
78
79
80st.header("Ignore editing-only config options:")81st.dataframe(82pd.DataFrame(83{84"col_0": ["a", "b", "c", None],85}86),87column_config={"col_0": st.column_config.Column(disabled=False, required=True)},88)
89
90
91st.header("Text column:")92
93st.dataframe(94pd.DataFrame(95{96"col_0": ["Hello World", "Lorem ipsum", "", None],97"col_1": [1, 2, 3, None],98}99),100column_config={101"col_0": st.column_config.TextColumn(102"Text column",103width="medium",104help="This is a text column",105required=True, # Should be ignored106disabled=False, # Should be ignored107default="invalid", # Should be ignored108max_chars=5, # Should be ignored109validate="^[0-9]+$", # Should be ignored110),111"col_1": st.column_config.TextColumn(),112},113)
114
115st.header("Number column:")116st.dataframe(117pd.DataFrame(118{119"col_0": [1, 2, 3, None],120"col_1": ["1", "2", "invalid", None],121}122),123column_config={124"col_0": st.column_config.NumberColumn(125"Number column",126width="medium",127help="This is a number column",128required=True, # Should be ignored129disabled=False, # Should be ignored130default=0, # Should be ignored131min_value=5, # Should be ignored132max_value=10, # Should be ignored133step=0.001,134),135"col_1": st.column_config.NumberColumn(136format="%.2f%%",137),138},139)
140
141st.header("Checkbox column:")142st.dataframe(143pd.DataFrame(144{145"col_0": [True, False, False, None],146"col_1": ["yes", "no", "invalid", None],147}148),149column_config={150"col_0": st.column_config.CheckboxColumn(151"Checkbox column",152width="medium",153help="This is a checkbox column",154required=True, # Should be ignored155disabled=False, # Should be ignored156default=True, # Should be ignored157),158"col_1": st.column_config.CheckboxColumn(),159},160)
161
162st.header("Selectbox column:")163
164st.dataframe(165pd.DataFrame(166{167"col_0": [1, 2, 3, None],168"col_1": ["a", "b", "c", None],169}170),171column_config={172"col_0": st.column_config.SelectboxColumn(173"Selectbox column",174width="medium",175help="This is a selectbox column",176required=True, # Should be ignored177disabled=False, # Should be ignored178default=True, # Should be ignored179options=[1, 2, 3, 4, 5],180),181"col_1": st.column_config.SelectboxColumn(),182},183)
184
185st.header("Link column:")186
187st.dataframe(188pd.DataFrame(189{190"col_0": [191"https://streamlit.io/",192"https://docs.streamlit.io/",193"https://streamlit.io/gallery",194None,195],196"col_1": ["/a", "/b", "", None],197"col_2": [198"https://roadmap.streamlit.app",199"https://extras.streamlit.app",200"",201None,202],203"col_3": [204"https://roadmap.streamlit.app",205"https://extras.streamlit.app",206"",207None,208],209}210),211column_config={212"col_0": st.column_config.LinkColumn(213"Link column",214width="medium",215help="This is a link column",216required=True, # Should be ignored217disabled=False, # Should be ignored218default="https://streamlit.io/", # Should be ignored219max_chars=5, # Should be ignored220validate="^[0-9]+$", # Should be ignored221),222"col_1": st.column_config.LinkColumn(),223"col_2": st.column_config.LinkColumn(224"Display text via Regex",225display_text="https://(.*?)\.streamlit\.app",226),227"col_3": st.column_config.LinkColumn(228"Static display text",229display_text="Open link",230),231},232)
233
234st.header("Datetime column:")235
236st.dataframe(237pd.DataFrame(238{239"col_0": [240datetime.datetime(2021, 1, 1, 1, 0, 0, 123000),241datetime.datetime(2022, 1, 2, 2, 0, 0, 234000),242datetime.datetime(2023, 1, 3, 3, 0, 0, 345000),243None,244],245"col_1": [246"2021-01-01T01:00:00.123",247"2022-01-02T02:00:00.234",248"invalid",249None,250],251"col_2": [252datetime.date(2021, 1, 1),253datetime.date(2022, 1, 2),254datetime.date(2023, 1, 3),255None,256],257}258),259column_config={260"col_0": st.column_config.DatetimeColumn(261"Datetime column",262width="medium",263help="This is a datetime column",264required=True, # Should be ignored265disabled=False, # Should be ignored266default=datetime.datetime(2021, 1, 1, 1, 0, 0), # Should be ignored267min_value=datetime.datetime(2021, 1, 1, 1, 0, 0), # Should be ignored268max_value=datetime.datetime(2022, 1, 1, 1, 0, 0), # Should be ignored269step=0.01,270format="YYYY-MM-DD HH:mm:ss.SSS",271),272"col_1": st.column_config.DatetimeColumn(273step=0.01,274),275"col_2": st.column_config.DatetimeColumn(),276},277)
278
279st.header("Date column:")280
281st.dataframe(282pd.DataFrame(283{284"col_0": [285datetime.date(2021, 1, 1),286datetime.date(2022, 1, 2),287datetime.date(2023, 1, 3),288None,289],290"col_1": [291"2021-01-01T01:00:00",292"2022-01-02T02:00:00",293"invalid",294None,295],296"col_2": [297datetime.datetime(2021, 1, 1, 1, 0, 0, 123000),298datetime.datetime(2022, 1, 2, 2, 0, 0, 234000),299datetime.datetime(2023, 1, 3, 3, 0, 0, 345000),300None,301],302}303),304column_config={305"col_0": st.column_config.DateColumn(306"Date column",307width="medium",308help="This is a date column",309required=True, # Should be ignored310disabled=False, # Should be ignored311default=datetime.date(2021, 1, 1), # Should be ignored312min_value=datetime.date(2021, 1, 1), # Should be ignored313max_value=datetime.date(2022, 1, 1), # Should be ignored314step=2, # Should be ignored315),316"col_1": st.column_config.DateColumn(),317"col_2": st.column_config.DateColumn(),318},319)
320
321st.header("Time column:")322
323st.dataframe(324pd.DataFrame(325{326"col_0": [327datetime.time(1, 2, 0, 123000),328datetime.time(2, 3, 0, 234000),329datetime.time(3, 4, 0, 345000),330None,331],332"col_1": [333"2021-01-01T01:02:00",334"2022-01-02T02:03:00",335"invalid",336None,337],338"col_2": [339datetime.datetime(2021, 1, 1, 1, 0, 0, 123000),340datetime.datetime(2022, 1, 2, 2, 0, 0, 234000),341datetime.datetime(2023, 1, 3, 3, 0, 0, 345000),342None,343],344}345),346column_config={347"col_0": st.column_config.TimeColumn(348"Time column",349width="medium",350help="This is a time column",351required=True, # Should be ignored352disabled=False, # Should be ignored353default=datetime.time(1, 2, 0), # Should be ignored354min_value=datetime.time(1, 2, 0), # Should be ignored355max_value=datetime.time(1, 3, 0), # Should be ignored356step=datetime.timedelta(milliseconds=1),357),358"col_1": st.column_config.TimeColumn(359format="HH:mm",360),361"col_2": st.column_config.TimeColumn(),362},363)
364
365st.header("Progress column:")366
367st.dataframe(368pd.DataFrame(369{370"col_0": [0.1, 0.4, 1.1, None],371"col_1": ["200", "550", "1000", None],372}373),374column_config={375"col_0": st.column_config.ProgressColumn(376"Progress column",377width="medium",378help="This is a progress column",379),380"col_1": st.column_config.ProgressColumn(381format="$%f", min_value=0, max_value=1000382),383},384)
385
386st.header("List column:")387
388st.dataframe(389pd.DataFrame(390{391"col_0": [[1, 2], [2, 3, 4], [], None],392"col_1": ["a,b", "c,d,e", "", None],393}394),395column_config={396"col_0": st.column_config.ListColumn(397"List column",398width="medium",399help="This is a list column",400),401"col_1": st.column_config.ListColumn(),402},403)
404
405st.header("Bar chart column:")406
407st.dataframe(408pd.DataFrame(409{410"col_0": [[1, 5, 2], [2, 3, 5, -4, -5], [], None],411"col_1": ["1,2,3,4", "6, 5, 1, 10", "invalid", None],412}413),414column_config={415"col_0": st.column_config.BarChartColumn(416"Bar chart column",417width="medium",418help="This is a bar chart column",419y_min=-5,420y_max=5,421),422"col_1": st.column_config.BarChartColumn(),423},424)
425
426
427st.header("Line chart column:")428
429st.dataframe(430pd.DataFrame(431{432"col_0": [[1, 5, 2], [2, 3, 5, -4, -5], [], None],433"col_1": ["1,2,3,4", "6, 5, 1, 10", "invalid", None],434}435),436column_config={437"col_0": st.column_config.LineChartColumn(438"Line chart column",439width="medium",440help="This is a line chart column",441y_min=-5,442y_max=5,443),444"col_1": st.column_config.LineChartColumn(),445},446)
447
448st.header("Area chart column:")449
450st.dataframe(451pd.DataFrame(452{453"col_0": [[1, 5, 2], [2, 3, 5, -4, -5], [], None],454"col_1": ["1,2,3,4", "6, 5, 1, 10", "invalid", None],455}456),457column_config={458"col_0": st.column_config.AreaChartColumn(459"Area chart column",460width="medium",461help="This is an area chart column",462y_min=-5,463y_max=5,464),465"col_1": st.column_config.AreaChartColumn(),466},467)
468
469
470st.header("Image column:")471
472st.dataframe(473pd.DataFrame(474{475"col_0": [476"https://streamlit.io/images/brand/streamlit-mark-color.png",477"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAABSCAMAAACBpt1yAAAAwFBMVEVHcEyAhJWAhJUzNT97f4+AhJWAhJVtcH9WWWaAhJWAhJWAhJVCRFGAhJWAhJWAhJVVWGeAhJWAhJWAhJVVWGcmJzCAhJWAhJWAhJUmJzAmJzBVWGcmJzAmJzAmJzAmJzAmJzCAhJUmJzBVWGcmJzAmJzAmJzBVWGeAhJVVWGdVWGdVWGeAhJVVWGdVWGdVWGdvcoJVJ2WAhJVVWGcmJzBTVmVaXWx8f5B1eYlhZHNoa3tDRVI3OUQtLzhucoJMT13kXsyQAAAAMXRSTlMA+SYWE/ExBQvmfME1P7Uc9lhpjSdsTZ7cnETlsyP6xvHNg7XXV+bYq6NjTtR1yJLh8/IzCQAABHhJREFUaN7Nmut2mkAYRZGLIMQbRMFbvMQYkmjS9YFJU23z/m9VwEpgGJgZYLo4/2ratXbdhyNMFIS68jzzXm+EpuVl5nne623DqKRXL8yb2iyst4jKG7w0S+HgguU93jZPYZin5mhU32Iqb/DcPIWN0phQGGnUGqewQRpTChuj8fbVQ1ODRnVsDeUaFVbXuBhtpsJYgZYxLP3fUzMKK2qURlvf3wkWBGn1xiVX8PbRw6WsRmm09MOE71YYxe2qNSmMUkqj9rC8i6hWgmzAJYrdVqtfhRU0ag/zC5TvzwVBh2s6drsehWHuGTVq0xjKXz0IgtiBbzBLZFL45OWHSaM6naz8OEspeMWGRBydAex5UIA1Y7iDvklC+f4ofG3cSnLBXu9XV8ik8WayS0L5u0X4qryGdNYm1b5qT4VU3uBAt56bNJTvTy6Xng5o1jTDX6iQVuNis0Wg/Lvp5UftToaLYvgJCqk0RpOOJix8dBm4kA1p+EkKoxyoJh3J5vrzYQvDRRh+okKSRuk66Uh28b/JlD4e/m4FhZFGmTzp+MLjS08YfiqF+RqTk44W/uH7r2FKXzz8VArzNKrT+crPy7XwuaWPwbLDfzPzaJPRqCKTnlf4/NJ/fyKlh1+79+hzKJ703MKH6e+hMPvU8B8YqNIas5OOZJ6eOgsISXwiMShMa8RMekHhw3QVElc8/EwKExqxk45kKyFF7AEx/4b/wEjlzV4ooZDChzGBIsHwsyqMNEpazqQjWU1RrL4DVGD2vXdk55rTQGUKT1X6a/58MmN9namo7kbZ7SWX/pqPP+/MXL9psLYLzOeUAdT5+MUIdjzRvFkT3OenCcAP7HguU/gwosPCBT9/vTN0/0jWeLfE38zaABzByBpH+Fsz+tLHYJ/Ua3Ekatwt8FiyAcARjKRxkneLbgJwBCNcjfjClyh9PGOfdVyNSyn3acQGKAf2Xl3jKP8hadwCrmAn2tvS6qVnASvQOCl6WNahfGiGP1cjeluKlL5TgYtmX0/shRfQMzgOYHkaN8VnKKVLTztjeI07wplT3nFEfWBYjXPSIbcOwBnszFp4wnFETcOP0biViEfRLgBnsBNr4cnHEbXsK6pxRXHIWkPpSfuKapzTHJXrALzBToyFD8vVVoA72Jn0HMat9IXDn9K4EahSV+mLZuyL5rYUOY7YA/AGS3w2zml/N2QBcAc7/qa4La36ZEa3r0fc1UhX+Og4ogfABwxzNU7of+1oAvABe89opC08wxlcxRn7It+W8i89BuzMUnhepU+AHWONuwULlmYAx8TD/1X8HPbfSo/M2PE0ZaIqeRzBDMb6JQ7BbAF/sBnzt41VXeHN9fGjxJdn1bHBF0xx20KZyF3d7hn7jlKvz5bi7A3X1rsVvqqnarLYHg9N3XIDQqejlGJsKUrHWRs929LNYbctylpt3+VVVVnui+1uwBhAWrbb6xnGer13HKeTSvCCs1+vDaPnurYVgJjDcYDSr5GlEDN4J+V+EFEU23GCP4jBa7IcUKilOf4CgQRuuzC9EJcAAAAASUVORK5CYII=",478"data:image/svg+xml,%3Csvg width='301' height='165' viewBox='0 0 301 165' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M150.731 101.547L98.1387 73.7471L6.84674 25.4969C6.7634 25.4136 6.59674 25.4136 6.51341 25.4136C3.18007 23.8303 -0.236608 27.1636 1.0134 30.497L47.5302 149.139L47.5385 149.164C47.5885 149.281 47.6302 149.397 47.6802 149.514C49.5885 153.939 53.7552 156.672 58.2886 157.747C58.6719 157.831 58.9461 157.906 59.4064 157.998C59.8645 158.1 60.5052 158.239 61.0552 158.281C61.1469 158.289 61.2302 158.289 61.3219 158.297H61.3886C61.4552 158.306 61.5219 158.306 61.5886 158.314H61.6802C61.7386 158.322 61.8052 158.322 61.8636 158.322H61.9719C62.0386 158.331 62.1052 158.331 62.1719 158.331V158.331C121.084 164.754 180.519 164.754 239.431 158.331V158.331C240.139 158.331 240.831 158.297 241.497 158.231C241.714 158.206 241.922 158.181 242.131 158.156C242.156 158.147 242.189 158.147 242.214 158.139C242.356 158.122 242.497 158.097 242.639 158.072C242.847 158.047 243.056 158.006 243.264 157.964C243.681 157.872 243.87 157.806 244.436 157.611C245.001 157.417 245.94 157.077 246.527 156.794C247.115 156.511 247.522 156.239 248.014 155.931C248.622 155.547 249.201 155.155 249.788 154.715C250.041 154.521 250.214 154.397 250.397 154.222L250.297 154.164L150.731 101.547Z' fill='%23FF4B4B'/%3E%3Cpath d='M294.766 25.4981H294.683L203.357 73.7483L254.124 149.357L300.524 30.4981V30.3315C301.691 26.8314 298.108 23.6648 294.766 25.4981' fill='%237D353B'/%3E%3Cpath d='M155.598 2.55572C153.264 -0.852624 148.181 -0.852624 145.931 2.55572L98.1389 73.7477L150.731 101.548L250.398 154.222C251.024 153.609 251.526 153.012 252.056 152.381C252.806 151.456 253.506 150.465 254.123 149.356L203.356 73.7477L155.598 2.55572Z' fill='%23BD4043'/%3E%3C/svg%3E%0A",479"",480None,481],482}483),484column_config={485"col_0": st.column_config.ImageColumn(486"Image column",487width="medium",488help="This is a image column",489),490},491)
492
493st.subheader("Long colum header")494st.dataframe(495pd.DataFrame(496np.random.randn(100, 15),497columns=[498"this is a very long column header name",499"A",500"Short header",501"B",502"this is another very very column long header name",503"C",504"this is another very very very very very very very very very very very very very very very long header name",505"D",506"E",507"F",508"G",509"H",510"I",511"J",512"K",513],514)515)
516