本文介绍了使用value_counts建立图表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下数据框:
df_Mechanics = pd.DataFrame({'Car Plate End':[749,749,749,749,749,749,749,749,749,49],汽车型号":['Mustang','Mustang','Mustang','Mustang','Mustang','Mustang','Mustang','Mustang','Mustang','Mustang'],替换零件":[刹车片",车轮",发动机",发动机",发动机",车轮",引擎",引擎",引擎",引擎"]})打印(df_Mechanics)车板端汽车型号替换零件749野马刹车片749野马轮749野马发动机749野马发动机749野马发动机749野马轮749野马发动机749野马发动机749野马发动机749野马发动机
我想绘制一个已经使用过的零件的概率图.因此,我做了以下事情:
概率= df_Mechanics ['替换零件'] .value_counts(normalize = True)阈值= 0.05遮罩=概率>临界点tail_prob = prob.loc [〜mask] .sum()概率= prob.loc [掩码]prob.plot(种类='bar')plt.xticks(旋转= 25)plt.show()
该图形符合预期.但我想完善您的设计师.
我在此链接上找到了一个很好的例子:
I have the following dataframe:
df_Mechanics = pd.DataFrame({'Car Plate End': [749, 749, 749,749, 749,
749, 749, 749, 749, 49],
'Car Model': ['Mustang', 'Mustang', 'Mustang', 'Mustang', 'Mustang',
'Mustang', 'Mustang', 'Mustang', 'Mustang', 'Mustang'],
'Replaced part': ['brake pad', 'wheel', 'engine', 'engine', 'engine',
'wheel', 'engine','engine', 'engine', 'engine']
})
print(df_Mechanics)
Car Plate End Car Model Replaced part
749 Mustang brake pad
749 Mustang wheel
749 Mustang engine
749 Mustang engine
749 Mustang engine
749 Mustang wheel
749 Mustang engine
749 Mustang engine
749 Mustang engine
749 Mustang engine
I would like to plot a probability plot of parts that have been used. So, I did the following:
prob = df_Mechanics['Replaced part'].value_counts(normalize=True)
threshold = 0.05
mask = prob > threshold
tail_prob = prob.loc[~mask].sum()
prob = prob.loc[mask]
prob.plot(kind='bar')
plt.xticks(rotation=25)
plt.show()
The graph is as expected. But I would like to perfect your designer.
I found a very good example at this link:https://matplotlib.org/3.2.1/gallery/statistics/barchart_demo.html
I'm having trouble understanding.
I would like to make my graph horizontal, that the x-axis is up to 100% and that the probabilities appear in the bars. Thanks for listening.
解决方案
You can use barh
instead of bar
for horizontal bar, then extract the patches to annotate with ax.text
:
# replace prob.plot(...) with the following
ax = prob.plot(kind='barh')
# loop through the bars
for patch in ax.patches:
# extract bar's information
x = patch.get_width()
bar_width=patch.get_height()
y = patch.get_y()
# annotate the bar
ax.text(x-.05, y+bar_width/2, f'{x:.0%}',
verticalalignment='center',
color='white')
Output:
这篇关于使用value_counts建立图表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!