Padnas实现数学建模比赛结果统计

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29027865/article/details/83932710

一.前言

数模结果已出,如果你在了解自己成绩的同时,也想了解下同校别人的成绩,或者还想再了解下别校获奖的情况。靠一个个ctrl+f查,不如利用pandas来实现下

二.流程图

流程图

三.实现

  1. 按行统计
df1 = df[['队长所在单位','奖项','序号']].groupby(['队长所在单位','奖项']).count()
df1 = df1.rename(columns={'序号':'个数'})

结果显示如下:
在这里插入图片描述
2. 按列统计

def data_sta(df,name1):
    df_test = df[df['奖项'] ==str(name1)]
    df_test = df_test[['队长所在单位','序号']].groupby(['队长所在单位']).count()
    df_test = df_test.rename(columns={'序号':str(name1)})
    return df_test

#使用外连接进行连接
def merge_all(df1,df2,df3,df4):
    df_merge = df1.merge(df2,on='队长所在单位').\
                merge(df3,how='outer',on='队长所在单位').\
                merge(df4,how='outer',on='队长所在单位')
    return df_merge
if __name__ == '__main__':
    df= pd.read_excel("2018年最终获奖名单_C题.xls")
    df1 = data_sta(df,'一等奖')
    df2 = data_sta(df,'二等奖')
    df3 = data_sta(df,'三等奖')
    df4 = data_sta(df,'成功参与奖')
    df_merge = merge_all(df1,df2,df3,df4)

结果如下:
在这里插入图片描述

其中一些方法可以参考:
pandas操作总结
pandas进阶

实现的代码还待优化改进:

  1. 封装函数可以再用for循环改进;
  2. 实现的只为c题的读入,可以一次性读入多个文件,汇总为一份数据;
  3. 增加保存选项

时间有限,后续补上,欢迎一起交流拍砖

猜你喜欢

转载自blog.csdn.net/qq_29027865/article/details/83932710
今日推荐