【pandas】对矩阵的某一行、某一列进行求和

本文介绍了几种矩阵行列求和的方法,包括使用sum()函数直接求和、通过转秩求行和以及利用切片操作实现特定行列求和。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天一位朋友问我,矩阵的某一行列怎么求和?我也是初学者,但是觉得碰到问题就去解决,抱着这样的心态,就去想这个问题了。
首先我们肯定要有一个矩阵,所以我就用用生成随机数的方法生成了一个随机数矩阵。



显示一下我们生成的矩阵:



我们可以看一下我们的矩阵的维度:


我尝试了一下直接用sum()函数:



我们算出来的是列的和,但是行和呢??
后来我想出来一个很笨的方法,那就是将矩阵转秩一下,然后用求列和的方法来求原矩阵的行和,我们来试试看吧。



这算是达到目的了,但是有没有其他的方法呢?后来想到了切片的方法,具体的就是先将某一行或者
某一列切出来,然后用sum()函数对其进行累加,试试看吧。




诶,不对呢?肯定是自己哪里错了,果然是。你要切片的话,一定要看好自己到底需要哪些元素,上面代码中切片的范围是1:。所以你少了第0个元素。
试试从零开始,可不可以?




正确,搞定了。

其实还有一种方法,大家可以去尝试一下:


在这里总结一下;
1、对某一行进行求和: Row_sum = df.iloc[i,0:].sum()
2、对某一列进行求和:column_sum = df.iloc[:,j].sum()
3、对每一列进行求和:

        for i in df.columns:
            print(df[i].sum())
        






















### Python Pandas 矩阵操作与数据处理练习 以下是关于 Python 中 `pandas` 的矩阵操作以及数据处理的一些典型练习题,这些题目可以帮助加深对 `pandas` 库的理解和应用能力。 #### 题目 1:创建 DataFrame 并执行基础矩阵运算 使用 NumPy 创建两个随机矩阵 `A (3x4)` 和 `B (4x2)`,并将其转换为 pandas 的 DataFrame。随后计算它们的矩阵乘积,并验证结果是否一致。 ```python import numpy as np import pandas as pd # 创建随机矩阵 A 和 B np.random.seed(0) # 设置种子以便结果可重复 A = np.random.randint(1, 10, size=(3, 4)) B = np.random.randint(1, 10, size=(4, 2)) # 转换为 DataFrame df_A = pd.DataFrame(A, columns=['col1', 'col2', 'col3', 'col4']) df_B = pd.DataFrame(B, columns=['row1', 'row2']) # 计算矩阵乘积 result_np = A @ B # 使用 NumPy 进行矩阵乘法 result_pd = df_A.dot(df_B.T) # 使用 pandas 的 dot 方法进行矩阵乘法 print(result_np) print(result_pd.to_numpy()) ``` #### 题目 2:缺失值填充后的矩阵加法 给定两个大小相同的矩阵 `C (5x5)` 和 `D (5x5)`,其中部分位置存在 NaN 值。通过 `fillna()` 函数填补缺失值后再完成两者的逐元素相加。 ```python import numpy as np import pandas as pd # 创建带有 NaN 的矩阵 C 和 D np.random.seed(1) C = np.random.randn(5, 5) D = np.random.randn(5, 5) mask_C = np.random.choice([True, False], size=C.shape, p=[0.3, 0.7]) mask_D = np.random.choice([True, False], size=D.shape, p=[0.2, 0.8]) C[mask_C] = np.nan D[mask_D] = np.nan df_C = pd.DataFrame(C) df_D = pd.DataFrame(D) # 缺失值填充后求和 filled_df_C = df_C.fillna(0) filled_df_D = df_D.fillna(0) sum_result = filled_df_C.add(filled_df_D) print(sum_result) ``` #### 题目 3:按条件筛选矩阵中的特定子集 假设有一个 `DataFrame E (m x n)` 表示学生成绩表,每列代表一门课程的成绩。找出所有成绩大于等于 90 的学生及其对应科目名称。 ```python import pandas as pd # 构造模拟数据 data = { 'Math': [85, 92, 78, 90], 'English': [88, 95, 80, 89], 'Science': [90, 87, 95, 92] } students = ['Alice', 'Bob', 'Charlie', 'David'] df_E = pd.DataFrame(data, index=students) # 找出成绩 >= 90 的记录 high_scores = df_E[df_E >= 90].stack().reset_index() high_scores.columns = ['Student', 'Subject', 'Score'] print(high_scores.dropna()) # 删除无意义的 NaN 结果 ``` #### 题目 4:矩阵转置与聚合统计 对于一个较大的二维数组 F `(n x m)`,先将其转化为 DataFrame 后取其转置 G `(m x n)`。接着分别计算每一行的最大值、最小值及平均值。 ```python import numpy as np import pandas as pd F = np.random.rand(6, 8) df_F = pd.DataFrame(F) G = df_F.T # 取转置 max_values = G.max(axis=1) # 每一行最大值 min_values = G.min(axis=1) # 每一行最小值 mean_values = G.mean(axis=1) # 每一行均值 summary_stats = pd.concat([max_values, min_values, mean_values], axis=1) summary_stats.columns = ['Max', 'Min', 'Mean'] print(summary_stats) ``` --- #### 总结 上述练习涵盖了 `pandas` 在矩阵操作方面的核心技能,包括但不限于矩阵乘法[^1]、缺失值处理[^2]、条件过滤 和统计数据汇总。通过实践这些问题,能够有效提升对 `pandas` 工具包的应用水平。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值