pandas操作复习_05_添加求和列并求值

前情提要

  在第04节插入了一段描写pandas删除操作的小节。如此,我们已经完成了以下部分的内容了:

  • 表格的连接
  • 表格中columns的移动
  • 表格行列的删除

  接下来,就需要进行计算总分了。计算总分涉及到两个部分,一个是在表格中添加一个新的列,二是进行逐行的求和运算。

数据准备

这里仍然使用03节中最后生成的score.xlsx。其数据展示如下:即便没有原始数据,也可以复制以下数据进一个xlsx表格中即可

学号 姓名 班级 语文 数学 英语 音乐 美术 体育
0 A01 饶秀颖 1班 35 45 55 95 95 95
1 A02 于俊远 1班 38 53 46 97 98 95
2 A03 王五 1班 54 46 38 97 99 97
3 A08 冉颇 3班 34 54 60 96 98 99
4 A09 夫余岚裳 3班 43 57 67 98 95 94
5 A10 薛菁 3班 55 60 65 96 93 96

实际操作

导入模块

import pandas as pd
import numpy as np
import pathlib

指定文件

file_path = pathlib.Path("/content/drive/MyDrive/Notebooks_data/score.xlsx")
file_path

显示数据

data_source = pd.read_excel(file_path)
data_source

out

学号 姓名 班级 语文 数学 英语 音乐 美术 体育
0 A01 饶秀颖 1班 35 45 55 95 95 95
1 A02 于俊远 1班 38 53 46 97 98 95
2 A03 王五 1班 54 46 38 97 99 97
3 A08 冉颇 3班 34 54 60 96 98 99
4 A09 夫余岚裳 3班 43 57 67 98 95 94
5 A10 薛菁 3班 55 60 65 96 93 96

制作副本方便操作

data1 = data_source.copy(deep=True)

加权求和解释

倘若只是简单的求和,只需要使用sum就好了,但是我们知道,文化课和素质课的成绩,我们不应当按照一样的比例。在这里,我们假设文化课每门各占30%,素质课三门加在一起占10%。

创建新列

创建空列直接在dataframe后面加一个中括号,括号内命名即可data1["sum"] = np.nan是很稳妥的做法

np是引入的numpy库

data1["sum"] = pd.Series(dtype=np.float64)
# 也可以使用以下段落,显得更简洁
# data1["sum"] = np.nan

遍历每一行进行同类型计算

现在我们知道要进行加权求和,那么我们以第一列为例,显然会得到这样的结果:

(35+45+55)x 30% +(95+95+95)x 10%

逐行的对感兴趣的列中的元素进行操作,主要借助到DataFrame中的.iterrows()和.loc[index, "列名"]。

其中.iterrows()获得dataframe中的行列。也可以根据row来指定列,但是这里习惯性的使用了.loc[index, 列名]

for index, row in data1.iterrows():
  data1.loc[index, "sum"] = (data1.loc[index, "语文"] + data1.loc[index, "数学"] + data1.loc[index, "英语"]) * 0.3 + (data1.loc[index, "音乐"] + data1.loc[index, "美术"] + data1.loc[index, "体育"] * 0.1) 
data1

out

学号 姓名 班级 语文 数学 英语 音乐 美术 体育 sum
0 A01 饶秀颖 1班 35 45 55 95 95 95 240.0
1 A02 于俊远 1班 38 53 46 97 98 95 245.6
2 A03 王五 1班 54 46 38 97 99 97 247.1
3 A08 冉颇 3班 34 54 60 96 98 99 248.3
4 A09 夫余岚裳 3班 43 57 67 98 95 94 252.5
5 A10 薛菁 3班 55 60 65 96 93 96 252.6

保存数据

data1.to_excel("/content/drive/MyDrive/Notebooks_data/score.xlsx", index=False)

致谢链接

如何在pandas dataframe中创建一个空列
pandas按行遍历dataframe的几种方式
pandas通过index选择并获取行列

posted @ 2022-02-08 20:09  小澳子  阅读(472)  评论(0编辑  收藏  举报