编写程序,在目录 d:\python 下读取 Excel 文件“score.xlsx”,计算平均成绩后写入 Excel 文 件“scoreResult.xlsx”,要求如下: ①最后一列统计每个学生的平均分,保留 2 位小数,列名为“平均成绩”; ②最后一行统计各科成绩的平均分,保留 2 位小数。
时间: 2024-02-16 12:00:38 浏览: 67
这是一个比较典型的 Python 处理 Excel 文件的问题,需要使用到 pandas 和 openpyxl 两个库。下面是实现这个功能的 Python 代码:
```python
import pandas as pd
# 读取 Excel 文件
df = pd.read_excel('d:/python/score.xlsx')
# 计算每个学生的平均分
df['平均成绩'] = df.mean(axis=1).round(2)
# 计算各科成绩的平均分
df.loc['平均成绩'] = df.mean()
# 将结果写入 Excel 文件
df.to_excel('d:/python/scoreResult.xlsx', index=False)
```
这段代码首先使用 pandas 库的 read_excel 函数读取原始的 Excel 文件,然后使用 mean 函数计算每个学生的平均分并添加到 DataFrame 中,再使用 loc 函数计算各科成绩的平均分并添加到 DataFrame 中的最后一行。
最后,使用 to_excel 函数将处理好的 DataFrame 写入到新的 Excel 文件中,并指定参数 index=False 表示不写入行索引。
相关问题
编写程序,在目录 d:\python 下读取 Excel 文件“score.xlsx”,计算平均成绩后写入 Excel 文 件“scoreResult.xlsx”
好的,以下是 Python 代码实现:
```python
import openpyxl
# 读取 Excel 文件
workbook = openpyxl.load_workbook('d:/python/score.xlsx')
worksheet = workbook.active
# 计算平均成绩
sum = 0
count = 0
for row in worksheet.iter_rows(min_row=2, values_only=True):
sum += row[1]
count += 1
average = sum / count
# 写入 Excel 文件
result_workbook = openpyxl.Workbook()
result_worksheet = result_workbook.active
result_worksheet['A1'] = '平均成绩'
result_worksheet['B1'] = average
result_workbook.save('d:/python/scoreResult.xlsx')
```
注意,以上代码使用了 OpenPyXL 库来读写 Excel 文件,如果你的电脑上没有安装该库,请先安装。
编写Python程序,从score.json读取成绩数据,计算本人成绩的平均学分绩点(保留两位小数)、学分加权平均成绩(保留两位小数)、必修课程曾不及格学分,并保存到Excel文件中,名称为score.xlsx
在Python中,我们可以使用`json`模块读取JSON文件,`pandas`处理数据,`openpyxl`或`xlsxwriter`库来写入Excel。以下是一个示例程序:
```python
import json
import pandas as pd
# 1. 读取 JSON 文件
def read_score_json(file_name):
with open(file_name, 'r') as f:
data = json.load(f)
return data
# 2. 计算学生成绩
def calculate_average(data):
grades = [item['grade'] for item in data]
credits = [item['credit'] for item in data]
# 平均学分绩点 (GPA)
gpa = sum(grade * credit for grade, credit in zip(grades, credits)) / sum(credits)
# 学分加权平均成绩
weighted_avg = sum(grade * credit for grade, credit in zip(grades, credits))
# 找出必修课中曾不及格的学分
required_courses = [item for item in data if item.get('required', False)]
failed_credits = len([grade for grade in [g['grade'] for g in required_courses] if grade < 60])
return round(gpa, 2), round(weighted_avg, 2), failed_credits
# 3. 写入 Excel
def write_to_excel(df, output_file):
df.to_excel(output_file, index=False)
# 使用函数
data = read_score_json('score.json')
average_gpa, weighted_avg, failed_credits = calculate_average(data)
# 将结果整理成 DataFrame
df = pd.DataFrame(data=[{'Average GPA': average_gpa, 'Weighted Average Score': weighted_avg, 'Failed Credits in Required Courses': failed_credits}])
output_file = 'score.xlsx'
write_to_excel(df, output_file)
阅读全文