时间序列条形图显示值是给定时间段的总和
time series bar plot showing the values being the sum for a given time period
有一个时间序列数据,比如下面这些。
Time Order nun
0 2/10/2019 200
1 3/3/2019 150
2 3/15/2019 50
3 3/25/2019 100
4 4/16/2019 90
5 4/17/2019 190
6 5/6/2019 120
7 5/18/2019 110
如何根据月值之和生成时间序列柱状图。
您可以将 Time
设置为索引并使用 pd.Grouper(freq='M')
按月份分组
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
df['Time'] = pd.to_datetime(df['Time'])
out = df.set_index('Time').groupby(pd.Grouper(freq='M'))['Order number'].sum()
fig, ax = plt.subplots()
bars = ax.bar(out.index, out)
ax.bar_label(bars)
ax.set_xlabel("Time (month)")
ax.set_ylabel("Order number")
ax.set_xticks(out.index)
ax.set_yticks(range(200, 800, 200))
ax.xaxis.set_major_formatter(mdates.DateFormatter("%b %Y"))
plt.show()
bar之所以这么细,是因为bar一个月只需要一天。可以用string代替,让它正常。
df['Time'] = pd.to_datetime(df['Time']).dt.strftime('%b %Y')
out = df.groupby('Time')['Order number'].sum()
fig, ax = plt.subplots()
bars = ax.bar(out.index, out)
ax.bar_label(bars)
ax.set_xlabel("Time (month)")
ax.set_ylabel("Order number")
ax.set_xticks(out.index)
ax.set_yticks(range(200, 800, 200))
plt.show()
import seaborn as sns
import matplotlib.pyplot as plt
df['Time'] = pd.to_datetime(df['Time'])
plotme = df.resample('M', on='Time').sum()
sns.barplot(y=plotme['Order nun'], x=plotme['Time'].dt.strftime('%b %Y'))
plt.show()
输出:
有一个时间序列数据,比如下面这些。
Time Order nun
0 2/10/2019 200
1 3/3/2019 150
2 3/15/2019 50
3 3/25/2019 100
4 4/16/2019 90
5 4/17/2019 190
6 5/6/2019 120
7 5/18/2019 110
如何根据月值之和生成时间序列柱状图。
您可以将 Time
设置为索引并使用 pd.Grouper(freq='M')
按月份分组
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
df['Time'] = pd.to_datetime(df['Time'])
out = df.set_index('Time').groupby(pd.Grouper(freq='M'))['Order number'].sum()
fig, ax = plt.subplots()
bars = ax.bar(out.index, out)
ax.bar_label(bars)
ax.set_xlabel("Time (month)")
ax.set_ylabel("Order number")
ax.set_xticks(out.index)
ax.set_yticks(range(200, 800, 200))
ax.xaxis.set_major_formatter(mdates.DateFormatter("%b %Y"))
plt.show()
bar之所以这么细,是因为bar一个月只需要一天。可以用string代替,让它正常。
df['Time'] = pd.to_datetime(df['Time']).dt.strftime('%b %Y')
out = df.groupby('Time')['Order number'].sum()
fig, ax = plt.subplots()
bars = ax.bar(out.index, out)
ax.bar_label(bars)
ax.set_xlabel("Time (month)")
ax.set_ylabel("Order number")
ax.set_xticks(out.index)
ax.set_yticks(range(200, 800, 200))
plt.show()
import seaborn as sns
import matplotlib.pyplot as plt
df['Time'] = pd.to_datetime(df['Time'])
plotme = df.resample('M', on='Time').sum()
sns.barplot(y=plotme['Order nun'], x=plotme['Time'].dt.strftime('%b %Y'))
plt.show()
输出: