用Python生成200个学生成绩数据,统计不及格、及格、中等、良好和优秀的占比并把200个成绩表打印出来
时间: 2024-11-24 14:40:54 浏览: 21
在Python中,你可以使用numpy库生成随机的成绩数据,然后通过pandas进行数据分析。下面是一个简单的示例:
```python
import numpy as np
import pandas as pd
# 定义成绩等级及其对应的分数区间
grades = {'F': (0, 60), 'D': (60, 75), 'C': (75, 85), 'B': (85, 95), 'A': (95, 100)}
# 随机生成200个成绩
scores = np.random.uniform(0, 100, size=200).astype(int)
# 根据成绩分组计数
group_counts = pd.value_counts(scores, sort=True, bins=len(grades))
# 计算百分比
percentages = group_counts / sum(group_counts) * 100
# 创建一个DataFrame来存储结果
result_df = pd.DataFrame({'等级': grades.keys(), '人数': group_counts, '占比%': percentages})
print(result_df)
```
在这个代码里,我们首先创建了一个包含各个等级及其对应分数区间的字典。接着生成了200个随机成绩,并将它们分为五个等级。然后计算每个等级的学生数量和总比例。
运行此程序后,你会得到一个DataFrame,其中列出了各等级的成绩分布以及对应的占比。
相关问题
用python设计一个学生信息表要求: (1)统计不及格学生的个数 (2)打印不及格学生的名字和对应的成绩 (3)统计未成年学生的个数 (4)打印手机尾号是8的学生的名字 (5) 打印最高分和对应学生的名字 (6)删除性别不明的所有的学生 (7)将列表按照学生成绩从大到小排序
回答:好的,这是一个学术问题,我可以回答。针对您的要求,可以使用Python语言设计一个学生信息表。以下是代码实现:
```python
# 定义学生信息列表
students = [
{'name': '张三', 'age': 18, 'gender': '男', 'score': 80, 'phone': '18812345678'},
{'name': '李四', 'age': 19, 'gender': '女', 'score': 60, 'phone': '18823456789'},
{'name': '王五', 'age': 17, 'gender': '男', 'score': 70, 'phone': '18834567890'},
{'name': '赵六', 'age': 16, 'gender': None, 'score': 90, 'phone': '18845678901'}
]
# 统计不及格学生的个数
fail_num = 0
for student in students:
if student['score'] < 60:
fail_num += 1
print('不及格学生的个数为:', fail_num)
# 打印不及格学生的名字和对应的成绩
print('不及格学生的名字和对应的成绩如下:')
for student in students:
if student['score'] < 60:
print(student['name'], student['score'])
# 统计未成年学生的个数
teenager_num = 0
for student in students:
if student['age'] < 18:
teenager_num += 1
print('未成年学生的个数为:', teenager_num)
# 打印手机尾号是8的学生的名字
print('手机尾号是8的学生名字如下:')
for student in students:
if student['phone'][-1] == '8':
print(student['name'])
# 打印最高分和对应学生的名字
max_score = 0
max_score_student = ''
for student in students:
if student['score'] > max_score:
max_score = student['score']
max_score_student = student['name']
print('最高分是:', max_score, '最高分学生的名字是:', max_score_student)
# 删除性别不明的所有的学生
for student in students.copy():
if student['gender'] is None:
students.remove(student)
# 将列表按照学生成绩从大到小排序
students.sort(key=lambda x: -x['score'])
# 打印排序后的学生信息
print('排序后的学生信息如下:')
for student in students:
print(student)
```
Python打开成绩表.xlsx 找到成绩列 找到成绩不及格的数据,将不合格的数据的那一行复制到新表不及格记录
好的,你可以使用Python中的pandas库和openpyxl库来实现这个需求。以下是一个示例代码:
```python
import pandas as pd
from openpyxl import Workbook, load_workbook
# 加载 excel 文件
wb = load_workbook(filename='成绩表.xlsx')
ws = wb.active
# 读取 excel 中的数据
df = pd.DataFrame(ws.values)
# 获取成绩列
score_col = df.iloc[:, 2]
# 找到成绩不及格的数据行
mask = score_col < 60
failed_rows = df[mask]
# 新建一个工作簿,并将不及格记录写入其中
failed_wb = Workbook()
failed_ws = failed_wb.active
for row in failed_rows.iterrows():
failed_ws.append(row[1])
# 保存工作簿
failed_wb.save('不及格记录.xlsx')
```
这段代码将会在同级目录下创建一个名为“不及格记录.xlsx”的新表格,并将成绩不及格的数据行复制到其中。注意,需要安装pandas库和openpyxl库。
阅读全文