Python-具有Plotly Express的交互式多线图-需要基于列中相似值的每条线

问题描述 投票:0回答:1

需要使用Plotly Express在交互式二维折线图上绘制多条线(大数据集-将产生约4,500条线)。>

问题是我的变量(x和y轴)位于2个单独的列中,并且每行的数据点数不同。每行的数据点数将基于“ API / UWI”列---“ API / UWI”值恒定的行将代表1行的所有数据点。

即,当“ API / UWI”列中的值更改时,新行开始。

为清楚起见,下面是我的数据集的一小部分示例。

Example dataset

[我的第一次尝试是根据“ API / UWI”列中的唯一值将数据框分成多个数据框,然后将所有这些数据框绘制成图形。有效!但是,它产生了4,500个图形,而不是一个包含4,500行的图形。

是否有更好的方法来完成此操作并生成包含4,500条线的单个图形?

我将下面的代码发布给我,以供上面的尝试之用,以及所产生图形的示例(单行)。

请详细说明您的解决方案。这是我第一次尝试进行任何形式的编码。我是一个初学者。请谢谢!

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

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

    df = pd.read_excel(excel_file)

    split_values_API = df['API/UWI'].unique()

    for API in split_values_API:
        df1 = df[df['API/UWI'] == API]
        df1 = df1.sort_values(by="Monthly Production Date")
        GOR_data = px.line(df1, x='Monthly Production Date' , y='MONTHLY GOR')
        GOR_data.show()

Example plot with 1 line

*编辑以回应评论:

df.head(20).to_dict()的输出如下:

df.head(20).to_dict() 
{'API/UWI': {0: 30015209400000,
  1: 30015209400000,
  2: 30015209400000,
  3: 30015209400000,
  4: 30015209400000,
  5: 30015209400000,
  6: 30015209400000,
  7: 30015209400000,
  8: 30015209400000,
  9: 30015209400000,
  10: 30015209400000,
  11: 30015209400000,
  12: 30015209400000,
  13: 30015209400000,
  14: 30015209400000,
  15: 30015209400000,
  16: 30015209400000,
  17: 30015209400000,
  18: 30015209400000,
  19: 30015209400000},
 'Monthly Production Date': {0: Timestamp('2001-01-01 00:00:00'),
  1: Timestamp('2001-02-01 00:00:00'),
  2: Timestamp('2001-03-01 00:00:00'),
  3: Timestamp('2001-04-01 00:00:00'),
  4: Timestamp('2001-05-01 00:00:00'),
  5: Timestamp('2001-06-01 00:00:00'),
  6: Timestamp('2001-07-01 00:00:00'),
  7: Timestamp('2001-08-01 00:00:00'),
  8: Timestamp('2001-09-01 00:00:00'),
  9: Timestamp('2001-10-01 00:00:00'),
  10: Timestamp('2001-11-01 00:00:00'),
  11: Timestamp('2001-12-01 00:00:00'),
  12: Timestamp('2002-01-01 00:00:00'),
  13: Timestamp('2002-02-01 00:00:00'),
  14: Timestamp('2002-03-01 00:00:00'),
  15: Timestamp('2002-04-01 00:00:00'),
  16: Timestamp('2002-05-01 00:00:00'),
  17: Timestamp('2002-06-01 00:00:00'),
  18: Timestamp('2002-07-01 00:00:00'),
  19: Timestamp('2002-08-01 00:00:00')},                                                                     'MONTHLY GOR': {0: 1.1925754060324827,
  1: 2.467706013363029,
  2: 1.0963541666666667,
  3: 1.4296296296296296,
  4: 1.726027397260274,
  5: 1.7688172043010753,
  6: 1.1894736842105262,
  7: 1.037837837837838,
  8: 1.3162393162393162,
  9: 0.6,
  10: 0.6612903225806451,
  11: 0.8181818181818182,
  12: 0.7103448275862069,
  13: 0.6423357664233577,
  14: 0.6388888888888888,
  15: 1.278688524590164,
  16: 0.8455284552845529,
  17: 1.8529411764705883,
  18: 0.736,
  19: 1.6818181818181819}}

注意,在以上输出中,'API/UWI'值不变。在上面的示例(附图)中,为简化起见,我简化了示例数据集。值以随机间隔更改为新的'API/UWI'(基于每个'Monthly Production Date'唯一值的'API/UWI'列中的月数。

需要使用Plotly Express在交互式二维折线图上绘制多条线(大型数据集-将产生约4,500条线)。问题是我的变量(x和y轴)在2个单独的...

python pandas plotly
1个回答
0
投票

首先,如果您想使用plotly.express,则可以使用

© www.soinside.com 2019 - 2024. All rights reserved.