Python: отфильтровать строки в кадре данных, у которых нет последовательных (ежемесячных) дат - PullRequest
0 голосов
/ 20 июня 2020

Мои данные должны быть представлены в виде графика (линейный график) с использованием Plotly Express (Python). Каждая строка представляет собой временной ряд, представляющий данные уникального значения API/UWI. (ссылка на пример графика находится внизу)

В каждом уникальном наборе значений API/UWI строки сортируются по Monthly Production Date.

Данные затем отображаются в виде MONTHLY GOR vs Monthly Production Date.

Проблема:

Мои данные сообщаются ежемесячно. Я хочу, чтобы временной ряд (для каждой строки) составлял начало в первую дату, когда данные записываются (для каждого API/UWI), и я хочу, чтобы он конец в первый месяц, когда данные не записаны.

Пример желаемого результата:

Следующий набор данных вернет график с 3 линиями (линия для каждый уникальный API/UWI).

Каждая строка будет начинаться с первого Monthly Production Date сообщаемого и конца в первый месяц, когда данные не сообщаются. Все остальные данные для этого API/UWI будут опущены.

API/UWI 30015209400000 начнется 2001-01-01 и закончится 2001-08-01

API/UWI 30015221570000 начнется 2008-08-01 и конец 2009-04-01

API/UWI 30015221620000 будет начинаться 2011-10-01 и заканчиваться 2012-04-01

           API/UWI Monthly Production Date  MONTHLY GOR
0   30015209400000              2001-01-01     1.192575
1   30015209400000              2001-02-01     2.467706
2   30015209400000              2001-03-01     1.096354
3   30015209400000              2001-04-01     1.429630
4   30015209400000              2001-05-01     1.726027
5   30015209400000              2001-06-01     1.768817
6   30015209400000              2001-07-01     1.189474
7   30015209400000              2001-08-01     1.037838
8   30015209400000              2001-11-01     0.661290
9   30015209400000              2001-12-01     0.818182
10  30015209400000              2002-01-01     0.710345
11  30015209400000              2002-02-01     0.642336
12  30015209400000              2002-03-01     0.638889
13  30015209400000              2002-04-01     1.278689
14  30015221570000              2008-08-01    14.523810
15  30015221570000              2008-09-01    17.076222
16  30015221570000              2008-10-01    16.334232
17  30015221570000              2008-11-01    14.918367
18  30015221570000              2008-12-01    16.765197
19  30015221570000              2009-01-01    17.005741
20  30015221570000              2009-02-01    16.567332
21  30015221570000              2009-03-01    17.896277
22  30015221570000              2009-04-01    17.510417
23  30015221570000              2009-08-01    11.330189
24  30015221570000              2009-09-01    15.841463
25  30015221570000              2009-10-01    26.293839
26  30015221570000              2009-11-01    12.093750
27  30015221570000              2009-12-01    19.532258
28  30015221620000              2011-10-01     1.559605
29  30015221620000              2011-11-01     1.883441
30  30015221620000              2011-12-01     1.490063
31  30015221620000              2012-01-01     1.876849
32  30015221620000              2012-02-01     1.799860
33  30015221620000              2012-03-01     2.396951
34  30015221620000              2012-04-01     2.627696
35  30015221620000              2012-08-01     2.510806
36  30015221620000              2012-09-01     2.343368
37  30015221620000              2012-10-01     1.560482
38  30015221620000              2012-11-01     0.901748
39  30015221620000              2012-12-01     2.596761
40  30015221620000              2013-01-01     2.806272
41  30015221620000              2013-02-01     3.814735

Мой код ниже вместе с изображением (ссылкой) график примера данных выше

import plotly.express as px
import pandas as pd
import numpy as np
import plotly.graph_objs as go

excel_file = r"C:\Users\kevin\Desktop\Bone_Spring_Data_3.xlsx"

df = pd.read_excel(excel_file)
df = df.sort_values(by="Monthly Production Date")

fig = px.line(df,
            x='Monthly Production Date',
            y='MONTHLY GOR',
            color='API/UWI')

fig.show()

Изображение с примером графика

Изменить в ответ на предложенный вопрос: Каждая указанная дата имеет соответствующие данные. Я хочу отфильтровать строки только в том случае, если они не являются частью первого набора последовательных ежемесячных данных. Чтобы упростить ... Если бы даты месяца были числами [1,2,3,5,6,7], я бы хотел только [1,2,3]. Это нужно сделать для каждого уникального номера API/UWI.

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