python - 仅使用来自 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()
解决方案
想到的最直接的方法就是简单地检查你的项目并将它们“计数”到字典中
假设你已经这样做了
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,否则我们增加当前计数
推荐阅读
- html - 为什么底部和顶部文本不在 3D Cuboid 中居中
- sql - MariaDB 创建视图将 SELECT 更改为不同的(不正确的)查询
- python - 比较两个 YAML 文件中的键并打印差异?
- flutter - 像 Instagram 一样的捏合功能
- android - 是否可以将 expo-google-sign-in 与 android 模拟器(Expo 客户端)一起使用
- c# - 在 LINQ 中合并两个列表列表
- reactjs - 为什么在不使用 useEffect 的情况下尝试从 localStorage 和 API 加载数据时数据结果显示两次?
- django-rest-framework - POST 方法的 DRF request.data 问题
- prometheus - Prometheus Windows Exporter 系统保留磁盘排除
- amazon-web-services - AWS Glue - 工作流程 - 连续运行两个作业问题