熊猫:数据的简短摘要

时间:2018-01-31 08:38:39

标签: pandas dataframe summary

我目前使用以下函数来检查包含二进制数据的列中的数据分布(示例https://pastebin.com/QpWfREYB)。

print(pd.value_counts(df['binary']).apply(lambda x: x/len(data['label'])*100))

print(pd.value_counts(df['binary']).apply(lambda x: x))

输出:

A    65.466667
B    34.533333
Name: label, dtype: float64
A    7856
B    4144
Name: label, dtype: int64

是否有一种简单的方法可以获得如下输出:

A   7856    (65.67%)
B   4144    (65.67%)
Sum 12000   (100.00%)

1 个答案:

答案 0 :(得分:2)

我认为您需要两个系列中的concat,添加新行并最后添加()到最后一列:

df = pd.read_csv('https://pastebin.com/raw/QpWfREYB', sep='\s+')
print (df.head())
  binary
0      A
1      A
2      A
3      A
4      A


a = pd.value_counts(df['binary'])
b = a.div(len(df)).mul(100).round(2)
#same as
#b = pd.value_counts(df['binary'], normalize=True).mul(100).round(2)


df = pd.concat([a,b], axis=1, keys=('x','y'))
df.loc['Sum'] = df.sum()
df['y'] = '(' + df['y'].astype(str) + '%)'
print (df)

           x         y
A     7856.0  (65.47%)
C     4144.0  (34.53%)
Sum  12000.0  (100.0%)