【问题标题】:Plotly multiple Y values for the same X do not project the desired value绘制相同 X 的多个 Y 值不会投影所需的值
【发布时间】:2021-10-16 02:00:03
【问题描述】:

我正在分析 csv 文件中的一些数据(随时间变化的用电量)

数据可以包含同一个 X DATE 的多个 Y 值,例如:

TYPE,DATE,START TIME,END TIME,USAGE,UNITS,COST,NOTES
Electric usage,2021-04-08,00:00,00:59,0.93,kWh,$0.27,
Electric usage,2021-04-08,01:00,01:59,0.42,kWh,$0.12,
Electric usage,2021-04-08,02:00,02:59,0.49,kWh,$0.14,
Electric usage,2021-04-08,03:00,03:59,0.49,kWh,$0.14,

我在下面的脚本中注意到的是,这些值没有聚合为单个值,至少不正确。有没有办法做到这一点?

import plotly.express as px
import pandas as pd

df = pd.read_csv("data.csv")
fig = px.line(df, x="DATE", y="USAGE")

fig.show()

【问题讨论】:

    标签: python charts plotly


    【解决方案1】:

    除了WolVes 提到需要对列中的值求和之外,您还需要至少有两个点才能形成一条线。如果您在 "DATE" 列上使用 groupby,您最终会得到共享数据的单行结果。

    所以我建议在线上启用点标记,这样如果只有行结果,您仍然会在图表上看到一个点:

    import plotly.express as px
    import pandas as pd
    
    df = pd.read_csv("data.csv").groupby("DATE")["USAGE"].sum().reset_index()
    fig = px.line(df, x="DATE", y="USAGE")
    fig.update_traces(mode="markers+lines")
    
    fig.show()
    

    一行结果:

    两行结果:

    【讨论】:

      【解决方案2】:

      对于您提供的数据,系统并不明显应该对这些值求和,您需要先提供一个求和的数据框才能聚合数据。

      df = pd.read_csv("data.csv")
      tmp = df.groupby("DATE")['USAGE'].sum().reset_index()
      fig = px.line(tmp, x="DATE", y="USAGE")
      
      fig.show()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-17
        • 2014-09-09
        • 1970-01-01
        • 2015-11-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多