使用streamlit创建一个产品指标与排名看板【3】定义JSON数据模型
1. 数据模型选型
streamlit其实是用于大数据可视化的一个框架,支持动态数据是它的关键特性。在应用初期是是用的mysql数据库,但是发现mysql数据在处理过程数据时的成本太高了,实际上如果是动态数据使用prometheus和grafana显然是更优选择。
这个应用是基于结果的看板,数据是静态数据,所以在数据库侧就演化成了表数据导出为json数据,应用将json转成streamlit所需的字典格式后通过dataframe表格显示。
- json格式
[{
"title": "产品A",
"指标1": 456,
"指标2": 789,
"指标3": 234,
"指标4": 567,
"指标5": 890,
"指标6": 123,
"指标7": 456,
"指标8": 789,
"指标9": 234,
"指标10": 567,
"指标11": 890,
"指标12": 123,
"指标13": 456,
"指标14": 789,
"指标15": 234
},
{
"title": "产品B",
"指标1": 345,
"指标2": 678,
"指标3": 901,
"指标4": 234,
"指标5": 567,
"指标6": 890,
"指标7": 123,
"指标8": 456,
"指标9": 789,
"指标10": 234,
"指标11": 567,
"指标12": 890,
"指标13": 123,
"指标14": 456,
"指标15": 789
}]
2. dataframe格式
import streamlit as st
import pandas as pd
import numpy as np
# 创建一个 3x3 的 DataFrame
data = {
"Column A": [1, 2, 3],
"Column B": [4, 5, 6],
"Column C": [7, 8, 9]
}
df = pd.DataFrame(data)
# 在 Streamlit 中显示 DataFrame
st.title("按列显示的 3x3 表格")
st.dataframe(df)
运行结果:
Column A | Column B | Column C | |
---|---|---|---|
0 | 1 | 4 | 7 |
1 | 2 | 5 | 8 |
2 | 3 | 6 | 9 |
这里的Column A就可以是我要显示的一个指标,这一列就是指标的值,或者根据值计算得到的积分。