目录
一、用法精讲
176、pandas.Series.rank方法
176-1、语法
176-2、参数
176-3、功能
176-4、返回值
176-5、说明
176-6、用法
176-6-1、数据准备
176-6-2、代码示例
176-6-3、结果输出
177、pandas.Series.sem方法
177-1、语法
177-2、参数
177-3、功能
177-4、返回值
177-5、说明
177-6、用法
177-6-1、数据准备
177-6-2、代码示例
177-6-3、结果输出
178、pandas.Series.skew方法
178-1、语法
178-2、参数
178-3、功能
178-4、返回值
178-5、说明
178-6、用法
178-6-1、数据准备
178-6-2、代码示例
178-6-3、结果输出
179、pandas.Series.std方法
179-1、语法
179-2、参数
179-3、功能
179-4、返回值
179-5、说明
179-6、用法
179-6-1、数据准备
179-6-2、代码示例
179-6-3、结果输出
180、pandas.Series.sum方法
180-1、语法
180-2、参数
180-3、功能
180-4、返回值
180-5、说明
180-6、用法
180-6-1、数据准备
180-6-2、代码示例
180-6-3、结果输出
二、推荐阅读
1、Python筑基之旅
2、Python函数之旅
3、Python算法之旅
4、Python魔法之旅
5、博客个人主页
一、用法精讲
176、pandas.Series.rank方法
176-1、语法
# 176、pandas.Series.rank方法
pandas.Series.rank(axis=0, method='average', numeric_only=False, na_option='keep', ascending=True, pct=False)
Compute numerical data ranks (1 through n) along axis.
By default, equal values are assigned a rank that is the average of the ranks of those values.
Parameters:
axis{0 or ‘index’, 1 or ‘columns’}, default 0
Index to direct ranking. For Series this parameter is unused and defaults to 0.
method{‘average’, ‘min’, ‘max’, ‘first’, ‘dense’}, default ‘average’
How to rank the group of records that have the same value (i.e. ties):
average: average rank of the group
min: lowest rank in the group
max: highest rank in the group
first: ranks assigned in order they appear in the array
dense: like ‘min’, but rank always increases by 1 between groups.
numeric_onlybool, default False
For DataFrame objects, rank only numeric columns if set to True.
Changed in version 2.0.0: The default value of numeric_only is now False.
na_option{‘keep’, ‘top’, ‘bottom’}, default ‘keep’
How to rank NaN values:
keep: assign NaN rank to NaN values
top: assign lowest rank to NaN values
bottom: assign highest rank to NaN values
ascendingbool, default True
Whether or not the elements should be ranked in ascending order.
pctbool, default False
Whether or not to display the returned rankings in percentile form.
Returns:
same type as caller
Return a Series or DataFrame with data ranks as values.
176-2、参数
176-2-1、axis(可选,默认值为0):表示对数据的行进行排名,对Series来说,这个参数一般不适用,因为Series只有一维。
176-2-2、method(可选,默认值为'average'):指定排名的方式,可选值有:
- 'average':同分的值取平均排名。
- 'min':同分的值取最小排名。
- 'max':同分的值取最大排名。
- 'first':按出现顺序排名。
- 'dense':类似于最小排名,但排名是连续的。
176-2-3、numeric_only(可选,默认值为False):如果为True
,将只对数值数据进行排名。
176-2-4、na_option(可选,默认值为'keep'):处理缺失值的方式,可取值为:
- 'keep':将缺失值保持在原位置。
- 'top':将缺失值排到最前面。
- 'bottom':将缺失值排到最后。
176-2-5、ascending(可选,默认值为True):如果为False
,则进行降序排名。
176-2-6、pct(可选,默认值为False):如果为True
,将返回排名的百分比,而不是具体排名。
176-3、功能
为Series中的每个值分配一个排名,它能够处理值的顺序,并为重复值提供不同的排名方式。具体来说,rank方法可以根据选择的排名方式和其他参数,返回每个值的排名,适用于数据分析和统计计算。
176-4、返回值
返回一个新的Series,其索引与原始Series相同,但值代表原始数据中每个元素的排名。
176-5、说明
无
176-6、用法
176-6-1、数据准备
无
176-6-2、代码示例
# 176、pandas.Series.rank方法
# 176-1、无重复值
import pandas as pd
data = pd.Series([3, 5, 6, 8, 10, 11, 24])
ranked_data = data.rank(method='average', ascending=True)
print(ranked_data, end='\n\n')
# 176-2、有重复值
import pandas as pd
data = pd.Series([3, 5, 6, 8, 10, 10, 11, 24])
ranked_data = data.rank(method='average', ascending=True)
print(ranked_data)
176-6-3、结果输出
# 176、pandas.Series.rank方法
# 176-1、无重复值
# 0 1.0
# 1 2.0
# 2 3.0
# 3 4.0
# 4 5.0
# 5 6.0
# 6 7.0
# dtype: float64
# 176-2、有重复值
# 0 1.0
# 1 2.0
# 2 3.0
# 3 4.0
# 4 5.5
# 5 5.5
# 6 7.0
# 7 8.0
# dtype: float64
177、pandas.Series.sem方法
177-1、语法
# 177、pandas.Series.sem方法
pandas.Series.sem(axis=None, skipna=True, ddof=1, numeric_only=False, **kwargs)
Return unbiased standard error of the mean over requested axis.
Normalized by N-1 by default. This can be changed using the ddof argument
Parameters:
axis{index (0)}
For Series this parameter is unused and defaults to 0.
Warning
The behavior of DataFrame.sem with axis=None is deprecated, in a future version this will reduce over both axes and return a scalar To retain the old behavior, pass axis=0 (or do not pass axis).
skipnabool, default True
Exclude NA/null values. If an entire row/column is NA, the result will be NA.
ddofint, default 1
Delta Degrees of Freedom. The divisor used in calculations is N - ddof, where N represents the number of elements.
numeric_onlybool, default False
Include only float, int, boolean columns. Not implemented for Series.
Returns:
scalar or Series (if level specified)
177-2、参数
177-2-1、axis(可选,默认值为None):用于指定计算的轴,对于Series
来说,通常不需要指定。
177-2-2、skipna(可选,默认值为True):布尔值,如果为True
,则在计算标准误时会忽略NaN
值;如果为False
,则遇到NaN
值会返回NaN
。
177-2-3、ddof(可选,默认值为1):Delta Degrees of Freedom,样本的自由度,在计算标准误时,通常设置为1
,表示使用样本标准差;设置为0
将使用总体标准差。
177-2-4、numeric_only(可选,默认值为False):布尔值,如果为True
,则仅计算数值类型的数据;如果为False
,则包括所有类型。如果数据中含有非数值类型的列且numeric_only
为False
,则可能导致类型错误。
177-2-5、**kwargs(可选):其他关键字参数,用于后续扩展功能做预留。
177-3、功能
用于计算系列的标准误(Standard Error of the Mean),这是数据分析中常用的一种统计指标,反映了样本均值的可靠性。
177-4、返回值
返回一个标量值,表示系列的标准误。
177-5、说明
使用场景:
177-5-1、医学研究:在临床试验或医学研究中,研究人员通常需要计算一组病人测量数据(如血压、胆固醇水平等)的均值及其标准误,以评估治疗效果的稳定性和一致性。
177-5-2、市场调查:在市场调研中,调查员可能会收集顾客满意度评分,通过计算评分的均值和标准误,来判断消费者对产品的总体反馈是否可靠。
177-5-3、实验数据分析:在科学实验中,研究人员可能会收集多次实验的结果,并计算这些结果的均值和标准误,以了解实验测量的一致性和变异性。
177-5-4、金融分析:在投资和金融分析中,分析师可能会计算某类资产收益率的均值和标准误,从而评估投资的风险和潜在回报。
177-5-5、教育评估:在教育测评中,教师可能会计算学生成绩的均值和标准误,以分析班级整体表现的可靠性,帮助改进教学策略。
177-5-6、气候和环境数据:在气象学和环境科学中,研究人员可能会计算某一时间段内气温、降水量的数据均值和标准误,以评估气候变化的趋势和异常。
177-6、用法
177-6-1、数据准备
无
177-6-2、代码示例
# 177、pandas.Series.sem方法
# 177-1、医学研究
import pandas as pd
# 假设我们有一组病人的血压数据
blood_pressure = pd.Series([120, 115, 130, 125, 132])
# 计算血压均值和标准误
mean_bp = blood_pressure.mean()
sem_bp = blood_pressure.sem()
print(f"血压均值: {mean_bp:.2f}")
print(f"血压标准误: {sem_bp:.2f}", end='\n\n')
# 177-2、市场调查
import pandas as pd
# 顾客满意度评分(1到5分)
satisfaction_scores = pd.Series([4, 5, 3, 4, 5, 4, 2, 5])
# 计算满意度均值和标准误
mean_score = satisfaction_scores.mean()
sem_score = satisfaction_scores.sem()
print(f"顾客满意度均值: {mean_score:.2f}")
print(f"顾客满意度标准误: {sem_score:.2f}", end='\n\n')
# 177-3、实验数据分析
import pandas as pd
# 假设我们有多次实验的结果
experiment_results = pd.Series([1.2, 1.5, 1.4, 1.3, 1.6])
# 计算实验结果的均值和标准误
mean_result = experiment_results.mean()
sem_result = experiment_results.sem()
print(f"实验结果均值: {mean_result:.2f}")
print(f"实验结果标准误: {sem_result:.2f}", end='\n\n')
# 177-4、金融分析
import pandas as pd
# 假设我们有某个投资组合的月收益率
monthly_returns = pd.Series([0.05, 0.02, -0.01, 0.04, 0.03])
# 计算收益率的均值和标准误
mean_return = monthly_returns.mean()
sem_return = monthly_returns.sem()
print(f"月收益率均值: {mean_return:.2f}")
print(f"月收益率标准误: {sem_return:.2f}", end='\n\n')
# 177-5、教育评估
import pandas as pd
# 学生考试成绩
exam_scores = pd.Series([80, 90, 85, 70, 95])
# 计算考试成绩的均值和标准误
mean_score = exam_scores.mean()
sem_score = exam_scores.sem()
print(f"考试成绩均值: {mean_score:.2f}")
print(f"考试成绩标准误: {sem_score:.2f}", end='\n\n')
# 177-6、气候和环境数据
import pandas as pd
# 假设我们有连续几天的气温数据
temperature_data = pd.Series([22, 24, 19, 23, 21, 20])
# 计算气温的均值和标准误
mean_temp = temperature_data.mean()
sem_temp = temperature_data.sem()
print(f"气温均值: {mean_temp:.2f} °C")
print(f"气温标准误: {sem_temp:.2f} °C")
177-6-3、结果输出
# 177、pandas.Series.sem方法
# 177-1、医学研究
# 血压均值: 124.40
# 血压标准误: 3.14
# 177-2、市场调查
# 顾客满意度均值: 4.00
# 顾客满意度标准误: 0.38
# 177-3、实验数据分析
# 实验结果均值: 1.40
# 实验结果标准误: 0.07
# 177-4、金融分析
# 月收益率均值: 0.03
# 月收益率标准误: 0.01
# 177-5、教育评估
# 考试成绩均值: 84.00
# 考试成绩标准误: 4.30
# 177-6、气候和环境数据
# 气温均值: 21.50 °C
# 气温标准误: 0.76 °C
178、pandas.Series.skew方法
178-1、语法
# 178、pandas.Series.skew方法
pandas.Series.skew(axis=0, skipna=True, numeric_only=False, **kwargs)
Return unbiased skew over requested axis.
Normalized by N-1.
Parameters:
axis{index (0)}
Axis for the function to be applied on. For Series this parameter is unused and defaults to 0.
For DataFrames, specifying axis=None will apply the aggregation across both axes.
New in version 2.0.0.
skipnabool, default True
Exclude NA/null values when computing the result.
numeric_onlybool, default False
Include only float, int, boolean columns. Not implemented for Series.
**kwargs
Additional keyword arguments to be passed to the function.
Returns:
scalar or scalar
178-2、参数
178-2-1、axis(可选,默认值为0):用于指定计算的轴,对于Series
来说,通常不需要指定。
178-2-2、skipna(可选,默认值为True):布尔值,如果为True
,则在计算偏度时会跳过缺失值;如果为False
,则包含缺失值计算。
178-2-3、numeric_only(可选,默认值为False):布尔值,如果为True
,则只对数值类型的数据进行计算,非数字类型的数据将被忽略。
178-2-4、**kwargs(可选):其他关键字参数,为后续扩展功能做预留。
178-3、功能
用于计算序列的偏度(skewness),偏度是衡量数据分布不对称程度的统计量。
178-4、返回值
返回一个浮点数(float)
,具体取值如下:
- 0:数据分布是完全对称的。
- 正值:数据分布的右侧较长,表示数据在左边集中,即右偏。
- 负值:数据分布的左侧较长,表示数据在右边集中,即左偏。
178-5、说明
使用场景:
178-5-1、数据探索与分析:在数据分析过程中,了解数据的分布特征是非常重要的,通过计算偏度,可以帮助分析师确定数据是否呈现对称分布,进而影响后续的数据处理和建模策略。
178-5-2、异常值检测:偏度可以指示数据是否存在异常值或极端值。例如,右偏分布可能意味着存在较大的极端值,左偏分布则相反,识别这些情况可以帮助清洗数据,确保模型训练的有效性。
178-5-3、特征工程:在构建机器学习模型时,特征的分布会影响模型的性能。对于存在偏度的特征,可能需要进行转换(例如对数变换或平方根变换)以使其更接近正态分布,改善模型的效果。
178-5-4、金融与经济学分析:在金融领域,收益率分布的偏度能够反映市场的风险特征。例如,从投资收益的偏度可以判断资产的风险特性,帮助投资者做出更明智的决策。
178-5-5、假设检验:在某些假设检验(如t检验和ANOVA)中,通常假定数据服从正态分布。偏度的计算可以帮助验证这一假设,确保所选的统计方法的适用性。
178-5-6、报告与可视化:在生成数据分析报告或可视化时,展示偏度值可以作为数据分布特征的一部分,增强信息的传达效果。
178-6、用法
178-6-1、数据准备
无
178-6-2、代码示例
# 178、pandas.Series.skew方法
# 178-1、数据探索与分析
import pandas as pd
import numpy as np
# 生成一个包含随机数的DataFrame
data = {
'A': np.random.normal(loc=0, scale=1, size=1000),
'B': np.random.exponential(scale=1, size=1000) # 右偏分布
}
df = pd.DataFrame(data)
# 计算偏度
skewness_A = df['A'].skew()
skewness_B = df['B'].skew()
print(f"Column A skewness: {skewness_A}")
print(f"Column B skewness: {skewness_B}", end='\n\n')
# 178-2、异常值检测
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 生成带有异常值的分布
data_with_outliers = np.concatenate([np.random.normal(0, 1, 1000), [10, 12, 15]])
# 创建DataFrame
df_outliers = pd.DataFrame({'C': data_with_outliers})
# 计算偏度
skewness_C = df_outliers['C'].skew()
# 绘制直方图
plt.hist(df_outliers['C'], bins=30, color='skyblue', edgecolor='black')
plt.title(f'Histogram of C (Skewness: {skewness_C:.2f})')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.show()
# 178-3、特征工程
import pandas as pd
import numpy as np
from sklearn.preprocessing import PowerTransformer
# 创建一个带偏度的特征
df_feature = pd.DataFrame({'D': np.random.exponential(scale=1, size=1000)})
# 计算原始特征的偏度
original_skewness = df_feature['D'].skew()
# 使用PowerTransformer进行变换
pt = PowerTransformer()
df_transformed = pd.DataFrame(pt.fit_transform(df_feature), columns=['D_transformed'])
# 计算变换后特征的偏度
transformed_skewness = df_transformed['D_transformed'].skew()
print(f"Original skewness: {original_skewness:.2f}")
print(f"Transformed skewness: {transformed_skewness:.2f}", end='\n\n')
# 178-4、金融与经济学分析
import pandas as pd
import numpy as np
# 假设我们有一些模拟的资产收益率数据
returns = pd.Series(np.random.normal(0, 1, 1000))
# 计算收益率的偏度
skewness_returns = returns.skew()
print(f"Skewness of asset returns: {skewness_returns:.2f}", end='\n\n')
# 178-5、假设检验
import pandas as pd
import numpy as np
from scipy.stats import shapiro
# 创建一个样本数据
sample_data = pd.Series(np.random.normal(0, 1, 100))
# 计算偏度
sample_skewness = sample_data.skew()
# 进行Shapiro-Wilk假设检验
stat, p_value = shapiro(sample_data)
print(f"Sample skewness: {sample_skewness:.2f}")
print(f"Shapiro-Wilk Test Statistic: {stat:.3f}, p-value: {p_value:.3f}", end='\n\n')
# 178-6、报告与可视化
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 创建一个样本数据
example_data = pd.Series(np.random.poisson(lam=3, size=1000))
# 计算偏度
example_skewness = example_data.skew()
# 绘制直方图和偏度
plt.hist(example_data, bins=30, color='lightgreen', edgecolor='black')
plt.axvline(example_data.mean(), color='red', linestyle='dashed', linewidth=1, label='Mean')
plt.axvline(example_data.median(), color='blue', linestyle='dashed', linewidth=1, label='Median')
plt.title(f'Histogram of Example Data (Skewness: {example_skewness:.2f})')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.legend()
plt.show()
178-6-3、结果输出
# 178、pandas.Series.skew方法
# 178-1、数据探索与分析
# Column A skewness: -0.04151967450030536
# Column B skewness: 1.989655358177879
# 178-2、异常值检测
见图1
# 178-3、特征工程
# Original skewness: 2.33
# Transformed skewness: 0.12
# 178-4、金融与经济学分析
# Skewness of asset returns: -0.01
# 178-5、假设检验
# Sample skewness: 0.25
# Shapiro-Wilk Test Statistic: 0.991, p-value: 0.756
# 178-6、报告与可视化
见图2
图1:
图2:
179、pandas.Series.std方法
179-1、语法
# 179、pandas.Series.std方法
pandas.Series.std(axis=None, skipna=True, ddof=1, numeric_only=False, **kwargs)
Return sample standard deviation over requested axis.
Normalized by N-1 by default. This can be changed using the ddof argument.
Parameters:
axis{index (0)}
For Series this parameter is unused and defaults to 0.
Warning
The behavior of DataFrame.std with axis=None is deprecated, in a future version this will reduce over both axes and return a scalar To retain the old behavior, pass axis=0 (or do not pass axis).
skipnabool, default True
Exclude NA/null values. If an entire row/column is NA, the result will be NA.
ddofint, default 1
Delta Degrees of Freedom. The divisor used in calculations is N - ddof, where N represents the number of elements.
numeric_onlybool, default False
Include only float, int, boolean columns. Not implemented for Series.
Returns:
scalar or Series (if level specified)
Notes
To have the same behaviour as numpy.std, use ddof=0 (instead of the default ddof=1)
179-2、参数
179-2-1、axis(可选,默认值为None):用于指定计算的轴,对于Series
来说,通常不需要指定。
179-2-2、skipna(可选,默认值为True):布尔值,如果为True
,则在计算标准误时会忽略NaN
值;如果为False
,则遇到NaN
值会返回NaN
。
179-2-3、ddof(可选,默认值为1):Delta Degrees of Freedom,样本的自由度,在计算标准误时,通常设置为1
,表示使用样本标准差;设置为0
将使用总体标准差。
179-2-4、numeric_only(可选,默认值为False):布尔值,如果为True
,则仅计算数值类型的数据;如果为False
,则包括所有类型。如果数据中含有非数值类型的列且numeric_only
为False
,则可能导致类型错误。
179-2-5、**kwargs(可选):其他关键字参数,用于后续扩展功能做预留。
179-3、功能
计算Series中数据的标准差,标准差是衡量数据分布离均值的远近程度的指标,反映了数据的离散程度。具体来讲,如果标准差小,说明数据点相对集中;如果标准差大,说明数据点分散得比较开。
179-4、返回值
179-4-1、返回一个浮点数,表示Series中数值数据的标准差。
179-4-2、如果Series中全部值为NaN或者没有有效数值,返回NaN。
179-5、说明
使用场景:
179-5-1、数据分析:在数据分析过程中,了解数据的分布特征非常重要,标准差可以帮助分析师评估数据的离散程度,从而更好地理解数据的波动性。
179-5-2、质量控制:在生产和质量管理中,监控产品的测量值并计算标准差,可用于判断生产过程的稳定性和一致性,较低的标准差表示生产过程的一致性较高。
179-5-3、金融分析:在金融市场中,投资者常常利用标准差来衡量投资回报的风险,高标准差表明投资回报的不确定性大,可能意味着更高的风险。
179-5-4、实验数据处理:在科学实验中,标准差用于描述实验数据的测量误差和结果的可靠性,通过计算标准差,科研人员可以评估实验结果的变异程度。
179-5-5、机器学习:在特征工程中,计算标准差有助于进行数据预处理,识别和处理离群值,此外,标准差可以作为特征之一用于模型训练和评估。
179-5-6、健康研究:在医学和公共卫生领域,研究者通过计算健康指标(如体重、血压等)的标准差来评估人群的健康状况,以及不同人群之间的差异。
179-6、用法
179-6-1、数据准备
无
179-6-2、代码示例
# 179、pandas.Series.std方法
# 179-1、数据分析
import pandas as pd
# 创建一个示例数据集
data = {'scores': [78, 85, 90, 93, 88, 95, 80]}
df = pd.DataFrame(data)
# 计算分数的标准差
std_dev = df['scores'].std()
print(f"分数的标准差为: {std_dev}")
# 179-2、质量控制
import pandas as pd
# 生产过程中测量的产品尺寸
measurements = [10.1, 10.2, 10.1, 10.3, 10.5, 10.2, 10.4]
df = pd.DataFrame(measurements, columns=['size'])
# 计算尺寸的标准差
std_dev = df['size'].std()
print(f"产品尺寸的标准差为: {std_dev}")
# 179-3、金融分析
import pandas as pd
# 创建一个示例数据集,表示股价每日收益
returns = [0.02, 0.03, -0.01, 0.04, 0.01, -0.02, 0.03]
df = pd.DataFrame(returns, columns=['returns'])
# 计算每日收益的标准差
std_dev = df['returns'].std()
print(f"每日收益的标准差为: {std_dev}")
# 179-4、实验数据处理
import pandas as pd
# 每次实验的测量结果
results = [5.2, 5.3, 5.1, 5.4, 5.3, 5.5]
df = pd.DataFrame(results, columns=['experiment'])
# 计算实验结果的标准差
std_dev = df['experiment'].std()
print(f"实验结果的标准差为: {std_dev}")
# 179-5、机器学习
import pandas as pd
# 创建特征数据集
data = {
'feature1': [1.2, 1.5, 1.1, 1.4, 1.3],
'feature2': [2.1, 2.0, 2.2, 2.4, 2.3]
}
df = pd.DataFrame(data)
# 计算每个特征的标准差
std_dev_feature1 = df['feature1'].std()
std_dev_feature2 = df['feature2'].std()
print(f"特征1的标准差为: {std_dev_feature1}")
print(f"特征2的标准差为: {std_dev_feature2}")
# 179-6、健康研究
import pandas as pd
# 创建一个示例数据集,表示一组人的体重(单位: kg)
weights = [65, 70, 68, 72, 64, 66, 69]
df = pd.DataFrame(weights, columns=['weight'])
# 计算体重的标准差
std_dev = df['weight'].std()
print(f"体重的标准差为: {std_dev}")
179-6-3、结果输出
# 179、pandas.Series.std方法
# 179-1、数据分析
# 分数的标准差为: 6.377042156569663
# 179-2、质量控制
# 产品尺寸的标准差为: 0.1511857892036912
# 179-3、金融分析
# 每日收益的标准差为: 0.022253945610567476
# 179-4、实验数据处理
# 实验结果的标准差为: 0.14142135623730964
# 179-5、机器学习
# 特征1的标准差为: 0.15811388300841892
# 特征2的标准差为: 0.1581138830084189
# 179-6、健康研究
# 体重的标准差为: 2.8702082220799308
180、pandas.Series.sum方法
180-1、语法
# 180、pandas.Series.sum方法
pandas.Series.sum(axis=None, skipna=True, numeric_only=False, min_count=0, **kwargs)
Return the sum of the values over the requested axis.
This is equivalent to the method numpy.sum.
Parameters:
axis{index (0)}
Axis for the function to be applied on. For Series this parameter is unused and defaults to 0.
Warning
The behavior of DataFrame.sum with axis=None is deprecated, in a future version this will reduce over both axes and return a scalar To retain the old behavior, pass axis=0 (or do not pass axis).
New in version 2.0.0.
skipnabool, default True
Exclude NA/null values when computing the result.
numeric_onlybool, default False
Include only float, int, boolean columns. Not implemented for Series.
min_countint, default 0
The required number of valid values to perform the operation. If fewer than min_count non-NA values are present the result will be NA.
**kwargs
Additional keyword arguments to be passed to the function.
Returns:
scalar or scalar
180-2、参数
180-2-1、axis(可选,默认值为None):对于Series
来说,axis
参数不适用,主要用于DataFrame
时指定轴的方向。
180-2-2、skipna(可选,默认值为True):指示在计算总和时是否跳过缺失值(NaN),如果设置为False,则总和将在遇到NaN时为NaN。
180-2-3、numeric_only(可选,默认值为False):若为True,只有数值类型的列才会被计算。如果是DataFrame
,将忽略非数值类型的数据;对于Series
,此参数通常不起作用。
180-2-4、min_count(可选,默认值为0):计算总和所需的最小非 NA/null 值数量,若非NA值的数量少于min_count
,则结果将为NaN。
180-2-5、**kwargs(可选):其他关键字参数,用于后续扩展功能做预留。
180-3、功能
计算Series
中所有元素的总和,它会将系列中的数值元素相加,通常会跳过缺失值(NaN),除非指定不跳过,此外,它也可以根据参数设置的要求,返回特定条件下的计算结果。
180-4、返回值
返回一个数值,表示总和。如果计算过程中所有元素都是缺失值(NaN)或者符合设置的条件不满足(如min_count
参数),则返回结果为NaN。
180-5、说明
使用场景:
180-5-1、数据汇总:当需要对一组数值数据进行汇总统计时,可以使用sum()
方法快速得出总和。例如,在财务数据分析中,可以计算一段时间内的总收入或总支出。
180-5-2、缺失值处理:在数据清洗过程中,经常会遇到缺失值。使用sum()
方法的skipna
参数,可以灵活地选择是否包含缺失值进行计算,帮助分析数据的完整性。
180-5-3、条件过滤后求和:结合布尔索引,可以先对数据进行过滤,再使用sum()
方法计算满足特定条件的数据总和。例如,可以计算某一产品类别的总销量。
180-5-4、时间序列分析:在处理时间序列数据时,常常需要计算一定时间段内的总和,例如每月的总销售额或每年的总收益。
180-5-5、组合计算:在多重指标分析中,可能需要对多个Series
的总和进行比较或组合运算sum()
方法可以提供便利。
180-5-6、数据报告生成:在生成数据报告或可视化时,常常需要提供一些基本的统计信息,包括总和,以展示数据的整体情况。
180-5-7、性能优化:在进行高性能数据处理时,使用sum()
方法可以利用Pandas内部优化,提升计算速度,尤其在处理大数据集时尤为重要。
180-6、用法
180-6-1、数据准备
无
180-6-2、代码示例
# 180、pandas.Series.sum方法
# 180-1、数据汇总
import pandas as pd
# 创建一个包含销售数据的Series
sales = pd.Series([200, 300, 150, 400, 250])
# 计算总销售额
total_sales = sales.sum()
print(f"总销售额: {total_sales}")
# 180-2、缺失值处理
import pandas as pd
import numpy as np
# 创建一个包含缺失值的Series
data = pd.Series([10, 20, np.nan, 40, 50])
# 计算总和,跳过缺失值
total_sum = data.sum(skipna=True)
print(f"总和(跳过缺失值): {total_sum}")
# 180-3、条件过滤后求和
import pandas as pd
# 创建一个包含产品销售数据的Series
sales = pd.Series([100, 200, 300, 400], index=['A', 'B', 'A', 'B'])
# 计算产品 'A' 的总销售额
a_total_sales = sales[sales.index == 'A'].sum()
print(f"产品A的总销售额: {a_total_sales}")
# 180-4、时间序列分析
import pandas as pd
# 创建一个时间序列数据
dates = pd.date_range('2023-01-01', periods=5)
sales_data = pd.Series([100, 150, 200, 250, 300], index=dates)
# 计算月销售总和
monthly_total = sales_data.sum()
print(f"本月销售总和: {monthly_total}")
# 180-5、组合计算
import pandas as pd
# 创建多个Series数据
sales_A = pd.Series([100, 200, 300])
sales_B = pd.Series([150, 250, 100])
# 计算各自的总和并组合
total_A = sales_A.sum()
total_B = sales_B.sum()
combined_total = total_A + total_B
print(f"产品A和B的总销售额: {combined_total}")
# 180-6、数据报告生成
import pandas as pd
# 假设我们有一个数据框包含一些产品的销量
data = {'Product': ['A', 'B', 'C'],
'Sales': [300, 150, 200]}
df = pd.DataFrame(data)
# 计算总销售额以生成报告
total_sales = df['Sales'].sum()
print(f"所有产品的总销售额: {total_sales}")
# 180-7、性能优化
import pandas as pd
import numpy as np
# 创建一个包含大量数据的Series
large_series = pd.Series(np.random.rand(10**6))
# 计算总和
total_sum = large_series.sum()
print(f"大数据集的总和: {total_sum}")
180-6-3、结果输出
# 180、pandas.Series.sum方法
# 180-1、数据汇总
# 总销售额: 1300
# 180-2、缺失值处理
# 总和(跳过缺失值): 120.0
# 180-3、条件过滤后求和
# 产品A的总销售额: 400
# 180-4、时间序列分析
# 本月销售总和: 1000
# 180-5、组合计算
# 产品A和B的总销售额: 1100
# 180-6、数据报告生成
# 所有产品的总销售额: 650
# 180-7、性能优化
# 大数据集的总和: 499809.22077620646