gpt4 book ai didi

python-3.x - 使用 Pandas 和集合计算每列中某些值的数量

转载 作者:行者123 更新时间:2023-12-04 02:32:12 25 4
gpt4 key购买 nike

我有一个包含 9 列和 6 行的 txt 文件。前 8 列是以下值之一:“1”、“2”和“3”。我将这些列命名为“A”到“H”。我将最后一列命名为:“类”。最后一列是名称:“HIGH”。这是 txt 文件 (data.txt):

1,1,1,1,2,1,1,3,HIGH 
1,1,1,2,2,1,1,3,HIGH
1,1,1,1,1,1,1,3,HIGH
1,1,1,2,1,1,1,3,HIGH
1,1,1,3,2,1,1,3,HIGH
1,1,1,2,1,2,1,3,HIGH

我正在尝试计算每列中每个值的数量并打印一个列表,该列表应包含 3 个组件,包括该列中“1”、“2”和“3”值的数量 分别。例如,在第一列(例如 A)中,所有值都是“1”。我希望得到:A : [6,0,0]。对于所有值为“3”的第 8 列(例如 H),我希望得到:H : [0,0,6] 或者对于第四列(例如 D)我有两个“1”,三个“2”和一个“3”。所以我期望:D : [2,3,1]。我尝试使用 pandascollection 来完成它。这是我所做的:

import pandas as pd
from collections import Counter

df = pd.read_csv('data.txt')
df.columns = ['A','B','C','D','E','F','G','H','class']

X = df.ix[:, 0:8].values
y = df.ix[:, 8].values

deg = ['HIGH']

names = ['A','B','C','D','E','F','G','H']

for j in range(0, 8):

freqs = Counter(X[y == deg[0], j])
print(names[j],':',list(freqs.values()))

以上代码的输出是空列表。这是它返回的内容:

A : []
B : []
C : []
D : []
E : []
F : []
G : []
H : []

如何修改上面的代码来得到我想要的?谢谢!

最佳答案

使用 pandas.Series.value_counts

df.loc[:, :"H"].apply(pd.Series.value_counts).fillna(0).to_dict("l")

输出:

{'A': [6.0, 0.0, 0.0],
'B': [6.0, 0.0, 0.0],
'C': [6.0, 0.0, 0.0],
'D': [2, 3, 1],
'E': [3.0, 3.0, 0.0],
'F': [5.0, 1.0, 0.0],
'G': [6.0, 0.0, 0.0],
'H': [0.0, 0.0, 6.0]}

关于python-3.x - 使用 Pandas 和集合计算每列中某些值的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63609435/

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