day9总结

1.学生成绩表

 -*- coding: gbk -*-
import pandas as pd

读取Excel表格
df = pd.read_excel(r"D:\python_12\周五面试结果.xlsx")
print(df)
输出所有同学“名称:对应成绩”的信息
name_scores = df[['名称', '成绩']].values.tolist()
for name, score in name_scores:
    print("{}: {}".format(name, score))

输出分值最高和最低的同学名称及分数
max_score = df['成绩'].max()
print('-----', max_score)
min_score = df['成绩'].min()
highest_students = df[df['成绩'] == max_score]['姓名'].values.tolist()
lowest_students = df[df['成绩'] == min_score]['姓名'].values.tolist()
print("最高分:")
for student in highest_students:
    print("---最高分:{}: {}".format(student, max_score))
print("最低分:")
for student in lowest_students:
    print("---最低分{}: {}".format(student, min_score))
highest_students = df.nlargest(3, '成绩')[['名称', '成绩']].values.tolist()
print("最高分:")
for student, score in highest_students:
    print("---最高分:{}: {}".format(student, score))
lowest_students = df.nsmallest(3, '成绩')[['名称', '成绩']].values.tolist()
print("最低分:")
for student, score in lowest_students:
    print("---最低分:{}: {}".format(student, score))


求出平均值并输出
average_score = df['成绩'].mean()
print("平均分:", average_score)

输出高于平均值的同学名称及成绩
above_average_students = df[df['成绩'] > average_score][['名称', '成绩']].values.tolist()
print("高于平均分的同学:")
for student, score in above_average_students:
    print("{}: {}".format(student, score))

输出低于平均值的同学名称及成绩
below_average_students = df[df['成绩'] < average_score][['名称', '成绩']].values.tolist()
print("低于平均分的同学:")
for student, score in below_average_students:
    print("{}: {}".format(student, score))

将成绩排名信息写入csv格式的文件中
output_file = "test_yzl.csv"
df['排名'] = df['成绩'].rank(ascending=False, method='min').astype(int)
df.to_csv(output_file, index=False, float_format='%.2f', columns=['姓名', '成绩', '排名'])

生成一个图片,将前三名信息水印在这张图片上
import matplotlib.pyplot as plt

top3_students = df[df['排名'] <= 3][['名称', '成绩']]
plt.figure()
plt.imshow([[0, 0, 0]])
plt.axis('off')

plt.rcParams['font.family'] = 'SimSun'

plt.text(0.5, 0.5, top3_students.to_string(index=False), fontsize=12, color='white', verticalalignment='center',
         horizontalalignment='center')
plt.savefig("images/top3_students.png", bbox_inches='tight', pad_inches=0)
plt.close()
plt.show()

2.魔法方法示例

1.init() 初始化对象
class Person:
    def __init__(self, name):
        self.name = name


person = Person("Alice")


2.str() 返回对象的字符串表示
class Person:
    def __init__(self, name):
        self.name = name

    def __str__(self):
        return f"Person: {self.name}"


person = Person("Bob")
print(person)


3.len() 返回对象的长度
class MyList:
    def __init__(self, items):
        self.items = items

    def __len__(self):
        return len(self.items)


my_list = MyList([1, 2, 3, 4, 5])
print(len(my_list))


4.getitem() 获取对象的索引值
class MyList:
    def __init__(self, items):
        self.items = items

    def __getitem__(self, index):
        return self.items[index]


my_list = MyList([1, 2, 3, 4, 5])
print(my_list[2])


5.setitem() 设置对象的索引值
class MyList:
    def __init__(self):
        self.items = []

    def __setitem__(self, index, value):
        self.items[index] = value


my_list = MyList()
my_list[0] = 10
print(my_list.items)


6.getattr() 获取不存在的属性时调用
class Person:
    def __getattr__(self, attr):
        return f"Attribute {attr} does not exist."


person = Person()
print(person.name)


7.call() 使对象可调用
class Adder:
    def __call__(self, a, b):
        return a + b


add = Adder()
result = add(3, 4)
print(result)


8.iter() 返回一个迭代对象
class MyRange:
    def __init__(self, start, stop):
        self.start = start
        self.stop = stop

    def __iter__(self):
        return self

    def __next__(self):
        if self.start >= self.stop:
            raise StopIteration
        current = self.start
        self.start += 1
        return current


my_range = MyRange(1, 5)
for num in my_range:
    print(num)


9.enter()和exit() 上下文管理器方法
class FileManger:
    def __init__(self, filename):
        self.filename = filename

    def __enter__(self):
        self.file = open(self.filename, "w")
        return self.file

    def __exit__(self, exc_type, exc_value,  traceback):
        self.file.close()


with FileManger("file.txt") as file:
    file.write("Hello, World")


10.eq() 判断相等性
class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __eq__(self, other):
        return self.x == other.x and self.y == other.y


point1 = Point(1, 2)
point2 = Point(1, 2)
print(point1 == point2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值