将给定目录(课程成绩)中每一个excel表格中的期末成绩读取出来,然后分段显示>=90、>=80 and <90、>=70 and <80、>=60 and <70、<60 and >=0 的学生人数以及在班级人数当中的比例。
时间: 2024-02-11 19:08:35 浏览: 117
好的,这是一个比较复杂的问题,需要使用Python编程来实现。
首先,需要安装pandas库,可以使用以下命令进行安装:
```python
pip install pandas
```
接下来,我们可以使用pandas库中的read_excel函数来读取目录中的每一个excel表格,并将数据合并成一个DataFrame。具体代码如下:
```python
import os
import pandas as pd
dir_path = './课程成绩' # 目录路径
file_list = os.listdir(dir_path) # 获取目录下所有文件名
df_list = []
for file_name in file_list:
if file_name.endswith('.xlsx'): # 仅读取.xlsx文件
file_path = os.path.join(dir_path, file_name)
df = pd.read_excel(file_path)
df_list.append(df)
result_df = pd.concat(df_list, ignore_index=True) # 合并所有DataFrame
```
接下来,我们可以使用pandas库中的cut函数将成绩分段,并统计每个分段的学生人数和比例。具体代码如下:
```python
score_bins = [0, 60, 70, 80, 90, 100] # 分数段
score_labels = ['<60', '>=60 and <70', '>=70 and <80', '>=80 and <90', '>=90'] # 分数段标签
result_df['score_range'] = pd.cut(result_df['score'], bins=score_bins, labels=score_labels) # 将成绩分段
score_count = result_df['score_range'].value_counts() # 统计每个分段的学生人数
score_ratio = score_count / len(result_df) # 计算每个分段的比例
```
最后,我们可以使用print函数来输出统计结果。具体代码如下:
```python
for i in range(len(score_labels)):
label = score_labels[i]
count = score_count[label]
ratio = score_ratio[label]
print('{}: {}人,占比{:.2%}'.format(label, count, ratio))
```
运行以上代码,即可实现读取目录中每一个excel表格中的期末成绩,并分段显示学生人数以及在班级人数当中的比例。
阅读全文