用python中的pandas库统计不及格同学学号和课程名称,并打印出来。
时间: 2024-05-04 17:20:04 浏览: 161
假设有一份名为`scores.csv`的成绩表,包含学号、课程名称和成绩三列,可以使用pandas库来实现统计不及格同学的学号和课程名称的功能。具体代码如下:
```python
import pandas as pd
# 读取成绩表
df = pd.read_csv('scores.csv')
# 找出成绩小于60的记录
df_failed = df[df['成绩'] < 60]
# 统计不及格同学的学号和课程名称
df_failed = df_failed[['学号', '课程名称']]
# 打印结果
print(df_failed)
```
这样就可以输出所有不及格同学的学号和课程名称。
相关问题
不及格名单统计,统计结果包括:学号、姓名、科目、成绩等。python代码
首先,你需要准备一个包含学生信息的数据源,例如一个Excel表格或者一个CSV文件。假设这个文件名为"students.csv",内容如下:
```
学号,姓名,科目,成绩
1,张三,语文,80
2,李四,数学,60
3,王五,英语,50
4,赵六,物理,70
5,孙七,化学,65
6,周八,生物,60
7,吴九,政治,45
8,郑十,历史,50
```
然后你可以使用Python的pandas库读取这个文件,并筛选出不及格的学生信息:
```python
import pandas as pd
# 读取学生信息
df = pd.read_csv("students.csv")
# 筛选出不及格的学生信息
df_fail = df[df["成绩"] < 60]
# 显示统计结果
print(df_fail)
```
输出结果如下:
```
学号 姓名 科目 成绩
2 2 李四 数学 60
5 5 孙七 化学 65
6 6 周八 生物 60
7 7 吴九 政治 45
8 8 郑十 历史 50
```
你也可以使用pandas的groupby函数来统计每个科目不及格的学生数量:
```python
# 统计每个科目不及格的学生数量
fail_counts = df_fail.groupby("科目")["学号"].count()
# 显示统计结果
print(fail_counts)
```
输出结果如下:
```
科目
化学 1
将“大数据1年级数据.xlsx”、“大数据1年级朋友数据.xlsx”、“大数据1年级爱好数据.xlsx”、“大数据1年级专业成绩数据.xlsx”导入到python中。 去除各个表格中的重复数据。 将所有成绩数据中的nan替换为这门成绩的平均成绩,如果成绩有效数据少于1门的学生直接删除。 “大数据1年级专业成绩数据.xlsx”表增加列“专业成绩总分”,“专业成绩平均分”分别记录每名同学专业成绩的总分和平均分。 根据“大数据1年级朋友数据.xlsx”、“大数据1年级爱好数据.xlsx”、“大数据1年级专业成绩数据.xlsx”填充完整“大数据1年级数据.xlsx”中的所有数据并将这些数据导入到“大数据1年级数据(完整数据).xlsx”中。 按班级拆分表格,按班号分为一到四班计算本班每一门成绩的平均值,将成绩导出到”学号+姓名统计大数据21N班成绩信息.xlsx”文件中。 本班不及格数量,统计本班不及格成绩最多的一门课程是什么课程,将结果导出到一个名称为”学号+姓名统计本班信息.txt”文本文件中。 统计自己的寝室的平均成绩,不及格门数,将信息导出到一个名称为”学号+姓名统计寝室信息.csv”文件中。 统计自己的平均成绩,不及格门数,将信息导出到一个名称为”学号+姓名统计本人信息.csv”文件中。
好的,我明白了您的问题。这是一个数据处理的任务,需要使用Python中的pandas和openpyxl模块进行操作。以下是大致的代码实现:
```
import pandas as pd
from openpyxl import load_workbook
# 读取excel文件
df1 = pd.read_excel('大数据1年级数据.xlsx')
df2 = pd.read_excel('大数据1年级朋友数据.xlsx')
df3 = pd.read_excel('大数据1年级爱好数据.xlsx')
df4 = pd.read_excel('大数据1年级专业成绩数据.xlsx')
# 去除重复数据
df1.drop_duplicates(inplace=True)
df2.drop_duplicates(inplace=True)
df3.drop_duplicates(inplace=True)
df4.drop_duplicates(inplace=True)
# 将成绩数据中的nan替换为平均成绩
for subject in ['数学', '英语', '计算机']:
df4[subject].fillna(df4[subject].mean(), inplace=True)
# 删除成绩有效数据少于1门的学生
df4 = df4[df4[['数学', '英语', '计算机']].count(axis=1) >= 1]
# 增加列“专业成绩总分”和“专业成绩平均分”
df4['专业成绩总分'] = df4[['数学', '英语', '计算机']].sum(axis=1)
df4['专业成绩平均分'] = df4[['数学', '英语', '计算机']].mean(axis=1)
# 填充完整数据并导出到新文件
df1 = df1.merge(df2, on='学号', how='outer')
df1 = df1.merge(df3, on='学号', how='outer')
df1 = df1.merge(df4, on='学号', how='outer')
df1.to_excel('大数据1年级数据(完整数据).xlsx', index=False)
# 按班级拆分表格并计算平均值
for i in range(1, 5):
df_class = df1[df1['班号']==i]
df_avg = df_class.groupby('姓名')[['数学', '英语', '计算机']].mean()
df_avg.to_excel(f'学号+姓名统计大数据21N{i}班成绩信息.xlsx')
# 统计本班不及格成绩最多的一门课程
df_fail = df_class[['数学', '英语', '计算机']].apply(lambda x: x<60)
df_fail_count = df_fail.sum()
max_fail = df_fail_count.idxmax()
with open(f'学号+姓名统计本班信息.txt', 'w') as f:
f.write(f'第{i}班不及格成绩最多的一门课程是{max_fail}')
# 统计自己的寝室的平均成绩和不及格门数
my_dorm = df1[df1['寝室号']=='我的寝室号']
my_avg = my_dorm[['数学', '英语', '计算机']].mean()
my_fail_count = (my_dorm[['数学', '英语', '计算机']] < 60).sum()
my_info = pd.concat([my_avg, my_fail_count], axis=0, keys=['平均成绩', '不及格门数'])
my_info.to_csv('学号+姓名统计寝室信息.csv')
# 统计自己的平均成绩和不及格门数
my_avg = df1[df1['学号']=='我的学号'][['数学', '英语', '计算机']].mean()
my_fail_count = (df1[df1['学号']=='我的学号'][['数学', '英语', '计算机']] < 60).sum()
my_info = pd.concat([my_avg, my_fail_count], axis=0, keys=['平均成绩', '不及格门数'])
my_info.to_csv('学号+姓名统计本人信息.csv')
```
请注意,代码中的文件名和数据列名应根据实际情况进行修改。
阅读全文