我绘制了两个不同数据帧的值计数,但第二个数据帧是使用错误的x轴标签自动绘制的。 (参见照片)有没有办法改变每个图中条形的顺序或使图形上的所有图形都与x轴标签对齐?现在,它们只是按降序排序,但我需要它们根据x轴标签进行排序。
在“df”数据框中,他们是158名女性和140名男性。在我的“签名”数据框中,有13名女性和19名男性。当我绘制这些图时,该图显示140/13女性和158/19男性,当它应显示158/13女性和140/19男性。我已经能够使用value_counts方法上的“ascending”参数来反转值计数的顺序,但是这个解决方案不适用于具有两个以上不同值的数据框。
> df['Gender'].value_counts()
F 158
M 140
Name: Gender, dtype: int64
> signed['Gender'].value_counts()
M 19
F 13
Name: Gender, dtype: int64
df['Gender'].value_counts().plot('bar', position=1, width = width)
signed['Gender'].value_counts().plot('bar', color='skyblue', position=0, width = width)
width = .25
plt.show()
(见上图的照片)
答案 0 :(得分:0)
在value_counts()
之后使用sort_index()width = .25
df['Gender'].value_counts().sort_index().plot('bar', position=1, width = width)
signed['Gender'].value_counts().sort_index().plot('bar', color='skyblue', position=0, width = width)
plt.show()
答案 1 :(得分:0)
考虑通过加入性别索引上的两个系列来合并到单个数据框中:
def First(x):
#compare each group first and see if there are any locations that match
val = x.loc[x['begin_date'] == x['end_date'].iloc[0], 'location']
#find the first location after the initial stay
val2 = x.loc[x[x.location=='initial'].index+1, 'location']
if not val.empty:
return val.iloc[0]
elif not val2.empty:
return val2.iloc[0]
else:
return 'Home'
final = df.groupby('ID').apply(First).reset_index(name='first_site')
print (final)