使用numpy对csv文件进行处理

题目要求:(基础题)根据“某门课程平时成绩和期末考试成绩.xlsx”内容,计算课程的平时成绩和期末考试成绩的均值、标准差、方差、最小值、最大值,输出期末考试成绩排名有进步学生的名单。

           

以上是源文件的格式。计算分析都有特定的函数比较简单,分享一下最后一根成绩排名有进步的名单。

编程思路:

根据平时成绩排名和期末成绩排名对比来判断是否进步。

①使用np.loadtxt读取文件返回数组

②使用np.argsort进行列排序,因为这个返回值是源数据的索引值,根据索引值可以找到同一位同学的平时成绩和期末成绩数据。

③经过排序后的数组又有了新的下标索引,是按照从小到大排序,所以第一步,找到排序后源数据的索引值,再比较新的下标索引,因为是从小到大排序,所以比较( [i][0],[j][1]  ) ij的大小即可。

程序代码:

程序代码:
import numpy as np
loaded_data1 = np.loadtxt("某门课程平时成绩和期末考试成绩.csv",dtype='bytes',delimiter=",",usecols=(0,1)).astype(str)  #读取含有多个数组的文件
argsort_data1=np.argsort(loaded_data1,axis=0)#以列进行排序,返回下标索引
k=0#计算总进步人数
for i in range(len(loaded_data1)):
    for j in range(len(loaded_data1)):
        if(argsort_data1[i][0]==argsort_data1[j][1]):#找到排序后下标索引相同的值
            if(i<j):#判断返回数组索引的值
                k=k+1
                print(argsort_data1[i][0],argsort_data1[j][1])
print("总进步人数:",k)

ps:说明一下,源文件先另存为csv格式,另外把头部信息的两行删除,因为会乱码。

如果哪位小伙伴有更好解决这道题的办法,尽请分享,以及头部信息处理的时候能不能不删除(疑惑????)

猜你喜欢

转载自blog.csdn.net/Onehh2/article/details/88695147