Я пытаюсь прочитать значения таблицы из электронной таблицы и построить различные диаграммы с помощью Altair. Таблицу можно найти здесь
import pandas as pd
xls_file = pd.ExcelFile('PET_PRI_SPT_S1_D.xls')
xls_file
crude_df = xls_file.parse('Data 1')
crude_df
Я устанавливаю значения второй строки в качестве заголовков столбцов фрейма данных.
crude_df.columns = crude_df.iloc[1]
crude_df.columns
Index(['Date', 'Cushing, OK WTI Spot Price FOB (Dollars per Barrel)',
'Europe Brent Spot Price FOB (Dollars per Barrel)'],
dtype='object', name=1)
Ниже приведена модифицированная версия кода Altair, полученная из примеров документации
crude_df_header = crude_df.head(100)
import altair as alt
alt.Chart(crude_df_header).mark_circle().encode(
# Mapping the WTI column to y-axis
y='Cushing, OK WTI Spot Price FOB (Dollars per Barrel)'
)
Это не работает.
Ошибка отображается как
TypeError: Object of type datetime is not JSON serializable
Как сделать 2D-графики с этими данными?
Кроме того, как сделать графики для количества значений, превышающих 5000 в Альтаире? Даже это приводит к ошибкам.
Ваша ошибка связана с тем, как вы проанализировали файл. Вы задали имя столбца, но забыли удалить первые две строки, включая те, которые теперь являются именами столбцов. Наличие этих строковых значений приводило к ошибке.
Правильный способ достижения того, что вы ищете, будет следующим:
import pandas as pd
import altair as alt
crude_df = pd.read_excel(open('PET_PRI_SPT_S1_D.xls', 'rb'),
sheet_name='Data 1',index_col=None, header=2)
alt.Chart(crude_df.head(100)).mark_circle().encode(
x ='Date',
y='Cushing, OK WTI Spot Price FOB (Dollars per Barrel)'
)
Для проблемы максимального количества строк вы можете использовать следующее
alt.data_transformers.disable_max_rows()
Но помните об официальном предупреждении
Если вы выберете этот маршрут, будьте осторожны: если вы строите несколько графиков с набором данных в определенной записной книжке, записная книжка станет очень большой, и производительность может пострадать.
У меня есть электронная таблица с заголовками таблиц, в которых есть специальные символы, которые необходимо закодировать. Он показывает ошибку. Любые указатели? stackoverflow.com/questions/74652841/…