绘制相同 X 的多个 Y 值不会投影所需的值
Posted
技术标签:
【中文标题】绘制相同 X 的多个 Y 值不会投影所需的值【英文标题】:Plotly multiple Y values for the same X do not project the desired value 【发布时间】: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()
【问题讨论】:
【参考方案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()
【讨论】:
以上是关于绘制相同 X 的多个 Y 值不会投影所需的值的主要内容,如果未能解决你的问题,请参考以下文章