Numpy数据分析模块实训-【根据“某门课程平时成绩和期末考试成绩.csv”内容,计算课程的平时成绩和期末考试成绩的均值、标准差、方差、最小值、最大值,输出期末考试比平时成绩高的学生名单,并输出期末】

– – 该文章为本人原创!主要是用来记录学习的过程和分享给需要的博友。若有出错或者更好解决方法欢迎评论和私信交流学习!!!

Numpy数据分析模块实训

– 根据”某门课程平时成绩和期末考试成绩.csv”内容,计算课程的平时成绩和期末考试成绩的均值、标准差、方差、最小值、最大值,输出期末考试比平时成绩高的学生名单,并输出期末考试排名前10名的学生(如果期末成绩相同,则平时成绩高的排在前面)。

导入响应的工具包

import pandas as pd
import numpy as np

读取数据源文件

df = pd.read_csv("data/某门课程平时成绩和期末考试成绩.csv")

  • *这里打印出的结果

Numpy数据分析模块实训-【根据“某门课程平时成绩和期末考试成绩.csv”内容,计算课程的平时成绩和期末考试成绩的均值、标准差、方差、最小值、最大值,输出期末考试比平时成绩高的学生名单,并输出期末】

创建df_list,df_ps,df_qm对象并分别存储成绩数据

  • df_list——用来存储字典形式的成绩数据
  • df_ps——用来存储全部学生的平时成绩
  • df_qm——用来存储全部学生的期末成绩
df_list = []
df_ps = []
df_qm = []
for i in range(len(df)):
    df_list.append({'姓名':df['姓名'][i],'平时成绩':df['平时成绩'][i],'期末成绩':df['期末成绩'][i]})
    df_ps.append(df_list[i]['平时成绩'])
    df_qm.append(df_list[i]['期末成绩'])
print('df_list',df_list)
print('df_ps',df_ps)
print('df_qm',df_qm)
  • 输出结果:
df_list [{'姓名': 'stud_001', '平时成绩': 61.2, '期末成绩': 52.0}, {'姓名': 'stud_004', '平时成绩': 84.0, '期末成绩': 66.5}, {'姓名': 'stud_007', '平时成绩': 91.0, '期末成绩': 76.5}, {'姓名': 'stud_010', '平时成绩': 83.0, '期末成绩': 64.0}, {'姓名': 'stud_013', '平时成绩': 82.2, '期末成绩': 74.5}, {'姓名': 'stud_014', '平时成绩': 90.2, '期末成绩': 77.0}, {'姓名': 'stud_017', '平时成绩': 83.0, '期末成绩': 84.5}, {'姓名': 'stud_018', '平时成绩': 80.0, '期末成绩': 71.0}, {'姓名': 'stud_021', '平时成绩': 79.0, '期末成绩': 68.5}, {'姓名': 'stud_029', '平时成绩': 67.8, '期末成绩': 54.0}, {'姓名': 'stud_031', '平时成绩': 85.0, '期末成绩': 64.5}, {'姓名': 'stud_033', '平时成绩': 93.0, '期末成绩': 90.5}, {'姓名': 'stud_039', '平时成绩': 91.6, '期末成绩': 62.5}, {'姓名': 'stud_040', '平时成绩': 82.0, '期末成绩': 81.5}, {'姓名': 'stud_041', '平时成绩': 88.0, '期末成绩': 87.5}, {'姓名': 'stud_042', '平时成绩': 81.0, '期末成绩': 78.0}, {'姓名': 'stud_044', '平时成绩': 74.0, '期末成绩': 78.0}, {'姓名': 'stud_045', '平时成绩': 75.0, '期末成绩': 68.0}, {'姓名': 'stud_046', '平时成绩': 78.2, '期末成绩': 74.0}, {'姓名': 'stud_051', '平时成绩': 79.0, '期末成绩': 76.0}, {'姓名': 'stud_052', '平时成绩': 88.4, '期末成绩': 75.5}, {'姓名': 'stud_053', '平时成绩': 78.0, '期末成绩': 53.0}, {'姓名': 'stud_055', '平时成绩': 90.0, '期末成绩': 80.5}, {'姓名': 'stud_056', '平时成绩': 58.2, '期末成绩': 54.0}, {'姓名': 'stud_060', '平时成绩': 85.4, '期末成绩': 66.0}, {'姓名': 'stud_061', '平时成绩': 85.4, '期末成绩': 74.0}, {'姓名': 'stud_062', '平时成绩': 91.0, '期末成绩': 92.0}, {'姓名': 'stud_063', '平时成绩': 79.2, '期末成绩': 73.5}, {'姓名': 'stud_064', '平时成绩': 84.0, '期末成绩': 70.5}, {'姓名': 'stud_065', '平时成绩': 61.8, '期末成绩': 50.5}, {'姓名': 'stud_067', '平时成绩': 96.0, '期末成绩': 83.6}, {'姓名': 'stud_072', '平时成绩': 80.2, '期末成绩': 76.5}, {'姓名': 'stud_078', '平时成绩': 72.0, '期末成绩': 53.0}, {'姓名': 'stud_085', '平时成绩': 75.0, '期末成绩': 60.0}, {'姓名': 'stud_087', '平时成绩': 86.0, '期末成绩': 58.0}, {'姓名': 'stud_090', '平时成绩': 88.0, '期末成绩': 78.0}, {'姓名': 'stud_091', '平时成绩': 79.2, '期末成绩': 45.5}, {'姓名': 'stud_095', '平时成绩': 89.0, '期末成绩': 90.0}, {'姓名': 'stud_098', '平时成绩': 83.2, '期末成绩': 80.5}, {'姓名': 'stud_104', '平时成绩': 78.0, '期末成绩': 82.0}, {'姓名': 'stud_105', '平时成绩': 76.0, '期末成绩': 79.0}, {'姓名': 'stud_109', '平时成绩': 91.8, '期末成绩': 88.5}, {'姓名': 'stud_115', '平时成绩': 88.0, '期末成绩': 88.0}, {'姓名': 'stud_117', '平时成绩': 85.4, '期末成绩': 64.0}, {'姓名': 'stud_118', '平时成绩': 83.0, '期末成绩': 72.0}, {'姓名': 'stud_125', '平时成绩': 80.6, '期末成绩': 60.5}, {'姓名': 'stud_126', '平时成绩': 86.0, '期末成绩': 56.0}, {'姓名': 'stud_130', '平时成绩': 90.8, '期末成绩': 88.0}, {'姓名': 'stud_133', '平时成绩': 78.4, '期末成绩': 60.0}, {'姓名': 'stud_134', '平时成绩': 91.0, '期末成绩': 69.0}, {'姓名': 'stud_135', '平时成绩': 66.0, '期末成绩': 69.5}, {'姓名': 'stud_136', '平时成绩': 84.0, '期末成绩': 71.0}, {'姓名': 'stud_140', '平时成绩': 74.0, '期末成绩': 73.5}, {'姓名': 'stud_141', '平时成绩': 84.2, '期末成绩': 76.0}, {'姓名': 'stud_148', '平时成绩': 80.0, '期末成绩': 72.0}, {'姓名': 'stud_151', '平时成绩': 80.0, '期末成绩': 60.0}, {'姓名': 'stud_152', '平时成绩': 80.0, '期末成绩': 84.5}, {'姓名': 'stud_158', '平时成绩': 74.0, '期末成绩': 48.0}, {'姓名': 'stud_159', '平时成绩': 91.0, '期末成绩': 88.0}, {'姓名': 'stud_160', '平时成绩': 83.6, '期末成绩': 71.0}, {'姓名': 'stud_170', '平时成绩': 94.0, '期末成绩': 90.0}, {'姓名': 'stud_184', '平时成绩': 70.0, '期末成绩': 65.0}, {'姓名': 'stud_185', '平时成绩': 87.0, '期末成绩': 67.0}, {'姓名': 'stud_186', '平时成绩': 81.0, '期末成绩': 86.0}, {'姓名': 'stud_187', '平时成绩': 91.4, '期末成绩': 83.5}, {'姓名': 'stud_191', '平时成绩': 84.0, '期末成绩': 76.0}, {'姓名': 'stud_192', '平时成绩': 95.4, '期末成绩': 91.0}, {'姓名': 'stud_194', '平时成绩': 92.8, '期末成绩': 82.5}, {'姓名': 'stud_195', '平时成绩': 88.8, '期末成绩': 65.0}, {'姓名': 'stud_202', '平时成绩': 80.4, '期末成绩': 70.5}, {'姓名': 'stud_207', '平时成绩': 90.0, '期末成绩': 86.5}, {'姓名': 'stud_209', '平时成绩': 76.0, '期末成绩': 80.0}, {'姓名': 'stud_211', '平时成绩': 79.0, '期末成绩': 64.0}, {'姓名': 'stud_212', '平时成绩': 85.4, '期末成绩': 77.0}, {'姓名': 'stud_213', '平时成绩': 97.0, '期末成绩': 89.5}, {'姓名': 'stud_215', '平时成绩': 82.0, '期末成绩': 65.5}, {'姓名': 'stud_216', '平时成绩': 79.0, '期末成绩': 75.5}, {'姓名': 'stud_217', '平时成绩': 75.0, '期末成绩': 52.0}, {'姓名': 'stud_224', '平时成绩': 75.0, '期末成绩': 55.0}, {'姓名': 'stud_231', '平时成绩': 81.0, '期末成绩': 66.0}, {'姓名': 'stud_232', '平时成绩': 64.0, '期末成绩': 39.0}, {'姓名': 'stud_233', '平时成绩': 77.0, '期末成绩': 84.0}, {'姓名': 'stud_246', '平时成绩': 92.0, '期末成绩': 79.5}, {'姓名': 'stud_251', '平时成绩': 84.0, '期末成绩': 69.0}, {'姓名': 'stud_254', '平时成绩': 73.0, '期末成绩': 71.0}, {'姓名': 'stud_262', '平时成绩': 81.0, '期末成绩': 90.0}, {'姓名': 'stud_264', '平时成绩': 80.0, '期末成绩': 74.5}, {'姓名': 'stud_270', '平时成绩': 89.0, '期末成绩': 76.5}, {'姓名': 'stud_275', '平时成绩': 82.0, '期末成绩': 83.5}, {'姓名': 'stud_278', '平时成绩': 70.0, '期末成绩': 76.0}, {'姓名': 'stud_280', '平时成绩': 82.0, '期末成绩': 89.0}, {'姓名': 'stud_281', '平时成绩': 92.0, '期末成绩': 86.0}, {'姓名': 'stud_286', '平时成绩': 89.4, '期末成绩': 78.0}, {'姓名': 'stud_292', '平时成绩': 89.8, '期末成绩': 84.5}, {'姓名': 'stud_295', '平时成绩': 95.6, '期末成绩': 66.0}, {'姓名': 'stud_306', '平时成绩': 91.0, '期末成绩': 77.0}, {'姓名': 'stud_314', '平时成绩': 87.0, '期末成绩': 65.5}, {'姓名': 'stud_316', '平时成绩': 81.4, '期末成绩': 71.0}, {'姓名': 'stud_317', '平时成绩': 79.0, '期末成绩': 76.0}, {'姓名': 'stud_318', '平时成绩': 92.0, '期末成绩': 91.0}]
df_ps [61.2, 84.0, 91.0, 83.0, 82.2, 90.2, 83.0, 80.0, 79.0, 67.8, 85.0, 93.0, 91.6, 82.0, 88.0, 81.0, 74.0, 75.0, 78.2, 79.0, 88.4, 78.0, 90.0, 58.2, 85.4, 85.4, 91.0, 79.2, 84.0, 61.8, 96.0, 80.2, 72.0, 75.0, 86.0, 88.0, 79.2, 89.0, 83.2, 78.0, 76.0, 91.8, 88.0, 85.4, 83.0, 80.6, 86.0, 90.8, 78.4, 91.0, 66.0, 84.0, 74.0, 84.2, 80.0, 80.0, 80.0, 74.0, 91.0, 83.6, 94.0, 70.0, 87.0, 81.0, 91.4, 84.0, 95.4, 92.8, 88.8, 80.4, 90.0, 76.0, 79.0, 85.4, 97.0, 82.0, 79.0, 75.0, 75.0, 81.0, 64.0, 77.0, 92.0, 84.0, 73.0, 81.0, 80.0, 89.0, 82.0, 70.0, 82.0, 92.0, 89.4, 89.8, 95.6, 91.0, 87.0, 81.4, 79.0, 92.0]
df_qm [52.0, 66.5, 76.5, 64.0, 74.5, 77.0, 84.5, 71.0, 68.5, 54.0, 64.5, 90.5, 62.5, 81.5, 87.5, 78.0, 78.0, 68.0, 74.0, 76.0, 75.5, 53.0, 80.5, 54.0, 66.0, 74.0, 92.0, 73.5, 70.5, 50.5, 83.6, 76.5, 53.0, 60.0, 58.0, 78.0, 45.5, 90.0, 80.5, 82.0, 79.0, 88.5, 88.0, 64.0, 72.0, 60.5, 56.0, 88.0, 60.0, 69.0, 69.5, 71.0, 73.5, 76.0, 72.0, 60.0, 84.5, 48.0, 88.0, 71.0, 90.0, 65.0, 67.0, 86.0, 83.5, 76.0, 91.0, 82.5, 65.0, 70.5, 86.5, 80.0, 64.0, 77.0, 89.5, 65.5, 75.5, 52.0, 55.0, 66.0, 39.0, 84.0, 79.5, 69.0, 71.0, 90.0, 74.5, 76.5, 83.5, 76.0, 89.0, 86.0, 78.0, 84.5, 66.0, 77.0, 65.5, 71.0, 76.0, 91.0]

Process finished with exit code 0

对平时成绩和期末考试成绩分别求均值、标准差、方差、最小值、最大值

  • 平时成绩:
print('平时成绩的均值:',np.std(df_ps))
print('平时成绩的标准差:',np.std(df_ps))
print('平时成绩的方差:',np.var(df_ps))
print('平时成绩的最小值:',np.min(df_ps))
print('平时成绩的最大值:',np.max((df_ps)))
  • 输出结果:
平时成绩的均值: 7.911381927324707
平时成绩的标准差: 7.911381927324707
平时成绩的方差: 62.589964
平时成绩的最小值: 58.2
平时成绩的最大值: 97.0

Process finished with exit code 0
  • 期末成绩:
print('期末成绩的均值:',np.std(df_qm))
print('期末成绩的标准差:',np.std(df_qm))
print('期末成绩的方差:',np.var(df_qm))
print('期末成绩的最小值:',np.min(df_qm))
print('期末成绩的最大值:',np.max((df_qm)))

  • 输出结果:
期末成绩的均值: 11.791242682601355
期末成绩的标准差: 11.791242682601355
期末成绩的方差: 139.033404
期末成绩的最小值: 39.0
期末成绩的最大值: 92.0

Process finished with exit code 0

输出期末考试比平时成绩高的学生名单

df_qm_ps = []
for j in range(len(df)):
    if df_list[j]['期末成绩'] > df_list[j]['平时成绩']:
        df_qm_ps.append(df_list[j]['姓名'])
print('期末考试比平时成绩高的学生名单:\n',df_qm_ps)
  • 输出的结果:
期末考试比平时成绩高的学生名单:
 ['stud_017', 'stud_044', 'stud_062', 'stud_095', 'stud_104', 'stud_105', 'stud_135', 'stud_152', 'stud_186', 'stud_209', 'stud_233', 'stud_262', 'stud_275', 'stud_278', 'stud_280']

Process finished with exit code 0

创建列表来存储期末成绩前十名的数据

  • 用np.argsort 对期末成绩进行排序,并获得其下标排序
df_qm_ten = []
df_qm_ten_zan_qm = []
df_qm_ten_zan_ps = []
df_qm_argsort = np.argsort(df_qm)[-10:]
print(df_qm_argsort)
  • 输出结果:
[41 90 74 85 60 37 11 66 99 26]

Process finished with exit code 0

获得前十同学的期末和平时成绩的排序,并用lexsort函数进行二维排序

  • 用lexsort函数解决同分时比较平时成绩
for i in df_qm_argsort:

    df_qm_ten_zan_qm.append(df_list[i]['期末成绩'])
    df_qm_ten_zan_ps.append(df_list[i]['平时成绩'])
    ind = np.lexsort((df_qm_ten_zan_ps, df_qm_ten_zan_qm))

通过遍历的方法把期末成绩前十由大到小输出

df_qm_ps = []
for j in range(len(df)):
    if df_list[j]['期末成绩'] > df_list[j]['平时成绩']:
        df_qm_ps.append(df_list[j]['姓名'])
print('期末考试比平时成绩高的学生名单:\n',df_qm_ps)
  • 输出的结果:
期末考试比平时成绩高的学生名单:
 ['stud_017', 'stud_044', 'stud_062', 'stud_095', 'stud_104', 'stud_105', 'stud_135', 'stud_152', 'stud_186', 'stud_209', 'stud_233', 'stud_262', 'stud_275', 'stud_278', 'stud_280']

Process finished with exit code 0

完整代码

GitHub:完整代码

Numpy数据分析模块实训-【根据“某门课程平时成绩和期末考试成绩.csv”内容,计算课程的平时成绩和期末考试成绩的均值、标准差、方差、最小值、最大值,输出期末考试比平时成绩高的学生名单,并输出期末】

Original: https://blog.csdn.net/weixin_51355074/article/details/123525238
Author: 沐沐不是沫
Title: Numpy数据分析模块实训-【根据“某门课程平时成绩和期末考试成绩.csv”内容,计算课程的平时成绩和期末考试成绩的均值、标准差、方差、最小值、最大值,输出期末考试比平时成绩高的学生名单,并输出期末】

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/696169/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球