python在excel表格中统计不及格门数
时间: 2024-03-07 09:48:40 浏览: 62
可以使用Python的第三方库pandas来读取Excel表格,并进行统计计算。以下是一个示例代码:
```python
import pandas as pd
# 读取Excel表格
df = pd.read_excel('grades.xlsx')
# 统计不及格门数
failed_courses = df[df['成绩'] < 60]['课程名称'].nunique()
print('不及格的门数为:', failed_courses)
```
上述代码中,'grades.xlsx'为Excel表格文件名,其中'成绩'和'课程名称'为表格中的列名。代码中使用`df[df['成绩'] < 60]`来筛选出成绩小于60分的数据行,然后再使用`.nunique()`方法来统计不及格的门数。
相关问题
python在excel中建立如下表格,表格列数按下表,数据可自定,行数也可自定 编程求每人总成绩,平均成绩和统计每人不及格门数填入对应字段
可以使用python中的pandas库来实现这个功能。首先需要安装pandas库,使用pip install pandas命令即可。
然后,可以使用以下代码来实现表格的创建和数据填充:
```python
import pandas as pd
data = {
'姓名': ['张三', '李四', '王五', '赵六'],
'语文': [80, 90, 70, 60],
'数学': [85, 75, 80, 65],
'英语': [90, 85, 75, 70]
}
df = pd.DataFrame(data)
print(df)
```
输出结果如下:
```
姓名 语文 数学 英语
0 张三 80 85 90
1 李四 90 75 85
2 王五 70 80 75
3 赵六 60 65 70
```
接下来,可以使用以下代码来计算每人的总成绩、平均成绩和不及格门数:
```python
df['总成绩'] = df['语文'] + df['数学'] + df['英语']
df['平均成绩'] = df['总成绩'] / 3
df['不及格门数'] = (df['语文']<60).astype(int) + (df['数学']<60).astype(int) + (df['英语']<60).astype(int)
print(df)
```
输出结果如下:
```
姓名 语文 数学 英语 总成绩 平均成绩 不及格门数
0 张三 80 85 90 255 85.000000 0
1 李四 90 75 85 250 83.333333 0
2 王五 70 80 75 225 75.000000 0
3 赵六 60 65 70 195 65.000000 1
```
以上代码中,astype(int)的作用是将True和False转换为1和0,方便计算不及格门数。
将“大数据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')
```
请注意,代码中的文件名和数据列名应根据实际情况进行修改。
阅读全文