首页 > 解决方案 > Python Pandas 和 Seaborn 日期格式问题:strftime 对不同 seaborn 图表的工作方式不同

问题描述

所以基本上我在数据框中有日期,如下所示:

import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns

data = {'date': ['January 2020', 'February 2020', 'March 2020', 'April 2020', 'May 2020'],
     'revenue': [29000,31000,32000,25000,34000]}
df = pd.DataFrame(data)

df["date"] = pd.to_datetime(df["date"])

plt.figure(figsize=(14,5))
sns.set()
ax = sns.barplot(data=df, x="date", y="revenue", ci=None)
ax.set_xticklabels(df['date'].dt.strftime('%Y-%m'))
plt.xticks(rotation=45)
plt.show()

这按预期工作。日期以 %Y-%m 格式显示,以便您看到所有日期都不同。如果您删除我使用“strftime”更改格式的行,那么日期的格式将是“2020:01-01T00:00:00:00000000”

现在所有这些在上面的示例中都可以正常工作,但是当我做与从 SQL 查询中提取相同的事情时,所有月份的结果都完全相同(2020-07),即使当我不这样做时它们是唯一的t改变'strftime'

我原以为这与我的 SQL 查询有关,但同一笔记本中的另一个 SQL 查询可以正常工作,甚至无需更改“strftime”。我为此所做的只是 pd.to_datetime() 它工作并在图表上自动将其格式化为“2020-07、2020-08、2020-09”等。

这是怎么回事?

标签: pythonmysqlpandasmatplotlibseaborn

解决方案


推荐阅读