如何浏览数据框中的每一列并执行计算?

时间:2018-04-06 18:45:39

标签: python pandas dataframe visualization

所以我使用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个变量,所以手动操作并不是真正有效...

在此之前,我会更新我提出的问题,因为这个问题是开放的

2 个答案:

答案 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}}