我们如果想要操作excel表格要使用到pandas模块,可以使用pip install pandas进行下载使用。
读取表格文件内容的命令代码为
df = pd.read_excel(文件名)
输出所有学生的姓名以及成绩信息代码为
for index, row in df.iterrows():
print(f"{row['姓名']}: {row['成绩']}")
df是我们在上边刚刚获取到的文件内容,对它进行for循环遍历输出数据
查找成绩最高和最低的同学代码为
min_score = df['成绩'].min()
max_score = df['成绩'].max()
min_students = df[df['成绩'] == min_score][['姓名', '成绩']]
max_students = df[df['成绩'] == max_score][['姓名', '成绩']]
print("分值最低的同学:")
for index, row in min_students.iterrows():
print(f"{row['姓名']}: {row['成绩']}")
print("分值最高的同学:")
for index, row in max_students.iterrows():
print(f"{row['姓名']}: {row['成绩']}")
当表格中不存在字符串数据的时候可以直接使用这种方式输出得到想要的数据,如果表格中存在字符串数据的话,则需要加一行命令:
df['成绩'] = pd.to_numeric(df['成绩'], errors='coerce')
当成绩列中存在字符串值,函数无法处理字符串值。可以以这种方式先将成绩列转换为数值类型。
求平均成绩的代码为
average_score = df['成绩'].mean()
average_score = round(average_score, 2)
print("平均分数:", average_score)
使用mean函数求出平均成绩之后可以使用round选择保留小数的位数
输出高于平均值和输出低于平均值的同学名称及成绩的代码为
# 输出高于平均值的同学名称及成绩
above_average = df.loc[df['成绩'] > average_score, ['姓名', '成绩']]
print("高于平均值的同学和成绩:")
for index, row in above_average.iterrows():
print(f"{row['姓名']}: {row['成绩']}")
# 输出低于平均值的同学名称及成绩
below_average = df.loc[df['成绩'] < average_score, ['姓名', '成绩']]
print("低于平均值的同学和成绩:")
for index, row in below_average.iterrows():
print(f"{row['姓名']}: {row['成绩']}")
我们这里只需要判断成绩是否高于平均值,然后循环遍历输出数据即可拿到想要的数据
将成绩排名信息写入csv格式的文件中,文件名称为:test_你自己的名字_时间戳.csv
# 导入时间模块
from datetime import datetime
# 排序成绩
sorted_df = df.sort_values(by='成绩', ascending=False)
# 获取当前时间戳
timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
# 构造文件名
filename = f"sak_{timestamp}.csv"
# 将成绩排名信息写入CSV文件
sorted_df.to_csv(filename, index=False)
print(f"已将成绩排名信息写入文件: {filename}")
根据题目要求我们先导入时间模块,然后对成绩进行排序,然后使用datetime方法得到当前的时间戳,再把姓名和时间戳拼接起来作为我们的文件名,再通过to_csv方法写入CSV文件
生成一个图片,将前三名的信息水印在这张图片上,将图片保存
# 导入模块
from PIL import Image, ImageDraw, ImageFont
# 读取数据和原始图片
image_path = "tp.jpg" # 选择你的背景图片路径
image = Image.open(image_path)
# 排序成绩获取前三名的成绩
sorted_df = df.sort_values(by='成绩', ascending=False)
top_three = sorted_df.head(3)
# print(top_three)
# 创建一个可以用于添加文本的ImageDraw对象
draw = ImageDraw.Draw(image)
# 设置字体、字号、颜色和位置
font_path = "C:/Windows/Fonts/simhei.ttf" # 你的字体文件路径
font = ImageFont.truetype(font_path, size=50)
text_color = (255, 255, 255) # 白色
text_position = (50, 50) # 文本起始位置
# 添加前三名信息作为水印添加到图片
for i, (_, row) in enumerate(top_three.iterrows()):
name = row['姓名']
score = row['成绩']
text = f'{i + 1}. {name}: {score}'
draw.text(text_position, text, fill=text_color, font=font)
text_position = (text_position[0], text_position[1] + 50)
filename = f'zss_{timestamp}.jpg'
image.save(filename)
print('添加成功')
我们通过PIL库在Python中处理和操作图像,如果没有PIL库可以通过pip install pillow命令安装。安装完成后,我们求出排序成绩前三名的信息,设置好字号颜色等参数以及要添加的图片路径然后就可以添加了。