def _plotMonthlyStats(stats, columns, groupBy=True):
dataToPlot = stats.copy()
# Group by month and rename date column
if groupBy:
dataToPlot = dataToPlot.groupby(stats['date'].dt.month).mean()
dataToPlot = dataToPlot.reset_index().rename(columns={'date': 'month'})
# change stats from columns to row attribute
dataToPlot = pd.melt(dataToPlot, id_vars=['month'], value_vars=columns,
var_name='stats', value_name='val')
# Rename stats and weekdays
dataToPlot['stats'].replace(NAMES, inplace=True)
dataToPlot['month'].replace(months, inplace=True)
order = [m for m in monthsOrder if m in dataToPlot['month'].unique()]
# Plot
g = sns.factorplot(data=dataToPlot, x="month", y="val", col="stats", order=order, kind="bar", sharey=False)
g.set_xticklabels(rotation=45)
g.set(xlabel='')
return g
#sns.plt.show()
# def _plotMonthlyStats(stats, columns):
# """
# Plot aggregated (mean) stats by month
# :param stats: data to plot
# :param columns: columns from stats to plot
# """
# MEASURE_NAME = 'month'
# months={1:'Jan', 2:'Feb', 3:'Mar', 4:'Apr', 5:'May', 6:'Jun', 7:'Jul', 8:'Aug',
# 9:'Sep', 10:'Oct', 11:'Nov', 12:'Dec'}
# order = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
# stats[MEASURE_NAME] = stats[MEASURE_NAME].map(months)
#
# order = [m for m in order if m in stats[MEASURE_NAME].unique()]
#
# f, axes = getAxes(2,2)
# for i, c in enumerate(columns):
# if c in NAMES:
# c = NAMES[c]
# g = sns.barplot(x=MEASURE_NAME, y=c, data=stats, order=order, ax=axes[i])
# g.set_xlabel('')
# sns.plt.show()
评论列表
文章目录