pandas 按月订购海运计数图

62lalag4  于 2023-01-24  发布在  其他
关注(0)|答案(2)|浏览(128)

这应该非常简单,但我尝试按月份排序海运计数图。默认为逆序(最近月份优先),因此我希望简单地颠倒顺序或指定顺序-理想情况下,我希望了解如何执行这两种操作。
这是我的代码:
sns.countplot(data = cycling ,x = cycling['Date'].dt.strftime('%Y-%m') ) plt.xticks(rotation=45) plt.show()
我试着添加order = cycling['Date'].dt.strftime('%Y-%m'),但它只是根据我那个月的条目数进一步分割条形。Barplot image 1: wrong order
到这个:Barplot image 2: wrong order + sliced too much
任何帮助都将是巨大的,谢谢!

xtfmy6hx

xtfmy6hx1#

您可以使用order = list(set(order))删除列表中的重复项。
使用set将从列表中删除重复项,使用list将类型转换回列表
您也可以反转自动生成的order列表:通过使用order.reverse()

nnt7mjpx

nnt7mjpx2#

默认情况下,使用“日期”列中的显示顺序。如果 Dataframe 严格按照从最新到最旧的顺序排列,则可以反转 Dataframe 。如果没有严格的顺序,则可以对 Dataframe 进行排序。

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

cycling = pd.DataFrame({'Date': np.random.choice(pd.date_range('20210801', '20230123', freq='D'), 500)})
ax = sns.countplot(x=cycling.sort_values('Date')['Date'].dt.strftime('%Y-%m'))
ax.tick_params(axis='x', rotation=45)
ax.set_xlabel('')
plt.tight_layout()
plt.show()

相关问题