import numpy as np import pandas as pd import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False #(1)读取c:\ecnu_ks\root中的文件student_score.csv中的学生语文、数学、英语三列成绩数据,注意csv文件中的分隔符,且文件中含中文字符 #(2)数据清洗:清除三门课全部缺考的学生,将部分缺考的学生成绩设为0 #(3)数据统计和分析:输入一个总成绩,输出比这个总成绩高的人数。 #(4)绘制出数学成绩各成绩段的饼图并保存为"pie.png"。
时间: 2024-03-20 20:43:54 浏览: 83
以下是可能实现上述任务的 Python 代码示例:
```
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据
df = pd.read_csv(r'c:\ecnu_ks\root\student_score.csv', sep=',', encoding='utf-8')
# 数据清洗
df = df.dropna(subset=['语文', '数学', '英语'], how='all') # 删除全部缺考的学生
df = df.fillna(value=0) # 缺考成绩设为0
# 数据统计和分析
def count_higher_than_score(score):
return len(df[df.sum(axis=1) > score])
print("总成绩高于80分的人数:", count_higher_than_score(80))
# 绘图
bins = [0, 60, 70, 80, 90, 100] # 成绩分段
labels = ['不及格', '及格', '中等', '良好', '优秀'] # 成绩段标签
math_scores = pd.cut(df['数学'], bins=bins, labels=labels) # 分段
math_scores_counts = math_scores.value_counts() # 统计各成绩段人数
plt.pie(math_scores_counts, labels=math_scores_counts.index)
plt.title('数学成绩各成绩段饼图')
plt.savefig('pie.png')
plt.show()
```
需要注意的是,文件路径、成绩列的名称和分隔符可能需要根据实际情况进行修改。