2 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以創(chuàng)建由日期時(shí)間填充的新列,to_datetime如果通過(guò) 3 列 DataFrame 與Year, Month,Day列然后是月份周期Series.dt.to_period:
dfy['dates'] = pd.to_datetime(dfy[['Year','Month']].assign(Day=1))
dfy['per'] = dfy['dates'].dt.to_period('m')
print(dfy)
Year Month Outcome outcome_count dates per
0 2017 1 dead 20 2017-01-01 2017-01
1 2018 1 alive 21 2018-01-01 2018-01
2 2018 2 alive 19 2018-02-01 2018-02
3 2019 3 empty 18 2019-03-01 2019-03
然后可以用句點(diǎn)或日期時(shí)間繪制:
dfy.plot(x='per', y='outcome_count')
dfy.plot(x='dates', y='outcome_count')

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊
您的數(shù)據(jù)集非常有限。在 jezrael 的方法的基礎(chǔ)上,我能夠產(chǎn)生這個(gè):
https://i.stack.imgur.com/HZ0eR.png
如果這實(shí)際上是您正在尋找的東西,我可以解釋詳細(xì)信息。如果沒(méi)有,那么我相信我們會(huì)找到另一種方法。
這是到目前為止的代碼:
import pandas as pd
import plotly.graph_objects as go
import plotly.express as px
# intialise data of lists.
data = {'Year':['2017', '2018', '2018', '2019'],'Month':['1', '1', '2', '3'],'Outcome':['dead', 'alive', 'alive', 'empty'], 'outcome_count':[20, 21, 19, 18]}
# Create DataFrame
dfy = pd.DataFrame(data)
# approach from jezrael
dfy['dates'] = pd.to_datetime(dfy[['Year','Month']].assign(Day=1))
dfy['per'] = dfy['dates'].dt.to_period('m')
# periods as string
dfy['period']=[d.strftime('%Y-%m') for d in dfy['dates']]
# unique outcomes
outcomes = dfy['Outcome'].unique()
# plotly setup
fig = go.Figure()
# one trace per outcome
for outcome in outcomes:
df_plot = dfy[dfy['Outcome']==outcome]
fig.add_trace(go.Scatter(x=df_plot['period'], y=df_plot['outcome_count'],
name=outcome
))
fig.show()
添加回答
舉報(bào)