如何修复 StreamlitAPIException:("Expected bytes, got a 'int' object"、'Conversion failed for column value with type object')

How to fix StreamlitAPIException: ("Expected bytes, got a 'int' object", 'Conversion failed for column value with type object')

错误StreamlitAPIException: ("Expected bytes, got a 'int' object", 'Conversion failed for column value with type object')

回溯File "/Users/temporaryadmin/Streamlit_app_v.1/streamlit_app_v1/main.py", line 48, in <module> st.line_chart(df)

问题: 我对此很陌生,对我的第一个 Streamlit 项目感到非常兴奋。该文件运行良好,我不包含 pandas_data = {'County': county_names},但存储在“county_names”中的字符串列表对于表示图中的数据非常重要。

如果您能提供帮助,我们将不胜感激,谢谢。 enter code here

这是我的代码:

import streamlit as st
import pandas as pd
import requests

bas_url = 'https://services1.arcgis.com/eNO7HHeQ3rUcBllm/arcgis/rest/services/Covid19CountyStatisticsHPSCIrelandOpenData/FeatureServer/0/query?where=1%3D1&outFields=CountyName,PopulationCensus16,ConfirmedCovidCases,PopulationProportionCovidCases&outSR=4326&f=json'
response = requests.get(bas_url)
print(response)
get_json_response = requests.get(bas_url).json()

data = []
for i in get_json_response['features']:
    data.append(i)

# List comprehension
new_data = [i['attributes'] for i in data]

#  All variables below containing lists of data from api request
county_names = [i['CountyName'] for i in new_data]
population_total_2016 = [i['PopulationCensus16'] for i in new_data]
confirmed_cases = [i['ConfirmedCovidCases'] for i in new_data]

pandas_data = {
    'County': county_names,
    'Population': population_total_2016,
    'Confirmed cases': confirmed_cases
}

df = pd.DataFrame(pandas_data)
st.write(df)
st.line_chart(df)

您可以通过像这样重塑您的数据来制作 x 轴上带有县的条形图

import streamlit as st
import pandas as pd
import requests

bas_url = 'https://services1.arcgis.com/eNO7HHeQ3rUcBllm/arcgis/rest/services/Covid19CountyStatisticsHPSCIrelandOpenData/FeatureServer/0/query?where=1%3D1&outFields=CountyName,PopulationCensus16,ConfirmedCovidCases,PopulationProportionCovidCases&outSR=4326&f=json'
response = requests.get(bas_url)
print(response)
get_json_response = requests.get(bas_url).json()

data = []
for i in get_json_response['features']:
    data.append(i)

# List comprehension
new_data = [i['attributes'] for i in data]

#  All variables below containing lists of data from api request
county_names = [str(i['CountyName']) for i in new_data]
population_total_2016 = [i['PopulationCensus16'] for i in new_data]
confirmed_cases = [i['ConfirmedCovidCases'] for i in new_data]

pandas_data = {
    'County': county_names,
    'Population': population_total_2016,
    'Confirmed cases': confirmed_cases
}

df = pd.DataFrame(pandas_data)
df = df.groupby('County')[['Population', 'Confirmed cases']].sum()
st.write(df)
st.bar_chart(df)

对数据框进行分组并使县成为数据框的索引将告诉 streamlit 将它们用作您的 x 轴,然后将使用 PopulationConfirmed cases 中的值来制作酒吧。

图表将如下所示: