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

问题描述 投票:0回答:1

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

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.

不知道我做错了什么。

python dataframe visualization altair
1个回答
2
投票

这与电子表格/数据框的列名称中出现的点(

.
)有关,并且似乎转义(由文档建议)在您的情况下不起作用。

作为解决方法,您可以在使用

str.replace
之前使用 pandas
altair.Chart
删除点。

试试这个:

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)'
)

# 输出:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.