Функция Pandas Series.sum()
Часто используемые функции Pandas
Series.sum()Это функция в Pandas, используемая для вычисления суммы всех элементов в Series. Это одна из наиболее часто используемых статистических функций в анализе данных, позволяющая быстро получить сумму числовых данных.
Будь то расчёт общего объёма продаж, общей прибыли или общего количества,sum()это может помочь вам быстро с этим справиться. Это особенно подходит для обработки финансовых данных, статистических отчетов, анализа данных о продажах и подобных сценариев.
Базовый синтаксис и параметры
sum()Это метод объекта Series, вызываемый напрямую через оператор точки.
Формат синтаксиса
Series.sum(axis=None, skipna=True, level=None, numeric_only=None, min_count=0, **kwargs)
Описание параметра
| Параметр | Type | Описание | Значение по умолчанию |
|---|---|---|---|
| axis | int | Указывает ось. Series имеет только одну строку данных; этот параметр в основном для совместимости с DataFrame. | Отсутствует |
| skipna | bool | Если True, значения NaN пропускаются при вычислении; если False, то результат возвращает NaN при обнаружении NaN. | True |
| level | int или str | Если Series имеет MultiIndex, укажите уровень для вычисления. | Отсутствует |
| numeric_only | bool | Если True, вычисляются только числовые данные; в противном случае предпринимается попытка преобразовать в числовые значения. | False |
| min_count | int | Минимальное количество допустимых значений, необходимых для вычисления. Если количество допустимых значений меньше этого числа, возвращается NaN. | 0 |
Возвращаемое значение
- Тип возвращаемого значения: числовой (
int、floatилиnumpy.nan) - Описание: Возвращает сумму всех элементов в Series. Если все элементы NaN (и skipna=True), возвращает 0.
Примеры
Давайте с помощью серии примеров от простого к сложному тщательно освоимSeries.sum()его использование.
Пример 1: Базовое использование — вычисление суммы числового списка
Самое базовое использование — создать числовой Series и затем вызватьsum()для вычисления суммы.
Пример
# Создать Series, содержащий суммы продаж
# Имитировать ежедневные данные о продажах за неделю
sales_data = pd.Series([1200, 1500, 1800, 900, 2100, 1600, 1350])
# Вычислить общий объём продаж
total_sales = sales_data.sum()
print("Ежедневные продажи:")
print(sales_data)
print()
print(f"Общий объём продаж: {total_sales}")
Вывод:
每日销售额: 0 1200 1 1500 2 1800 3 900 4 2100 5 1600 6 1350 dtype: int64 总销售额:10450
Пояснение к коду:
- Создан Series, содержащий данные о продажах за 7 дней, с целочисленным типом данных.
sum()Он просто перебирает все элементы и суммирует их, чтобы получить итоговое значение 10450.
Пример 2: Обработка данных, содержащих пропущенные значения
Пропущенные значения часто встречаются в реальных данных,skipnaи параметр определяет, как обрабатывать эти пропущенные значения.
Пример
import numpy as np
# Создать Series, содержащий пропущенные значения
# Смоделировать пропущенные данные о продажах для определённых дат
sales_with_nan = pd.Series([1200, 1500, np.nan, 1800, np.nan, 2100, 1600])
print("Данные о продажах с пропущенными значениями:")
print(sales_with_nan)
print()
# По умолчанию skipna=True, пропускать NaN и вычислять сумму
total_skipna = sales_with_nan.sum()
print(f"Сумма с skipna=True (по умолчанию): {total_skipna}")
# Установить skipna=False, вернуть NaN при обнаружении NaN
total_no_skipna = sales_with_nan.sum(skipna=False)
print(f"Сумма с skipna=False: {total_no_skipna}")
Вывод:
包含缺失值的销售数据: 0 1200.0 1 1500.0 2 NaN 3 1800.0 4 NaN 5 2100.0 6 1600.0 dtype: float64 skipna=True(默认)时的总和:8200.0 skipna=False 时的总和:nan
Пояснение к коду:
- Когда
skipna=TrueКогда (значение по умолчанию),sum()он автоматически пропускает значения NaN и вычисляет сумму только допустимых значений. - Процесс вычисления: 1200 + 1500 + 1800 + 2100 + 1600 = 8200
- Когда
skipna=FalseКогда skipna=False, пока существует NaN, результат возвращает NaN. Это полезно в сценариях, где нужно четко знать целостность данных.
Пример 3: Использование параметра min_count
min_countПараметр min_count позволяет задать минимальное количество допустимых значений, необходимое для вычисления. Это полезно, когда нужно обеспечить достаточность данных.
Пример
import numpy as np
# Создайте Series, в которой большинство значений пропущено
sparse_data = pd.Series([np.nan, np.nan, 100, np.nan, np.nan])
print("Данные, в которых большинство значений пропущено:")
print(sparse_data)
print()
# По умолчанию min_count=0: вычислять, пока имеется хотя бы 0 допустимых значений
result_default = sparse_data.sum()
print(f"Результат с min_count=0 (по умолчанию): {result_default}")
# Установите min_count=3, для вычисления требуется не менее 3 допустимых значений
result_min_count = sparse_data.sum(min_count=3)
print(f"Результат с min_count=3: {result_min_count}")
# Установите min_count=2, нужно только 2 допустимых значения
result_min_count_2 = sparse_data.sum(min_count=2)
print(f"Результат с min_count=2: {result_min_count_2}")
Вывод:
大部分缺失的数据: 0 NaN 1 NaN 2 100.0 3 NaN 4 NaN dtype: float64 min_count=0(默认)时的结果:100.0 min_count=3 时的结果:nan min_count=2 时的结果:100.0
Пояснение к коду:
- В этом Series только 1 допустимое значение (100).
min_count=3Это означает, что для вычисления требуется как минимум 3 допустимых значения, но фактически имеется только 1, поэтому возвращается NaN.min_count=2Это означает, что требуется как минимум 2 допустимых значения, но фактически имеется только 1 допустимое значение, что не удовлетворяет условию, поэтому возвращается NaN.- Этот параметр очень полезен в сценариях анализа с высокими требованиями к качеству данных, так как он помогает выявлять ситуации, когда допустимых данных недостаточно.
Пример 4: Применение в анализе реальных данных
Объединяя реальные бизнес-сценарии, продемонстрируйтеsum()его типичные применения.
Пример
# Создайте имитированный DataFrame с данными о продажах
sales_data = pd.DataFrame({
'Month': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
'East China Region': [12000, 15000, 18000, 16000, 14000, 17000],
'Северный Китай': [10000, 11000, 13000, 12500, 11500, 14000],
'Южный Китай': [15000, 17000, 19000, 18000, 16000, 20000]
})
print("Данные о продажах по регионам за первое полугодие:")
print(sales_data)
print()
# Рассчитать суммарные продажи за полугодие для каждого региона
for region in ['Восточный Китай', 'Северный Китай', 'Южный Китай']:
total = sales_data[region].sum()
print(f"{region} общий объем продаж за полугодие: {total} yuan")
print()
# Рассчитать общий объем продаж по всем регионам
total_all = sales_data[['Восточный Китай', 'Северный Китай', 'Южный Китай']].sum().sum()
print(f"Общий объем продаж за полугодие по всем регионам: {total_all} yuan")
Вывод:
上半年各区域销售数据: 月份 华东区 华北区 华南区 0 1月 12000 10000 15000 1 2月 15000 11000 17000 2 3月 18000 13000 19000 3 4月 16000 12500 18000 4 5月 14000 11500 16000 5 6月 17000 14000 20000 华东区半年总销售额:92000 元 华北区半年总销售额:72000 元 华南区半年总销售额:105000 元 所有区域半年总销售额:269000 元
Примечания
sum()По умолчанию значения NaN пропускаются, что в большинстве случаев является ожидаемым поведением.- Если вам нужно просуммировать Series, содержащий нечисловые данные, сначала следует очистить данные или использовать
numeric_only=Trueпараметр numeric_only. min_countПараметр min_count очень полезен при проверке данных и контроле качества, так как помогает выявлять ситуации, когда корректных данных недостаточно.- Для больших наборов данных,
sum()sum() обычно показывает хорошую производительность, потому что внутри использует векторизованные операции NumPy.
Итог
Series.sum()Это одна из самых базовых и часто используемых статистических функций в Pandas. Её основные возможности включают:
- Простая и удобная в использовании, вызывается напрямую через оператор точки.
- Поддерживает обработку пропущенных значений через
skipnaпараметр skipna. - Вы можете использовать
min_countпараметр min_count для установки минимального требования к корректным значениям. - Она использует оптимизированную реализацию NumPy на внутреннем уровне, что обеспечивает высокую вычислительную эффективность.
В реальном анализе данных,sum()её обычно используют вместе с другими функциями агрегации (такими какmean()、count()mean(), и т. д.) для проведения комплексного статистического анализа данных.