Python 基于百分比变化值绘制多条直线图
我有一个类似于下面给出的示例的数据集:Python 基于百分比变化值绘制多条直线图,python,pandas,python-datetime,plotly-python,line-plot,Python,Pandas,Python Datetime,Plotly Python,Line Plot,我有一个类似于下面给出的示例的数据集: | Week | val1 | val2 | |------------|--------|------| | 11/13/2017 | 21785 | 966 | | 11/20/2017 | 71679 | 3395 | | 11/27/2017 | 113846 | 5060 | | 12/4/2017 | 106899 | 5730 | | 12/11/2017 | 99212 | 5682 | | 12/18/2017
| Week | val1 | val2 |
|------------|--------|------|
| 11/13/2017 | 21785 | 966 |
| 11/20/2017 | 71679 | 3395 |
| 11/27/2017 | 113846 | 5060 |
| 12/4/2017 | 106899 | 5730 |
| 12/11/2017 | 99212 | 5682 |
| 12/18/2017 | 99788 | 4838 |
样本输入
rng = ['11/13/2017','11/20/2017','11/27/2017','12/4/2017','12/11/2017','12/18/2017']
val1= [21785,71679,113846,106899,99212,99788]
val2= [966,3395,5060,5730,5682,4838]
df = pd.DataFrame({ 'Date': rng, 'val1': val1, 'val2': val2})
df
我需要计算行之间的百分比差异,并使用plotly将其作为一个图形中的多个折线图进行绘制。我知道我可以使用df.pct_change()计算百分比差异,但我在绘制时遇到了一个问题,因为我需要将“week”列设置为计算百分比差异的索引。还有其他方法吗?您可以使用
pct\u change()
指定带有freq='7D'
的时间序列。这是您打算做的吗
df['Date'] = pd.to_datetime(df['Date'])
df.set_index('Date', inplace=True)
df['val1_pct'] = df['val1'].pct_change(freq='7D')
df['val2_pct'] = df['val2'].pct_change(freq='7D')
df
val1 val2 val1_pct val2_pct
Date
2017-11-13 21785 966 NaN NaN
2017-11-20 71679 3395 2.290291 2.514493
2017-11-27 113846 5060 0.588276 0.490427
2017-12-04 106899 5730 -0.061021 0.132411
2017-12-11 99212 5682 -0.071909 -0.008377
2017-12-18 99788 4838 0.005806 -0.148539
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Scatter(x=df.index, y=df['val1_pct'],
mode='lines',
name='val1'))
fig.add_trace(go.Scatter(x=df.index, y=df['val2_pct'],
mode='lines',
name='val2'))
fig.show()