我需要打印列名称以及每个值在其中出现的次数。该数据集有 6 个不同的列,我需要它打印 3 个列,即“源”、“目标”和“协议”,每个列按降序排列。我在这里搜索过,我能找到的只是有人只想打印一列,我需要它来打印 3 列。这是 file
我已经让它打印我需要的所有列和计数,但我认为它正在打印所有列的计数,我需要为每一列单独计数,我不知道如何得到它去做。我尝试在每个标题周围加上括号,但这不起作用。这就是我所拥有的:
import pandas as pd
from collections import Counter
unitnine_dataset = 'IN300_Unit9.csv'
unitnine_dataset = pd.read_csv(unitnine_dataset, sep=',',
decimal='.', header='infer')
df = pd.DataFrame(unitnine_dataset)
count = df[['Source', 'Destination', 'Protocol']].value_counts(ascending=False)
print(count)
您可能希望通过某种字典来累积计数,其中键是您感兴趣的列和各个
Counter()
对象的值。
这是概念证明:
import csv
import io
import collections
test_data = """
name,col1,col2
a,1,1a
b,2,b2
c,1,b2
""".strip()
columns_meta = {}
with io.StringIO(test_data) as file_in: ## simulare open()
for row in csv.DictReader(file_in):
for key, value in row.items():
columns_meta.setdefault(key, collections.Counter())[value] += 1
for col, val in columns_meta.items():
print(f"column: {col}")
for value, count in val.most_common():
print(f"\t{value}: {count}")
这应该给你:
column: name
a: 1
b: 1
c: 1
column: col1
1: 2
2: 1
column: col2
b2: 2
1a: 1