目录
- Series
- 一、series 的创建
- 二、算术运算函数
- Series.add
- Series.sub
- Series.mul
- Series.div
- Series.truediv
- Series.floordiv
- Series.mod
- Series.pow
- 三、比较运算函数
- Series.lt
- Series.gt
- Series.le
- Series.ge
- Series.ne
- Series.eq
- 四、统计学函数
- Series.describe()
- Series.value_counts()
- Series.count()
- Series.mean()
- Series.max()
- Series.var()
- Series.nlargest()
- 五、选择重新索引
- Series.drop
- Series.head
- Series.tail
- Series.where
- Series.mask
- Series.idxmax
- Series.argmax
Series
Pandas Series 类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。
Series 由索引(index)和列组成,函数如下:
pandas.Series( data, index, dtype, name, copy)
参数说明:
- data:一组数据(ndarray 类型)。
- index:数据索引标签,如果不指定,默认从 0 开始。
- dtype:数据类型,默认会自己判断。
- name:设置名称。
- copy:拷贝数据,默认为 False。
一、series 的创建
# 导包
import numpy as np
import pandas as pd# 创建
arr01 = np.array([1,2,3,4,6,6])
ser01 = pd.Series(data=arr01, index=['a','b','c','d','e','f'])arr02 = np.ones(shape=(6,))
ser02 = pd.Series(data=arr02, index=['a','b','c','d','e','f'])
# 输出ser01
a 1
b 2
c 3
d 4
e 6
f 6
dtype: int32# 输出ser02
a 1.0
b 1.0
c 1.0
d 1.0
e 1.0
f 1.0
dtype: float64
二、算术运算函数
基本的算术运算是四则运算(加、减、乘、除)和乘方等。Pandas中都实现了对应的算术运算函数,如add()、sub()、mul()、div()等,常用的算术运算函数见下表。
算术运算函数 | 用法介绍(以DataFrame为例) | 描述 |
---|---|---|
add() | df1.add(df2) | df1与df2进行加法运算 |
radd() | df1.radd(df2) | df2与df1进行加法运算 |
sub() | df1.sub(df2) | 用df1减df2 |
rsub() | df1.rsub(df2) | 用df2减df1 |
mul() | df1.mul(df2) | df1与df2进行乘法运算 |
rmul() | df1.rmul(df2) | df2与df1进行乘法运算 |
div() | df1.div(df2) | 用df1除df2 |
rdiv() | df1.rdiv(df2) | 用df2除df1 |
truediv() | df1.truediv(df2) | 用df1除df2 |
rtruediv() | df1.rtruediv(df2) | 用df2除df1 |
floordiv() | df1.floordiv(df2) | 用df1除df2,取整除 |
rfloordiv() | df1.rfloordiv(df2) | 用df2除df1,取整除 |
mod() | df1.mod(df2) | 用df1除df2,取余数 |
rmod() | df1.rmod(df2) | 用df2除df1,取余数 |
pow() | df1.pow(df2) | 计算df1的df2次方,df1^df2 |
rpow() | df1.rpow(df2) | 计算df2的df1次方,df2^df1 |
Series.add
语法:
Series.add(other, level=None, fill_value=None, axis=0)
参数:
- other :Series or scalar value
- level :int or name
- fill_value :None or float value, default None (NaN)
举例:
# 系列和数的运算
ser01.add(10)
# 输出
a 11
b 12
c 13
d 14
e 15
f 16
dtype: int32# 系列和系列的运算
ser01.add(ser02)
# 输出
a 2.0
b 3.0
c 4.0
d 5.0
e 6.0
f 7.0
dtype: float64
Series.sub
语法:
Series.sub(other, level=None, fill_value=None, axis=0)
参数:
- other :Series or scalar value
- level :int or name
- fill_value :None or float value, default None (NaN)
举例:
# 系列和数的运算
ser01.sub(1)
# 输出
a 0
b 1
c 2
d 3
e 5
f 5
dtype: int32# 系列和系列的运算
ser01.sub(ser02)
# 输出
a 0.0
b 1.0
c 2.0
d 3.0
e 5.0
f 5.0
dtype: float64
Series.mul
语法:
Series.mul(other, level=None, fill_value=None, axis=0)
参数:
- other :Series or scalar value
- level :int or name
- fill_value :None or float value, default None (NaN)
举例:
# 系列和数的运算
ser01.mul(2)
# 输出
a 2
b 4
c 6
d 8
e 12
f 12
dtype: int32# 系列和系列的运算
ser01.mul(ser02)
# 输出
a 1.0
b 2.0
c 3.0
d 4.0
e 6.0
f 6.0
dtype: float64
Series.div
语法:
Series.div(other, level=None, fill_value=None, axis=0)
参数:
- other :Series or scalar value
- level :int or name
- fill_value :None or float value, default None (NaN)
举例:
# 系列和数的运算
ser01.div(2)
# 输出
a 0.5
b 1.0
c 1.5
d 2.0
e 3.0
f 3.0
dtype: float64# 系列和系列的运算
ser01.div(ser02)
# 输出
a 1.0
b 2.0
c 3.0
d 4.0
e 6.0
f 6.0
dtype: float64
Series.truediv
语法:
Series.truediv(other, level=None, fill_value=None, axis=0)
参数:
- other :Series or scalar value
- level :int or name
- fill_value :None or float value, default None (NaN)
举例:
# 系列和数的运算
ser01.truediv(10)
# 输出
a 0.1
b 0.2
c 0.3
d 0.4
e 0.6
f 0.6
dtype: float64# 系列和系列的运算
ser01.truediv(ser02)
# 输出
a 1.0
b 2.0
c 3.0
d 4.0
e 6.0
f 6.0
dtype: float64
Series.floordiv
语法:
Series.floordiv(other, level=None, fill_value=None, axis=0)
参数:
- other :Series or scalar value
- level :int or name
- fill_value :None or float value, default None (NaN)
举例:
# 系列和数的运算
ser01.truediv(3)
# 输出
a 0.333333
b 0.666667
c 1.000000
d 1.333333
e 2.000000
f 2.000000
dtype: float64# 系列和系列的运算
ser01.truediv(ser02)
# 输出
a 1.0
b 2.0
c 3.0
d 4.0
e 6.0
f 6.0
dtype: float64
Series.mod
语法:
Series.mod(other, level=None, fill_value=None, axis=0)
参数:
- other :Series or scalar value
- level :int or name
- fill_value :None or float value, default None (NaN)
举例:
# 系列和数的运算
ser01.mod(3)
# 输出
a 1
b 2
c 0
d 1
e 0
f 0
dtype: int32# 系列和系列的运算
ser01.mod(ser02)
# 输出
a 0.0
b 0.0
c 0.0
d 0.0
e 0.0
f 0.0
dtype: float64
Series.pow
语法:
Series.pow(other, level=None, fill_value=None, axis=0)
参数:
- other :Series or scalar value
- level :int or name
- fill_value :None or float value, default None (NaN)
举例:
# 系列和数的运算
ser01.pow(3)
# 输出
a 1
b 8
c 27
d 64
e 216
f 216
dtype: int32# 系列和系列的运算
ser01.pow(ser02)
# 输出
a 1.0
b 2.0
c 3.0
d 4.0
e 6.0
f 6.0
dtype: float64
三、比较运算函数
比较运算函数 | 用法介绍(以DataFrame为例) | 描述 |
---|---|---|
Series.lt | df1.lt(df2) | < |
Series.gt | df1.gt(df2) | > |
Series.le | df1.le(df2) | <= |
Series.ge | df1.ge(df2) | >= |
Series.ne | df1.ne(df2) | != |
Series.eq | df1.eq(df2) | == |
Series.lt
语法:
Series.gt(other, level=None, fill_value=None, axis=0)
参数:
- other :Series or scalar value
- level :int or name
- fill_value :None or float value, default None (NaN)
举例:
# 系列比较
ser01.lt(ser02)
# 输出
a False
b False
c False
d False
e False
f False
dtype: bool
Series.gt
语法:
Series.gt(other, level=None, fill_value=None, axis=0)
参数:
- other :Series or scalar value
- level :int or name
- fill_value :None or float value, default None (NaN)
举例:
# 系列比较
ser01.gt(ser02)
# 输出
a False
b True
c True
d True
e True
f True
dtype: bool
Series.le
语法:
Series.gt(other, level=None, fill_value=None, axis=0)
参数:
- other :Series or scalar value
- level :int or name
- fill_value :None or float value, default None (NaN)
举例:
# 系列比较
ser01.le(ser02)
# 输出
a True
b False
c False
d False
e False
f False
dtype: bool
Series.ge
语法:
Series.gt(other, level=None, fill_value=None, axis=0)
参数:
- other :Series or scalar value
- level :int or name
- fill_value :None or float value, default None (NaN)
举例:
# 系列比较
ser01.ge(ser02)
# 输出
a True
b True
c True
d True
e True
f True
dtype: bool
Series.ne
语法:
Series.gt(other, level=None, fill_value=None, axis=0)
参数:
- other :Series or scalar value
- level :int or name
- fill_value :None or float value, default None (NaN)
举例:
# 系列比较
ser01.ne(ser02)
# 输出
a False
b True
c True
d True
e True
f True
dtype: bool
Series.eq
语法:
Series.gt(other, level=None, fill_value=None, axis=0)
参数:
- other :Series or scalar value
- level :int or name
- fill_value :None or float value, default None (NaN)
举例:
# 系列比较
ser01.eq(ser02)
# 输出
a True
b False
c False
d False
e False
f False
dtype: bool
四、统计学函数
统计学函数 | 描述 |
---|---|
Series.describe() | 描述统计分析 |
Series.value_counts() | 统计值的频数 |
Series.count() | 频数 |
Series.mean() | 平均值 |
Series.max() | 最大值 |
Series.var() | 返回请求轴上的无偏方差 |
Series.nlargest() | 返回最大的n 个元素 |
Series.describe()
语法:
Series.describe(percentiles=None, include=None, exclude=None, datetime_is_numeric=False)
参数:
- percentiles: 列表,可选
- include: “全部”,dtypes 或无(默认)列表,可选
- exclude: dtypes 或 None (默认)的类似列表,可选
- datetime_is_numeric: bool,默认 False
举例:
ser01.describe()
# 输出
count 6.000000
mean 3.500000
std 1.870829
min 1.000000
25% 2.250000
50% 3.500000
75% 4.750000
max 6.000000
dtype: float64
ser03 = pd.Series(data=['a','a','a','b','b','c'])
ser03
# 输出
0 a
1 a
2 a
3 b
4 b
5 c
dtype: object
Series.value_counts()
语法:
Series.value_counts(normalize=False, sort=True, ascending=False, bins=None, dropna=True)
参数:
- normalize :布尔值,默认为 False
- sort :布尔值,默认 True
- ascending :布尔值,默认 False
- bins :int,可选
- dropna :布尔值,默认为 True
举例:
ser03.value_counts()
# 输出
a 3
b 2
c 1
dtype: int64
Series.count()
语法:
Series.count(level=None)
参数:
- level :int或级别名称,默认无
举例:
ser03.count()
# 输出
6
Series.mean()
语法:
Series.mean(axis=NoDefault.no_default, skipna=True, level=None, numeric_only=None, **kwargs)
参数:
- axis :{索引(0)}
- skipna :布尔值,默认为 True
- level :int或级别名称,默认无
- numeric_only :布尔值,默认无
- **kwargs :要传递给函数的附加关键字参数。
举例:
ser01.mean()
# 输出
3.5
Series.max()
语法:
Series.max(axis=NoDefault.no_default, skipna=True, level=None, numeric_only=None, **kwargs)
参数:
- axis :{索引(0)}
- skipna :布尔值,默认为 True
- level :int或级别名称,默认无
- numeric_only :布尔值,默认无
- **kwargs :要传递给函数的附加关键字参数。
举例:
ser01.max()
# 输出
6
Series.var()
语法:
Series.var(axis=None, skipna=None, level=None, ddof=1, numeric_only=None, **kwargs)
参数:
- axis:{索引(0)}
- skipna:排除NA /空值。如果整个行/列均为NA,则结果为NA
- level:如果轴是MultiIndex(分层),则沿特定级别计数,并折叠成标量
- ddof:Delta自由度。计算中使用的除数为N-ddof,其中N表示元素数。
- numeric_only:仅包括float,int,boolean列。如果为None,将尝试使用所有内容,然后仅使用数字数据。未针对系列实施。
举例:
ser01.var()
# 输出
4.2666666666666675
Series.nlargest()
语法:
Series.nlargest(n=5, keep=‘first’)
参数:
-
n:整数,默认 5。返回这么多降序排序的值。
-
keep:{‘first’, ‘last’, ‘all’},默认 ‘first’。
当有重复值不能全部适合一系列n元素时:
first:按出现的顺序返回前n次出现。
last:以出现的相反顺序返回最后n次出现。
all: 保留所有出现。这可能会导致 Series 的大小大于n。
举例:
ser01.nlargest(n=4, keep='last')
# 输出
f 6
e 6
d 4
c 3
dtype: int32
五、选择重新索引
函数 | 描述 |
---|---|
Series.drop | 删除series中的元素 |
Series.head | 展示前n条数据 |
Series.tail | 展示尾部n条数据 |
Series.where | 条件筛选 |
Series.mask | 替换 |
Series.idxmax | 返回最大值的行标签 |
Series.argmax |
Series.drop
语法:
Series.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors=‘raise’)
参数:
- labels :单标签或list-like
要删除的索引标签。 - axis :0,默认 0
为系列上的应用程序提供冗余。 - index :单标签或list-like
Series 上的应用程序冗余,但可以使用 ‘index’ 代替 ‘labels’。 - columns :单标签或list-like
系列没有变化;请改用‘index’ or ‘labels’。 - level :int 或级别名称,可选
对于 MultiIndex,将删除标签的级别。 - inplace :布尔值,默认为 False
如果为 True,则在原地执行操作并返回 None。 - errors :{‘ignore’, ‘raise’},默认 ‘raise’
如果‘ignore’,抑制错误并且仅删除现有标签。
举例:
ser01.drop(index=['f','c'], inplace=True)
# 输出
a 1
b 2
d 4
e 6
dtype: int32
Series.head
语法:
Series.head(n=5)
参数:
- n:整数,默认 5
要选择的行数。
举例:
ser01.head(2)
# 输出
a 1
b 2
dtype: int32
Series.tail
语法:
Series.tail(n=5)
参数:
- n:整数,默认 5
要选择的行数。
举例:
ser01.tail(2)
# 输出
d 4
e 6
dtype: int32
Series.where
语法:
Series.where(cond, other=NoDefault.no_default, inplace=False, axis=None, level=None, errors=NoDefault.no_default, try_cast=NoDefault.no_default)
参数:
-
cond :bool 系列/数据帧,array-like,或可调用
cond 为 True 时,保留原始值。如果为 False,则替换为来自 other 的相应值。如果cond 是可调用的,它是在系列/数据帧上计算的,并且应该返回布尔系列/数据帧或数组。可调用对象不能更改输入 Series/DataFrame(尽管 pandas 不会检查它)。 -
other:标量、Series/DataFrame 或可调用
cond 为 False 的条目将替换为来自 other 的相应值。如果 other 是可调用的,它是在 Series/DataFrame 上计算的,并且应该返回标量或 Series/DataFrame。可调用对象不能更改输入 Series/DataFrame(尽管 pandas 不会检查它)。 -
inplace:布尔值,默认为 False
是否对数据执行就地操作。 -
axis:整数,默认无
如果需要,对齐轴。 -
level:整数,默认无
如果需要,对齐级别。 -
errors :str,{‘raise’, ‘ignore’},默认 ‘raise’
请注意,当前此参数不会影响结果,并且始终会强制转换为合适的 dtype。‘raise’:允许引发异常。
‘ignore’:抑制异常。出错时返回原始对象。
-
try_cast:布尔值,默认无
尝试将结果转换回输入类型(如果可能)。
举例:
ser01.where(ser01>5, 10)
# 输出
a 10
b 10
d 10
e 6
dtype: int32
Series.mask
语法:
Series.mask(cond, other=nan, inplace=False, axis=None, level=None, errors=’raise’, try_cast=False, raise_on_error=None)
参数:
- cond :如果cond为False,请保留原始值。如果为True,则用其他的相应值替换。
- other :cond为True的条目将替换为其他条目的对应值。
- inplace :是否对数据执行适当的操作。
- axis :对齐轴(如果需要)。
- level :对齐级别(如果需要)。
举例:
ser01.mask(ser01>5, 10)
# 输出
a 1
b 2
d 4
e 10
dtype: int32
Series.idxmax
语法:
Series.idxmax(axis=0, skipna=True, *args, **kwargs)
参数:
- skipna :排除NA /空值。如果整个系列为NA,则结果为NA。
- axis :为了与DataFrame.idxmax兼容。冗余适用于系列。
举例:
ser01.idxmax()
# 输出
'e'
Series.argmax
语法:
Series.argmax(axis=None, skipna=True, *args, **kwargs)
参数:
-
axis:{没有},与 Series 保持一致的伪参数。
-
skipna:布尔值,默认为真,显示结果时排除 NA/null 值。
-
*args, **kwargs:与 NumPy 兼容的附加参数和关键字。
举例:
ser01.argmax()
# 输出
4