Построить временные ряды объема по оси Y и год + номер недели по оси X с типом, определенным оттенком - PullRequest
0 голосов
/ 23 мая 2019

импорт библиотек

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib as mpl
import seaborn as sns
from datetime import datetime
%matplotlib inline
import warnings; warnings.filterwarnings(action='once')

данные импорта

df = pd.read_excel("CDS Detail - 2019 05 22 - sample.xlsx")

проверить формат данных

df.head()
Date                Status  Method  Volume
2018-05-10 20:45:28 F   Discretionary   1
2018-05-03 21:09:10 F   Discretionary   1
2018-05-17 14:19:47 F   Discretionary   1
2018-05-17 14:21:17 F   Discretionary   1
2018-05-17 14:19:47 F   Discretionary   1

удалить нулевые значения

df = df[df['Date'].notnull()]

типы проверок

df.columns
Index(['Status', 'Method', 'Volume', 'Date'], dtype='object')
df.dtypes
Status            object
Method            object
Volume             int64
Date      datetime64[ns]
dtype: object

просмотр заголовка данных

df.head()
Status  Method  Volume  Date
0   F   Discretionary   1   2018-05-10 20:45:28
1   F   Discretionary   1   2018-05-03 21:09:10
2   F   Discretionary   1   2018-05-17 14:19:47
3   F   Discretionary   1   2018-05-17 14:21:17
4   F   Discretionary   1   2018-05-17 14:19:47

сбросить ось, используя datetime64 в качестве индекса

df = df.set_index('Date')

df.head()
Status  Method  Volume
Date            
2018-05-10 20:45:28 F   Discretionary   1
2018-05-03 21:09:10 F   Discretionary   1
2018-05-17 14:19:47 F   Discretionary   1
2018-05-17 14:21:17 F   Discretionary   1
2018-05-17 14:19:47 F   Discretionary   1

weekly = df.resample(rule='W').sum()

подтвердить, что данные были пересчитаны по неделям. Обратите внимание на отсутствующую функцию «Метод»

weekly
Date        Volume
2018-04-08  7
2018-04-15  10
2018-04-22  40
2018-04-29  69
2018-05-06  128
2018-05-13  380
2018-05-20  464
2018-05-27  6052
2018-06-03  6095
2018-06-10  6224
2018-06-17  3084
2018-06-24  5

базовый график matplotlib для проверки данных будет отображаться как недельный объем weekly.plot()

Теперь, как мы добавим «Метод» в качестве легенды для создания линейного графика со строками для каждого класса метода?

вот где я застреваю. Как использовать эту ось X для стиля в качестве даты, а ось Y - в качестве объема с несколькими строками для каждого метода?

sns.lineplot(data = weekly, hue = 'Method')

1 Ответ

0 голосов
/ 04 июня 2019

Вы можете отсутствовать x и y в вызове lineplot.Попробуйте это без сброса индекса.

sns.lineplot(data = weekly,  x='Date', y='Volume', hue = 'Method')

см. Пример здесь: https://seaborn.pydata.org/generated/seaborn.lineplot.html

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