计算熊猫数据框和图分布列表中列的平均值

时间:2020-03-16 02:46:15

标签: python pandas numpy dataframe seaborn

我有一个dflist的熊猫数据帧列表,我想在dflist的数据帧中绘制单列子集的平均分布。

这是我到目前为止的代码:

import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


df1 = pd.DataFrame(np.random.rand(100, 6) , columns=list('ABCXYZ'))
df2 = pd.DataFrame(np.random.rand(100, 6) , columns=list('ABCXYZ'))
df3 = pd.DataFrame(np.random.rand(100, 6) , columns=list('ABCXYZ'))

dflist = [df1,df2,df3]

for i in np.arange(3):
    sns.distplot(dflist[i][70:90]['A'], bins=None, hist=True, kde=True, rug=False)
plt.show()

这将返回一个不错的图: enter image description here

但是,我想要的是数据帧中这三列的平均分布,因此只有一行而不是三行。预先感谢!

1 个答案:

答案 0 :(得分:1)

userNotificationCenter: didReceive: withCompletionHandler是三个元素的列表。您在该行中的索引顺序:

dflist

是错误的,因为它试图通过dflist[70:90][i]['A'] 进行索引并首先过滤行,从而导致DataFrame

此索引编制为:

IndexError

,它将首先从dflist[i][70:90]['A'] DataFrame中选择df1,然后过滤数据行。

对于第二个关于如何产生平均分布的问题,接下来的问题如何?

df3

此代码通过连接avg_df = pd.concat([df['A'] for df in dflist], axis=1) avg_df["mean"] = avg_df.mean(axis=1) sns.distplot(avg_df.loc[avg_df.index[70:90], 'mean'], bins=None, hist=True, kde=True, rug=False) plt.show() 中每个avg_df中的'A'列来产生新的DataFrame DataFrame来工作。然后,它沿着该dflist的行计算平均值。最后,它为DataFrame编制索引,以仅保留选定的行(avg_df)和“平均值”列。 Average distribution

相关问题