我正在绘制时区(UTC)'的条形图。 Vs '频率',在twitter帖子的pandas数据框中使用value_counts()作为列' UTC_Hrs'
UTC_Hrs
-5.0
11.0
南
0.0
等
我希望从-11.0到+ 13.0订购x轴,但我无法解决如何操作的问题。
order = ["-11.0", "-10.0", "-9.0", "-8.0", "-7.0", "-6.0", "-5.0", "-4.0",
"-3.5", "-3.0", "0.0", "1.0" , "2.0","3.0", "4.0", "5.0",
"5.5","6.0","7.0", "8.0", "9.0", "10.0", "11.0", "13.0"]
通过使用,value_counts(sort = False),我发现了如何在df中进行排序:
df['UTC_Hrs'].value_counts(sort=False).plot(kind='bar')
我还发现了如何假装我使用了它; - ):
set_xticklabels(order)
我尝试过其他答案和熊猫文档启发的其他多种变体,但没有任何效果。最复杂的事情,也许我最接近的是使用字典和映射,但无法解决如何在value_counts上调用它,认为这是错误的方法。
UTC_Hrs = df['UTC_Hrs']
mapping = {UTC_Hrs: i for i, UTC_Hrs in enumerate(order)}
key = df['UTC_Hrs'].map(mapping)
dfx = df.iloc[key.argsort()]
dfx.plot(kind='bar')??? value_counts by referencing dict?
非常感谢任何帮助和建议,谢谢
答案 0 :(得分:1)
您可以将reindex
与交集order
和s.index
一起使用,但必须使用相同的类型 - string
s或float
s:
s = df['UTC_Hrs'].astype(str).value_counts()
s.reindex(np.intersect1d(order, s.index)).plot.bar()
s = df['UTC_Hrs'].value_counts()
s.reindex(np.intersect1d(np.array(order).astype(float), s.index)).plot.bar()