Мои данные должны быть представлены в виде графика (линейный график) с использованием 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
.