python 包含特殊字符编码的Altair图

6psbrbz9  于 2022-12-02  发布在  Python
关注(0)|答案(1)|浏览(140)

我正在尝试使用此代码从spreadsheet绘制图表。

import pandas as pd
import altair as alt
crude_df = pd.read_excel(open('PET_CONS_PSUP_DC_NUS_MBBLPD_M.xls', 'rb'),
              sheet_name='Data 1',index_col=None, header=2)  

alt.Chart(crude_df.tail(100)).mark_circle().encode(
    x = 'Date',
    y = r'U\.S\. Product Supplied of Normal Butane (Thousand Barrels per Day)'
)

我从Altair文档中得到了这部分代码

y = r'U\.S\. Product Supplied of Normal Butane (Thousand Barrels per Day)'

这是为了缓解由于编码中存在特殊字符而导致图表显示为空内容的问题
但我还是收到了错误。

ValueError: U\.S\. Product Supplied of Normal Butane (Thousand Barrels per Day) encoding field is specified without a type; the type cannot be inferred because it does not match any column in the data.

不确定我做错了什么。

6jjcrrmo

6jjcrrmo1#

它与电子表格/ Dataframe 的列名称中出现的点(.)有关,并且似乎转义(文档中建议的)在您的情况下不起作用。
作为一种解决方法,您可以在使用altair.Chart之前删除panda str.replace的圆点。
试试这个:

import pandas as pd
import altair as alt

crude_df  = pd.read_excel("PET_CONS_PSUP_DC_NUS_MBBLPD_M.xlsx", sheet_name="Data 1", header=2)

crude_df.columns = crude_df.columns.str.replace("\.", "", regex=True)

alt.Chart(crude_df.tail(100)).mark_circle().encode(
    x = 'Date',
    y = 'US Product Supplied of Normal Butane (Thousand Barrels per Day)'
)
#输出:

相关问题