熊猫:如何总结大小不等的数据集?

时间:2019-01-16 16:41:53

标签: python pandas

假设我有个不同大小的数据集,例如X_1 = [1,2,3]X_2 = [4,5,6,7,8]。我想创建一个具有摘要变量(均值,std等)的数据框,每行一个数据集,每列统计一次。如何在熊猫中做到这一点?

2 个答案:

答案 0 :(得分:5)

我将使用describe

df=pd.concat([pd.Series(x) for x in [X_1, X_2]], axis=0, keys=['X_1', 'X_2'])# notice here I am using axis=0 rather than 1 
df.groupby(level=0).describe()
Out[442]: 
     count  mean       std  min  25%  50%  75%  max
X_1    3.0   2.0  1.000000  1.0  1.5  2.0  2.5  3.0
X_2    5.0   6.0  1.581139  4.0  5.0  6.0  7.0  8.0

特殊情况

X_1 = [1,2,np.nan] 
X_2 = [4,5,6,7,8]

df=pd.concat([pd.Series(x) for x in [X_1, X_2]], axis=0, keys=['X_1', 'X_2'])
df.groupby(level=0).size()
Out[445]: 
X_1    3
X_2    5
dtype: int64

答案 1 :(得分:2)

您可以将Series连接到DataFrame,然后使用.agg。会插入NaN来填充不等长的单元格,但是默认情况下,大多数pandas agg函数在计算时都会忽略它们。

import pandas as pd
df = pd.concat([pd.Series(x) for x in [X_1, X_2]], axis=1, keys=['X_1', 'X_2'])

df.agg(['mean', 'std']).T
#     mean       std
#X_1   2.0  1.000000
#X_2   6.0  1.581139

如果列表很多,最好将它们保存在字典中,以避免分别写出键和列表