我有一份数据,如下所示-
df = pd.DataFrame([
['Fully Paid',1,1],
['Fully Paid',1,1],
['Fully Paid',1,0],
['Defaulted',1,0],
['Defaulted',1,0]
], columns=['LoanStatus', 'B', 'C'])我想在饼图中画出这幅图,显示60%的贷款是全额偿还的,而40%的贷款是违约的。我能在计件图上做这件事,但在饼图上却做不到-
COUNT PLOT:
sns.countplot(x="LoanStatus",data=df)预期:
一个饼状图,显示有多少值与贷款状态和百分比。
发布于 2022-09-06 05:19:54
你可以这样做得到派的阴谋。如果要以不同的方式显示值和百分比,请调整fmt。
#df.LoanStatus.
df = pd.DataFrame([
['Fully Paid',1,1],
['Fully Paid',1,1],
['Fully Paid',1,0],
['Defaulted',1,0],
['Defaulted',1,0]
], columns=['LoanStatus', 'B', 'C'])
total = df['LoanStatus'].value_counts().values.sum()
def fmt(x):
return '{:.1f}%\n{:.0f}'.format(x, total*x/100)
plt.pie(df['LoanStatus'].value_counts().values, labels=df['LoanStatus'].value_counts().index, autopct=fmt)

附加信息- def fmt()是一个函数,它将在绘图时为每个条目调用。值x将是输入,即计算出的自动百分比(3/5_100=60和2/5_100=40)。还有一些使用此这里的示例。计算总数是为了得到defaulted+FullyPaid (5)的和。对于每个标签,返回的值基本上都在字符串中,它是输入值x,它后面有一个小数位,后面有一个百分比符号({:.1f}%),然后是一个换行符,后面跟着计算出的字段(总计*x/100),它的格式是一个整数,没有小数({:.0f})。如果您需要有关字符串格式选项的更多信息,可以找到它这里。希望这能有所帮助。
发布于 2022-09-06 05:19:57
对同一饼图中计数的百分比使用自定义函数Series.value_counts:
#https://stackoverflow.com/a/71515035/2901002
def autopct_format(values):
def my_format(pct):
total = sum(values)
val = int(round(pct*total/100.0))
return '{:.1f}%\n({v:d})'.format(pct, v=val)
return my_format
s = df['LoanStatus'].value_counts()
plt.pie(s,labels = s.index, autopct=autopct_format(s))
#pandas only alternative
#s.plot.pie(autopct=autopct_format(s))

https://stackoverflow.com/questions/73616867
复制相似问题