一、统计计算
1.1、 count
用于计算 Series中非NaN(非空)值的数量。
import pandas as pd
s = pd.Series([1, 2, None, 4, None])
count_non_na = s.count()
print(count_non_na)
1.2、 sum
sum() 函数会计算所有值的总和。
Series.sum(axis=None, skipna=True, numeric_only=None, min_count=0)
描述 | 说明 |
---|---|
axis | 对于 Series对象来说,这个参数通常不起作用,因为 Series是一维的。 它主要在 DataFrame对象中用于指定操作的轴(0表示按列求和,1表示按行求 和)。 |
skipna | 布尔值,默认为True,如果为True,则在计算总和时会忽略NaN值 。 如果为False,则返回NaN。 |
numeric_only | 布尔值,默认为None。如果为True,则只对数字类型的数据进行计算,只针对DataFrame。 |
min_count | int值,默认为0。表示在计算总和之前,至少需要多少个非NaN值.如果非NaN值的数量小于min_count,则结果为 NaN。 |
import pandas as pd
s = pd.Series([1, 2, None, 4, 5])
total = s.sum(min_count=5)
print(total)
1.3、 mean
mean() 函数会计算所有值的平均值。
Series.mean(axis=None, skipna=True, numeric_only=None)
描述 | 说明 |
---|---|
axis | 对于 Series对象来说,这个参数通常不起作用,因为 Series是一维的。 它主要在 DataFrame对象中用于指定操作的轴(0表示按列计算平均值,1表示按 行计算平均值)。 |
skipna | 布尔值,默认为True,如果为True,则在计算总和时会忽略NaN值 。 如果为False,则返回NaN。 |
numeric_only | 布尔值,默认为None。如果为True,则只对数字类型的数据进行计算,只针对DataFrame。 |
1.4、 median
median()函数用于计算DataFrame或Series中的中位数。
Series.median(axis=0, skipna=True, numeric_only=False)
描述 | 说明 |
---|---|
axis | 对于 Series对象来说,这个参数通常不起作用,因为 Series是一维的。 它主要在 DataFrame对象中用于指定操作的轴(0表示按列计算中位数,1表示按 行计算中位数)。 |
skipna | 布尔值,默认为True,如果为True,则在计算总和时会忽略NaN值 。 如果为False,则返回NaN。 |
numeric_only | 布尔值,默认为None。如果为True,则只对数字类型的数据进行计算,只针对DataFrame。 |
import pandas as pd
s = pd.Series([1, 2, 3, 4, 5])
median_value = s.median()
print(median_value)
1.5、 min和max
Series.min()函数用于计算Series对象中的最小值, Series.max()函数用于计算Series对象中的最大值。
Series.min(axis=0, skipna=True, numeric_only=False)
Series.max(axis=0, skipna=True, numeric_only=False)
描述 | 说明 |
---|---|
axis | 对于 Series对象来说,这个参数通常不起作用,因为 Series是一维的。 它主要在 DataFrame对象中用于指定操作的轴(0表示按列计算最大最小值,1表示按 行计算最大最小值)。 |
skipna | 布尔值,默认为True,如果为True,则在计算总和时会忽略NaN值 。 如果为False,则返回NaN。 |
numeric_only | 布尔值,默认为None。如果为True,则只对数字类型的数据进行计算,只针对DataFrame。 |
import pandas as pd
s = pd.Series([1, 2, 3, 4, 5])
min_value = s.min()
max_value = s.max()
print('最小值是:', min_value)
print('最大值是:', max_value)
1.6、 var
Series.var()函数用于计算Series对象的方差。
Series.var(axis=None, skipna=True, ddof=1, numeric_only=False)
描述 | 说明 |
---|---|
axis | 对于 在DataFrame中, Series对象,这个参数不会产生任何效果,因为 Series是一维的。axis用于指定沿着哪个轴计算方差。 |
skipna | 布尔值,默认为 True。如果为 True,则在计算方差之前会忽略 NaN 值。如果设置为 False,计算方差时会包括 NaN值,通常会导致结果也是 NaN。 |
ddof | 整数,默认为1。Delta Degrees of Freedom,用于贝塞尔校正,以得到 样本方差的估计。对于无偏估计(样本方差), ddof通常设置为1。如果计算总 体方差,应该将 ddof设置为0。 |
numeric_only | 布尔值,默认为False,如果为True ,则只对数字类型的数据进行方差计算,忽略非数字类型的数据。 |
import pandas as pd
import numpy as np
s = pd.Series([1, 2, np.nan, 4, 5])
variance = s.var()
print('方差是:', variance)
1.7、 std
Series.std()函数用于计算Series对象的标准差。
Series.std(axis=None, skipna=True, ddof=1, numeric_only=False, **kwargs)
描述 | 说明 |
---|---|
axis | 对于Series来说,这个参数不会产生任何效果,因为Series是一维的。它 主要用于DataFrame,以指定沿着哪个轴计算标准差。 |
skipna | 布尔值,默认为True。如果为True,则在计算标准差之前会忽略NaN 值,如果为False,则返回NaN。 |
ddof | 整数,默认为1。Delta Degrees of Freedom,是贝塞尔校正的参数。对 于无偏估计(样本标准差),ddof通常设置为1。 |
numeric_only | 布尔值,默认为False。如果为True,则只对数字类型的数据进 行计算,只针对DataFrame。 |
**kwargs | 其他关键字参数 |
import pandas as pd
import numpy as np
s = pd.Series([1, 2, np.nan, 4, 5])
std_dev = s.std()
print('标准差是:', std_dev)
1.8、 quantile
Series.quantile() 方法用于计算Series中数值的分位数。
Series.quantile(q=0.5, interpolation='linear')
描述 | 说明 |
---|---|
q | 这个参数是必需的,它表示要计算的分位数值。可以是单一的数值,也可以 是一个数值列表。例如, q=0.5 表示计算中位数(50%分位数)。 |
interpolation | 这个参数决定了当所需的分位数位于两个数据点之间时,应该 如何插值。默认值是 'linear',表示线性插值。其他选项包括 近的值)、 'lower'(选择较小的值)、 'nearest'(最 'higher'(选择较大的 值)、 'midpoint'(两个值的中间点)。 |
计算0.5分位数
import pandas as pd s = pd.Series([1, 2, 3, 4, 5]) median_value = s.quantile(q=0.5, interpolation='linear') print(median_value)
1.9、 cummax
该方法用于计算Series中元素的累积最大值,返回一个相同长度的Series,其中每个 位置上的值表示从Series开始到当前位置(包括当前位置)的最大值。
Series.cummax(axis=None, skipna=True, *args, **kwargs)
描述 | 说明 |
---|---|
axis | 对于Series来说,这个参数不起作用,因为Series是一维的。在 DataFrame上使用时, axis=0(默认)表示按列计算, axis=1表示按行计算。 |
skipna | 布尔值,默认为True。如果为True,则在计算累积最大值时会忽略NaN 值;如果为False,则任何NaN值都会导致结果在该位置及之后的值都为NaN。 |
*args, **kwargs | 这些参数用于兼容性,通常不需要使用。 |
import pandas as pd
s = pd.Series([1, 2, None, 4, 5])
cumsum_series = s.cummax()
print(cumsum_series)
1.10、 cummin
该方法用于计算Series中元素的累积最小值,返回一个相同长度的Series,其中每个 位置上的值表示从Series开始到当前位置(包括当前位置)的最小值。
Series.cummin(axis=None, skipna=True, *args, **kwargs)
描述 | 说明 |
---|---|
axis | 对于Series来说,这个参数不起作用,因为Series是一维的。在 DataFrame上使用时, axis=0(默认)表示按列计算, axis=1表示按行计算。 |
skipna | 布尔值,默认为True。如果为True,则在计算累积最小值时会忽略NaN 值;如果为False,则任何NaN值都会导致结果在该位置及之后的值都为NaN。 |
*args, **kwargs | 这些参数用于兼容性,通常不需要使用。 |
import pandas as pd
s = pd.Series([1, 2, None, 4, 5])
cumsum_series = s.cummin()
print(cumsum_series)
1.11、 cumsum
用于计算Series中元素的累积和。该方法返回一个相同长度的Series,其中每个位置 上的值表示从Series开始到当前位置(包括当前位置)的所有元素的累加和。
Series.cumsum(axis=None, skipna=True, *args, **kwargs)
描述 | 说明 |
---|---|
axis | 对于Series来说,这个参数不起作用,因为Series是一维的。在 DataFrame上使用时, axis=0(默认)表示按列计算, axis=1表示按行计算。 |
skipna | 布尔值,默认为True。如果为True,则在计算累积和时会忽略NaN 值;如果为False,则任何NaN值都会导致结果在该位置及之后的值都为NaN。 |
*args, **kwargs | 这些参数用于兼容性,通常不需要使用。 |
import pandas as pd
s = pd.Series([1, 2, None, 4, 5])
cumsum_series = s.cumsum()
print(cumsum_series)
1.12、 cumprod
用于计算Series中元素的累积乘积。该方法返回一个相同长度的Series,其中每个位 置上的值表示从Series开始到当前位置(包括当前位置)的所有元素的累积乘积。
Series.cumprod(axis=None, skipna=True, *args, **kwargs)
描述 | 说明 |
---|---|
axis | 对于Series来说,这个参数不起作用,因为Series是一维的。在 DataFrame上使用时, axis=0(默认)表示按列计算, axis=1表示按行计算。 |
skipna | 布尔值,默认为True。如果为True,则在计算累积乘积时会忽略NaN 值;如果为False,则任何NaN值都会导致结果在该位置及之后的值都为NaN。 |
*args, **kwargs | 这些参数用于兼容性,通常不需要使用。 |
import pandas as pd
s = pd.Series([1, 2, None, 4, 5])
cumprod_series = s.cumprod()
print(cumprod_series)
二、分组和聚合
2.1、groupby
用于将Series中的数据分组,并允许你对这些分组进行操作,比如计算每个组的总 和、平均值、最大值、最小值等。
Series.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, observed=False, dropna=True)
描述 | 说明 |
---|---|
by | 确定分组依据,如果 by 是一个函数,它会在对象索引的每个值上调用。如 果传递了字典或Series,将使用这些对象的值来确定组。如果传递了长度等于所 选轴的列表或 ndarray,则直接使用这些值来确定组。 |
axis | 用于分组的轴。对于Series,这个参数通常设置为0(默认值),因为 Series是一维数据结构。 |
level | 如果索引是多级索引(MultiIndex),则此参数用于指定分组所依据的 级别,by和level同时只能存在一个,且必须存在一个。 |
as_index | 是否将分组键作为结果的索引,默认值为True。仅与DataFrame 输入相关。 |
sort | 是否对结果进行排序。默认值为 True。 |
group_keys | 是否在结果中包含分组键。默认值为 True。 |
observed | 是否仅包含实际观察到的分类值。默认值为 False。 |
dropna | 是否从结果中排除包含 NaN 的组。默认值为 True。 |
import pandas as pd
data = [10, 20, 10, 30, 20, 10]
series = pd.Series(data)
grouped = series.groupby(series).count()
print(grouped)
2.2、agg
Series.agg() 方法用于对Series中的数据进行聚合操作。
Series.agg(func=None, axis=0, *args, **kwargs)
描述 | 说明 |
---|---|
func | 聚合函数或函数列表/字典。可以是一个函数名称(字符串),也可以是实 际的函数对象,或者是这些的列表或字典。如果是字典,则键将是输出列的名 称,值应该是应用于Series的函数。 |
axis | 整数或字符串,默认为0。由于Series是一维数据结构,这个参数实际上在 Series的上下文中不起作用。在DataFrame的上下文中,axis=0 表示按列进行 聚合, axis=1 表示按行进行聚合。 |
*args | 位置参数,可以传递给 func。 |
**kwargs | 关键字参数,可以传递给func。 |
import pandas as pd
s = pd.Series([1, 2, 3, 4, 5])
result = s.agg('mean')
print(result)
result = s.agg(['max', 'min'])
print(result)
result = s.agg({'Maximum': 'max', 'Minimum': 'min'})
print(result)
def custom_agg(x, power):
return (x ** power).sum()
result = s.agg(custom_agg, power=2)
print(result)
三、思维导图