2 回答

TA貢獻1895條經驗 獲得超3個贊
在發送到繪圖之前,您需要groupby和countpandas 中的行進行比較。另外,您的示例沒有顯示它,但是如果您期望同一個月內有不同的日期并且您只關心年/月,那么您需要在分組之前應用一些舍入(或從日期中提取年和月data['Date'].dt.year,data['Date'].dt.month無論你喜歡哪個)。
取這個稍微不同的樣本,其中添加了 10/2
import plotly.express as px
data = {'Project': ['Project 1', 'Project 2', ' Project 3', 'Project 4', 'Project 5', 'Project 6', 'Project 7', 'Project 8', 'Project 9', 'Project 10'],
'Date': ['10/1/2020', '10/2/2020', '11/1/2020', '12/1/2020', '12/2/2020', '12/1/2020', '2/1/2021', '2/1/2021', '3/1/2021', '4/1/2021']}
df2 = pd.DataFrame(data, columns = ['Project','Date'])
df2['Date'] = pd.to_datetime(df2['Date'])
df_grouped = (
df2.groupby(
# normalize all dates to start of month
df2['Date'].astype('datetime64[M]')
)['Project'].count().rename('Count').to_frame()
)
df_grouped['Names'] = (
df2.groupby(df2['Date'].astype('datetime64[M]')
)['Project'].agg(',<br> '.join)
)
print(df_grouped)
fig = px.line(
df_grouped, y='Count', title='<b>Projects per month</b>',
hover_data=['Names']
)
fig.write_html('fig1.html', auto_open=True)
更新:根據要求,此新代碼在懸停時顯示項目名稱。
輸出
Count Names
Date
2020-10-01 2 Project 1,<br> Project 2
2020-11-01 1 Project 3
2020-12-01 3 Project 4,<br> Project 5,<br> Project 6
2021-02-01 2 Project 7,<br> Project 8
2021-03-01 1 Project 9
2021-04-01 1 Project 10

TA貢獻1828條經驗 獲得超3個贊
您可以使用Matplotlib 的 hist輕松實現這一點
例子:
from datetime import datetime
import matplotlib
import pandas as pd
from matplotlib.pyplot import hist
df = pd.DataFrame(
? ? {'a': [1, 2, 3, 4]},?
? ? index=[datetime(2020, 9, 24),?
? ? ? ? ? ?datetime(2020, 9, 24),?
? ? ? ? ? ?datetime(2020, 9, 24),?
? ? ? ? ? ?datetime(2020, 9, 25)]
)
hist(df.index)
不是最漂亮的直方圖,但我相信您可以從這里根據您的需要調整它;)
添加回答
舉報