所以我使用plt.subplots()在单个输出中绘制多个图形,同时使用matplotlib魔术函数。
无论如何,我注意到我对我的数据帧的每个“变量”或列进行了相同的计算。基本上,它看起来像这样
%matplotlib inline
fig, (ax1,ax2,ax3) =plt.subplots(nrows=1, ncols=3, sharex=False, sharey=True, figsize=(5,5))
#PAPERLESS
ACCOUNT= df.groupby(['PAPERLESS'])['ACCOUNT'].count().rename('ACCOUNT')
cases=df.groupby(['PAPERLESS'])['cases'].sum().rename('cases')
paperless=pd.concat([ACCOUNT,cases],axis=1)
tempdf=paperless
tempdf['percent']=tempdf['cases']/tempdf['ACCOUNT']*100
print(tempdf)
graph1=tempdf['percent'].plot(y='percent',kind='bar', ax=ax1)
ax1.set_title("Paperless")
graph1.yaxis.set_major_formatter(mtick.PercentFormatter())
plt.tight_layout()
所以,我清楚地从变量'paperless'开始获取数据框中每列的帐单数量。 现在,我想计算每个变量的帐户,从我拥有的案例数中找出它们的百分比,并绘制它。如何使用函数或某种类型的for循环自动执行此操作?我有大约15个变量,所以手动操作并不是真正有效...
在此之前,我会更新我提出的问题,因为这个问题是开放的
答案 0 :(得分:0)
df.apply(func,axis,addl args)
这会将您的函数应用于指定数据框中的元素。我应该注意,出于优化原因,使用此方法将在第一个记录上应用该函数两次,因此如果您的函数附加了一个列表,一个迭代器或您可以使用的数据帧之外的其他内容:
for i in df.index:
myFunc(df.at[i, column],df.at[i, column2])
该语法的原因是您无法使用iterrows等更改数据框中的值。作为一般规则,你不想改变你在熊猫中重复的东西。
答案 1 :(得分:0)
我认为这有助于你做到这一点
{{1}}