首页 > 解决方案 > 仅使用来自 csv 文件的每门课程的基本 python 计数学生(除了 python 之外没有其他字典)

问题描述

初始 CSV 文件包含这些列和行

注册代码,学生 ID

10030,55000

10030,55804

10250,55804

10510,55000

读取 csv 文件后,数据列表变为子列表列表

import csv
data=[]
with open('C:/Users/Taha/Downloads/Data.csv','r') as csvFile:
    reader = csv.reader(csvFile)
    data=list(reader)
    print(data)

csvFile.close()

上述代码的输出将此作为数据。

data=[['enroll_code', 'student_id'], ['10030', '55000'], ['10030', '55804'], ['10250', '55804'], ['10510', '55000']]

我需要的结果是

10030:2

10250:1

10510:1

如何将其转换为字典并让键 10030 代表和计算两个 student_id

当我做:

import csv
data={}
with open('C:/Users/Taha/Downloads/Data.csv','r') as csvFile:
    reader = csv.DictReader(csvFile)
    data=dict(reader)
    print(data)

csvFile.close()

它只给出输出:{'enroll_code': 'student_id'}

我需要的是一种让python计算enroll_code出现次数的方法,假设CSV文件中有一个thausand条目并且enroll_code和student_id在整个CSV文件中重复,我如何对其进行编码以获得所需的结果。

基本上我想在基础python中编写下面的代码会产生什么

import pandas as pd

df=pd.read_csv('data.csv')
df.gourpby('enroll_code').count()

标签: pythonpython-3.x

解决方案


想到的最直接的方法就是简单地检查你的项目并将它们“计数”到字典中

假设你已经这样做了

data=list(reader)

然后你可以这样做:

result = {}
for item in data[1:]:
    if item[0] not in result :
        result [item[0]] = 1
    else:
        result [item[0]] += 1

我们将逐项检查您的数据,跳过标题(这就是我们拥有该data[1:]部分的原因),检查该项目是否在字典中,如果不是,我们将其添加为计数 1,否则我们增加当前计数


推荐阅读