我正在尝试使用此代码从电子表格绘制图表。
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.
不知道我做错了什么。
这与电子表格/数据框的列名称中出现的点(
.
)有关,并且似乎转义(由文档建议)在您的情况下不起作用。
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)'
)