Как мне создать гистограмму длительности интервалов NaN? - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть большой фрейм данных, проиндексированный по datetime (последовательные данные за 1 мин), с большим количеством NaN.

Я хотел бы сгенерировать гистограмму для появления NaN в зависимости от длины интервала NaN (например, ось x будет размером в днях "дырок" NaN и по оси Y отсчитывается это заданное c отверстие).

Предположим, мои данные выглядят так:

2015-01-01 05:57:00     2.136221
2015-01-01 05:58:00     4.101965
2015-01-01 05:59:00     NaN
2015-01-01 06:00:00     8.082413
2015-01-01 06:01:00     9.035858
2015-01-01 06:02:00    10.059280
2015-01-01 06:03:00    11.143933
2015-01-01 06:04:00    12.281069
2015-01-01 06:05:00    NaN
2015-01-01 06:06:00    NaN
2015-01-01 06:07:00    NaN
2015-01-01 06:08:00    16.925832
2015-01-01 06:09:00    18.150440
2015-01-01 06:10:00    19.383795
2015-01-01 06:11:00    NaN
2015-01-01 06:12:00    NaN
2015-01-01 06:13:00    NaN
2015-01-01 06:14:00    NaN
2015-01-01 06:15:00    NaN
2015-01-01 06:16:00    26.530258
2015-01-01 06:17:00    27.868579
2015-01-01 06:18:00    29.320614
2015-01-01 06:19:00    NaN
2015-01-01 06:20:00    NaN
2015-01-01 06:21:00    NaN
2015-01-01 06:22:00    35.854773
2015-01-01 06:23:00    37.639202
2015-01-01 06:24:00    39.406136

Затем я хочу получить гистограмму с 1 вхождением в 1 отверстие в минуту, 2 случая 3-минутного отверстия и 1 случай 5-минутного отверстия.

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

1 Ответ

0 голосов
/ 03 февраля 2020
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.DataFrame({'feature1': [1, np.NaN, 2, np.NaN, 3, 2, 3, 4, np.NaN],
               'feature2': [4, np.NaN, 3, 4, np.NaN, 4, 3, np.NaN, np.NaN]})

def foo(start,stop,df,feat):
    counts = df.loc[start:stop,feat].value_counts(dropna=False)
    counts.plot.bar(grid=True)
    plt.show()

foo(3,8,df,'feature2')

Это то, что вы ищете?

...