python excel处理成绩_用Python怎样处理excel文件数据?

修改@2018-09-01:

import pandas as pd

import numpy as np

def readexcel(fn):

return pd.read_excel(fn, index_col=0)

def ranking(df):

df['总分'] = df.sum(axis=1)

df['名次'] = df['总分'].rank(ascending = False)

return df

f_s1, f_s2 = "s1.xlsx", "s2.xlsx"

s1, s2 = readexcel(f_s1), readexcel(f_s2)

s1, s2 = ranking(s1), ranking(s2)

s2['进步'] = s2['名次'] - s1['名次']

s2['分数'] =(s2['名次'] - s1['名次'])/2

s3 = s2[['进步','分数']].copy()

s3['进步'] = np.where(s3['进步']<0,-5,s3['分数'])

s3.to_excel("s3.xlsx")

修改的原因是讲《Python for Data Analysis》这本书时意识到新增加一列可以直接用df['']这样的方式来进行,不一定要用assign。之前“总分"和”进步“,”名次“用英文也是因为当时不得不使用assign的原因。

修改后的代码测试通过可以使用。

————————————

最近正在学习python Pandas这个库,于是发现如果使用pandas来处理你的问题的话可能会比较容易一些。

下面的代码里面,f_s1和f_s2分别是你的以前的分数和现在的分数。里面的文件结构就是姓名,各科成绩,注意,没有名次,名次是用程序计算出来然后排名的。

import pandas as pd

import numpy as np

def readexcel(fn):

return pd.read_excel(fn, index_col=0)

def ranking(df):

df = df.assign(Zongfen = df.sum(axis=1))

df['名次'] = df['Zongfen'].rank(ascending = False)

return df

f_s1, f_s2 = "s1.xlsx", "s2.xlsx"

s1, s2 = readexcel(f_s1), readexcel(f_s2)

s1, s2 = ranking(s1), ranking(s2)

s2 = s2.assign(Jinbu = (s2['名次'] - s1['名次']))

s2 = s2.assign(Fenshu = (s2['名次'] - s1['名次'])/2)

s3 = s2[['Jinbu','Fenshu']].copy()

s3['Jinbu'] = np.where(s3['Jinbu']<0,-5,s3['Jinbu'])

s3.to_excel("s3.xlsx")

最后保存到s3.xlsx文件里面去。

s1:

s2:

s3:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值