Сюжет спагетти Matplotlib / Seaborn - Показать значения None - PullRequest
0 голосов
/ 11 марта 2019

У меня есть такой фрейм данных:

frame = {'Date' : ['3-Mar', '20-Mar', '20-Apr', '21-Apr', '29-Apr', '7-May', '30-May', '31-May', '7-Jun', '16-Jun',
        '1-Jul', '2-Jul', '10-Jul'],
        'Test_1' : [0.5840, 0.8159, 0.7789, 0.7665, 0.8510, 0.7428, 'None', 0.6820, 0.8714, 0.8902, 'mraky', 0.8289, 0.6877],
        'Test_2' : [0.6196, 0.8291, 0.7686, 0.7848, 0.9935, 0.7406, 'None', 0.6952, 0.6952, 0.6952, 'None', 0.8119, 'None']}

И дополнительные массивы тестов с некоторыми значениями none. Я хотел бы сделать сюжет спагетти.

Проблема заключается в том, что seaborn перетасовывает значения / элементы 'date', когда они имеют форму строки (они не упорядочены в хронологическом порядке) или если я изменил формат даты на:

frame['Date'] =  pd.to_datetime(frame['Date'], format='%d-%b', errors='ignore')

Морской бор пропускает некоторые записи и делает что-то вроде этого: enter image description here

Да, возможно, я мог бы заменить значения None на среднее значение соседних значений, но есть ли другой способ?

THX!

1 Ответ

1 голос
/ 11 марта 2019

Похоже, вы пытаетесь сделать обычный сюжет из двух разных временных рядов.

Похоже, что DF имеет не числовые значения.

Теперь неясно, хотите ли вы непрерывный график (линию) или хотите, чтобы он «разбился» на точки, где у вас нет числовых данных.
Для простоты решения предположим, что вы не возражаете против непрерывной линии.

Итак, что вам нужно сделать, это следующее,

  • выбрать только точки данных с числовыми значениями

Определить функцию фильтра:

def is_digit (value):

    try:

        float(value)
        return True

    except:

        return False

Примените его к вашему фрейму данных:

data_1 = df.loc[df.Test_1.map(lambda X: is_digit(X))]
data_2 = df.loc[df.Test_2.map(lambda X: is_digit(X))]

Участок:

X1 = data_1.Date
y1 = data_1.Test_1

X2 = data_2.Date
y2 = data_2.Test_2

plt.plot(X1,y1)
plt.plot(X2,y2)

plt.xticks(rotation=45)

Пример (тоже безобразный) результат:

enter image description here

Возможные улучшения:

Создание массива дат с четными интервалами

...