gpt4 book ai didi

python - Pandas Dataframe 中的频率词典

转载 作者:太空宇宙 更新时间:2023-11-03 18:15:05 24 4
gpt4 key购买 nike

我正在尝试使用列名作为键从 Pandas 数据框中获取键值对的频率计数。

虽然有几个相关的问题,但没有一个真正帮助我实现我想要的,所以我编写了一个嵌套的 for 循环来实现我的目标:

#first get all key value pairs
d = {}
for var in list(df.columns.values):
d[var] = df[var].unique().tolist()

#then count
d_num = {}
for k,l in d.iteritems():
for v in l:
d_num[(k+'_'+str(v))] = len(df[df[k]==v])


freqs = Counter(d_num.values()).most_common()

显然,这很慢,但我想不出使用矢量化方法来做到这一点的方法。有什么想法吗?

编辑:这是一个示例输入:

   Name Animal Legs Color
0 Foo Dog 4 Brown
1 Bar Cat 4 White
2 Baz Cat 4 Black
3 Foo Bird 2 Black
4 Foo Dog 4 White

输出(不一定是字典,也不一定是那种键):

out = {Name_Foo: 3, Name_Bar:1, Name_Baz:1, Animal_Dog:2, Animal_Cat:2, Animal_Bird:1, Legs_2:1, Legs_4:4, Color_Brown:1, Color_White:2, Color_Black:2}

最佳答案

您可以使用value_counts为每一列分配一个字典以生成 Series 的字典:

In [19]:

temp={}
for col in df:
temp[col] = df[col].value_counts()
temp
Out[19]:
{'Animal': Dog 2
Cat 2
Bird 1
dtype: int64, 'Name': Foo 3
Baz 1
Bar 1
dtype: int64, 'Legs': 4 4
2 1
dtype: int64, 'Color': Black 2
White 2
Brown 1
dtype: int64}
In [21]:

temp['Animal']
Out[21]:
Dog 2
Cat 2
Bird 1
dtype: int64

如果您想访问“Dog”计数,则 temp['Animal']['Dog'] 将输出 2

关于python - Pandas Dataframe 中的频率词典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25146313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com