首页
学习
活动
专区
圈层
工具
发布

pandas DataFrame sum

Pandas DataFrame sum() 方法详解

基础概念

DataFrame.sum() 是 pandas 库中的一个方法,用于计算 DataFrame 或 Series 中数值的总和。它可以沿着指定的轴(行或列)进行求和运算,并支持多种参数来控制求和的行为。

主要参数

代码语言:txt
复制
DataFrame.sum(axis=0, skipna=True, numeric_only=False, min_count=0, **kwargs)
  • axis: 指定求和方向
    • 0 或 'index': 对每列求和(默认)
    • 1 或 'columns': 对每行求和
  • skipna: 是否排除 NA/null 值,默认为 True
  • numeric_only: 是否只包含数值列,默认为 False
  • min_count: 执行操作所需的有效值的最小数量

优势

  1. 灵活性:可以沿行或列方向求和
  2. 处理缺失值:自动跳过 NaN 值(除非指定 skipna=False)
  3. 高效性:底层使用优化的数值计算
  4. 易用性:简洁的语法,与其他 pandas 方法一致

应用场景

  1. 数据统计分析
  2. 财务数据汇总
  3. 科学计算
  4. 数据预处理
  5. 特征工程

示例代码

基本用法

代码语言:txt
复制
import pandas as pd
import numpy as np

# 创建示例 DataFrame
df = pd.DataFrame({
    'A': [1, 2, np.nan, 4],
    'B': [5, np.nan, 7, 8],
    'C': [9, 10, 11, 12]
})

# 默认对每列求和
print(df.sum())
"""
A     7.0
B    20.0
C    42.0
dtype: float64
"""

# 对每行求和
print(df.sum(axis=1))
"""
0    15.0
1    12.0
2    18.0
3    24.0
dtype: float64
"""

处理缺失值

代码语言:txt
复制
# 不跳过缺失值
print(df.sum(skipna=False))
"""
A     NaN
B     NaN
C    42.0
dtype: float64
"""

# 设置最小有效值数量
print(df.sum(min_count=3))
"""
A     NaN
B    20.0
C    42.0
dtype: float64
"""

只计算数值列

代码语言:txt
复制
df['D'] = ['a', 'b', 'c', 'd']
print(df.sum(numeric_only=True))
"""
A     7.0
B    20.0
C    42.0
dtype: float64
"""

常见问题及解决方案

问题1:求和结果出现 NaN

原因:数据中包含缺失值且 skipna=False,或者有效值数量不足 min_count

解决方案

  • 设置 skipna=True(默认)
  • 清理或填充缺失值
  • 调整 min_count 参数

问题2:非数值列也被求和

原因:numeric_only=False(默认)

解决方案

  • 设置 numeric_only=True
  • 或先选择数值列再进行求和

问题3:内存不足或计算缓慢

原因:DataFrame 过大

解决方案

  • 分块计算
  • 使用更高效的数据类型
  • 考虑使用 Dask 等分布式计算框架

问题4:求和结果不正确

原因:可能数据类型不是数值型

解决方案

  • 检查数据类型:df.dtypes
  • 转换数据类型:df.astype(float)
  • 确保没有意外的字符串或其他非数值数据

高级用法

使用 groupby 结合 sum

代码语言:txt
复制
df = pd.DataFrame({
    'Category': ['A', 'B', 'A', 'B'],
    'Values': [10, 20, 30, 40]
})

print(df.groupby('Category').sum())
"""
          Values
Category        
A             40
B             60
"""

使用 agg 同时计算多个统计量

代码语言:txt
复制
print(df.agg(['sum', 'mean', 'max']))
"""
             A     B     C
sum    7.0  20.0  42.0
mean   2.333333  6.666667  10.5
max    4.0   8.0  12.0
"""

DataFrame.sum() 是 pandas 数据分析中最常用的方法之一,掌握它的各种用法和参数设置对于高效的数据处理至关重要。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • python pandas dataframe函数_Python Pandas dataframe.ne()用法及代码示例

    参考链接: 带有Pandas的Python:带有示例的DataFrame教程 Python是进行数据分析的一种出色语言,主要是因为以数据为中心的python软件包具有奇妙的生态系统。...Pandas是其中的一种,使导入和分析数据更加容易。  Pandas dataframe.ne()函数使用常量,序列或其他按元素排列的 DataFrame 检查 DataFrame 元素的不等式。...# importing pandas as pd  import pandas as pd  # Creating the first dataframe  df1=pd.DataFrame({"A":... 让我们创建系列  # importing pandas as pd  import pandas as pd  # create series  sr = pd.Series([3, 2, 4, 5,...# importing pandas as pd  import pandas as pd  # Creating the first dataframe  df1=pd.DataFrame({"A":

    2.1K00

    Pandas DataFrame 数据合并、连接

    merge 通过键拼接列 pandas提供了一个类似于关系数据库的连接(join)操作的方法merage,可以根据一个或多个键将不同DataFrame中的行连接起来 语法如下: merge(left...必须存在右右两个DataFrame对象中,如果没有指定且其他参数也未指定则以两个DataFrame的列名交集做为连接键 left_on:左则DataFrame中用作连接键的列名;这个参数中左右列名不相同...right_on:右则DataFrame中用作 连接键的列名 left_index:使用左则DataFrame中的行索引做为连接键 right_index:使用右则DataFrame中的行索引做为连接键...In [16]: df1=DataFrame({'key':['a','b','b'],'data1':range(3)}) In [17]: df2=DataFrame({'key':['a','b...In [5]: df1=DataFrame(np.random.randn(3,4),columns=['a','b','c','d']) In [6]: df2=DataFrame(np.random.randn

    4K50

    pandas教程(一)Series与DataFrame

    其由两部分组成:实际的数据、描述这些数据的元数据 此外小编为你准备了:Python系列 开始使用pandas,你需要熟悉它的两个重要的数据结构:  Series:是一个值的序列,它只有一个列,以及索引。...DataFrame:是有多个列的数据表,每个列拥有一个 label,当然,DataFrame 也有索引。...首先我们导入包: In [1]: from pandas import Series, DataFrame In [2]: import pandas as pd 下面我们将详细介绍Series、DataFrame...71000.0 dtype: float64 在这种情况下, sdata 中的3个值被放在了合适的位置,但因为没有发现对应于 ‘California’ 的值,就出现了 NaN (不是一个数),这在pandas...在pandas中用函数 isnull 和 notnull 来检测数据丢失: In [22]: pd.isnull(obj4) Out[22]: California True Ohio

    1.1K20

    (六)Python:Pandas中的DataFrame

    : import pandas as pd data = {'name': ['aaaaaa', 'bbbbbb', 'cccccc'], 'pay': [4000, 5000, 6000]} #...以name和pay为列索引,创建DataFrame frame = pd.DataFrame(data) #自定义行索引 print(frame) 运行结果如下所示:     name      pay...,代码如下所示:  import pandas as pd import numpy as np data = np.array([('aaaa', 4000), ('bbbb', 5000), ('...的行索引、列索引和值,代码如下所示: import pandas as pd import numpy as np data = np.array([('aaaa', 4000), ('bbbb',...对象的修改和删除还有很多方法,在此不一一列举,有兴趣的同学可以自己去找一下 统计功能  DataFrame对象成员找最低工资和高工资人群信息          DataFrame有非常强大的统计功能,它有大量的函数可以使用

    5.6K20

    pandas.DataFrame.to_csv函数入门

    本文将介绍pandas.DataFrame.to_csv函数的基本使用方法,帮助读者快速上手。准备工作在正式开始之前,首先需要安装pandas库。...如果你还没有安装pandas库,可以使用以下命令进行安装:plaintextCopy codepip install pandas安装完成后,我们可以开始使用pandas.DataFrame.to_csv...当然,pandas.DataFrame.to_csv函数还有更多参数和功能,可以根据实际需求进行使用和调整。更详细的说明可以参考​​pandas官方文档​​。...结语本文介绍了pandas.DataFrame.to_csv函数的基本用法,帮助大家快速上手使用该函数将DataFrame数据保存为CSV文件。...pandas.DataFrame.to_json​​:该函数可以将DataFrame中的数据保存为JSON格式的文件。​​

    2.1K30
    领券