我有一个数据框,我想在特定列中提取0/1的频率。
df=pd.DataFrame({'A':[0,0,1,0,1]})
df
Out[6]:
A
0 0
1 0
2 1
3 0
4 1
计算出现频率为0 / 1s -
df['A'].value_counts()
Out[8]:
0 3
1 2
Name: A, dtype: int64
type(df['A'].value_counts())
Out[9]: pandas.core.series.Series
如何提取0和1的频率,让我们假设两个变量,1和0为 -
zeros=3, ones=2
答案 0 :(得分:1)
我认为返回字典会更灵活一些:
In [234]: df['A'].value_counts().to_dict()
Out[234]: {0: 3, 1: 2}
或
In [236]: d = df['A'].astype(str).replace(['0','1'], ['zeros','ones']).value_counts().to_dict()
In [237]: d
Out[237]: {'ones': 2, 'zeros': 3}
In [238]: d['ones']
Out[238]: 2
In [239]: d['zeros']
Out[239]: 3
您也可以直接访问它:
In [3]: df['A'].value_counts().loc[0]
Out[3]: 3
In [4]: df['A'].value_counts().loc[1]
Out[4]: 2
答案 1 :(得分:0)
解决此问题的另一种方法是使用collections library
和函数counter()
。
import collections
c = collections.Counter(df['A'])
c
Out[31]: Counter({0: 3, 1: 2})
count_0s=c.Counter(df['A'])[0]#Returns 3
count_1s=c.Counter(df['A'])[1]#Returns 2