将“大数据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”文件中。
时间: 2024-03-14 12:44:32 浏览: 171
好的,我明白了您的问题。这是一个数据处理的任务,需要使用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')
```
请注意,代码中的文件名和数据列名应根据实际情况进行修改。
阅读全文