Power BI Python visual — мои данные о времени неверны или я неправильно их форматирую?

#python #python-3.x #matplotlib #powerbi #powerbi-custom-visuals

#python #python-3.x #matplotlib #powerbi #powerbi-пользовательские визуальные эффекты

Вопрос:

Я пытаюсь создать карту рассеяния, используя Python visual, поскольку эта функция отсутствует в готовом виде для данных даты или времени. R не вариант, поскольку невозможно просмотреть эти визуальные элементы в веб-службе. Набор визуальных элементов, доступных на marketplace, не дает ожидаемого результата.

Я впервые пытаюсь создать визуальный элемент Python и первый визуальный элемент со значениями времени.

Я прочитал документацию Power BI по Python. Я прочитал документацию по Pandas и Matplotlib.

Но я не могу понять, почему моя графика отображает 00:00 по оси y. Итак, я пришел к вопросу о своих данных.

Мои данные изначально были сгенерированы в Excel, а затем импортированы в Power BI. Вот пример :

 Day_of_the_week,Time
Monday,1899-12-30 08:15:00
Monday,1899-12-30 14:15:00
Tuesday,1899-12-30 16:15:00
Wednesday,1899-12-30 08:15:00
Thursday,1899-12-30 11:30:00
Thursday,1899-12-30 14:15:00
Thursday,1899-12-30 16:15:00
Friday,1899-12-30 11:30:00
  

Результат в Power BI :
График Python в Power BI

Код Python для визуального :

 import matplotlib.pyplot as plt
import matplotlib.dates as mdates

plt.scatter(dataset.Day_of_the_week,dataset.Time)
date_format = mdates.DateFormatter('%H:%M')
plt.gca().yaxis.set_major_formatter(date_format)

plt.show()
  

Любой намек на то, что я делаю неправильно?

Комментарии:

1. что вы хотите для каждой оси?

2. Часы по оси y и день недели по оси x

Ответ №1:

Ваш Time столбец не был распознан как объект datetime. Вы можете преобразовать столбец в datetime следующим образом:

 dataset.Time = pd.to_datetime(dataset.Time, format='%Y-%m-%d %H:%M:%S')
  

полный код:

 import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd
from io import StringIO

d='''Day_of_the_week,Time
Monday,1899-12-30 08:15:00
Monday,1899-12-30 14:15:00
Tuesday,1899-12-30 16:15:00
Wednesday,1899-12-30 08:15:00
Thursday,1899-12-30 11:30:00
Thursday,1899-12-30 14:15:00
Thursday,1899-12-30 16:15:00
Friday,1899-12-30 11:30:00'''
dataset = pd.read_csv(StringIO(d), header=0)

dataset.Time = pd.to_datetime(dataset.Time, format='%Y-%m-%d %H:%M:%S')

plt.figure()
plt.scatter(dataset.Day_of_the_week,dataset.Time)
date_format = mdates.DateFormatter('%H:%M')
plt.gca().yaxis.set_major_formatter(date_format)
plt.tight_layout()
plt.show()
  

введите описание изображения здесь