python库--pandas--Series

209 阅读6分钟

本文已参与「新人创作礼」活动, 一起开启掘金创作之路。

格式说明:

  • 方法 返回值类型 说明
    • 参数 说明

下文中 s 表示 Series 的一个实例

  • pd.Series() Series 创建一维数据类型Series
    • data=None 要转化为Series的数据(也可用dict直接设置行索引) 若是标量则必须设置索引,该值会重复,来匹配索引的长度
    • index=None 设置行索引
    • dtype=None 设置数据类型(使用numpy数据类型)
    • name=None 设置Series的name属性
    • copy=False 不复制 (当data为ndarray,Series时生效,否则复制)
    • fastpath=False
  • s.values ndarray 返回s的值
  • s.name str 返回s的name(可更改)
  • s.index Index 返回s的索引(可更改)
  • s.index.name str 返回s的索引的name属性(可更改)
  • s.index.is_unique bool 判断s的索引值是否唯一
  • s.dtype np.dtype 返回s的数据类型
  • s.ftype str 返回s是稀疏的还是稠密的
  • s.shape tuple 返回s的形状 (n,)
  • s.nbytes int 返回s的字节数
  • s.ndim int 返回s的纬度数 1
  • s.size int 返回s的元素数量
  • s.strides tuple 返回s中数据的步幅, 即指针移动一次的字节数 (单元素字节数,)
  • s.itemsize int 返回s中元素的字节数
  • s.base    
  • s.T Series 返回s的转置, 但s是一维的所以还是它本身
  • s.memory_usage() int s的内存使用情况(字节)
    • index=True 索引是否参与计算
    • deep=False 是否计算s引用的对象的内存使用情况
  • s.astype() Series 转换数据类型
    • dtype np.dtype
    • copy=True 是否复制基层数据
    • errors='raise' 'raise': 转换失败则报错; 'ignore': 转换失败则保留原数据类型
  • s.copy() Series 拷贝s
    • deep=True True: 浅拷贝; False: 引用对象
  • s.isnull() Series 返回一个大小相同值为bool的对象, 指示值是否为null
  • s.notnull() Series 返回一个大小相同值为bool的对象, 指示值是否不为null

索引/迭代

  • s.get()   返回s中对应索引的值, 若索引不存在则返回None或指定值
    • key 想要获取的值的索引
    • default=None 若索引不存在返回的值
  • s.at[i]   标量 | 基于标签的访问器
  • s.iat[n]   标量 | 基于位置的访问器
  • s.ix[i or n] 或 s[]   基于标签和位置的访问器, 支持.loc和.iloc中的任何输入
  • s.loc[i]  
    • [i] 基于单个标签访问
    • [i1, i2, i3] 基于多个标签访问
    • [i1:i2] 返回i1与i2之间的元素(包括边界)
    • [[bool]] 传入bool数组, 返回True位置对应的那些值
  • s.iloc[n]  
    • [n] 基于单个位置访问
    • [n1, n2, n3] 基于多个位置访问
    • [n1:n2] 类似list
    • [[bool]] 传入bool数组, 返回True位置对应的那些值
  • s.__iter__() Iterator 返回一个基于值的迭代器
  • s.iteritems Iterator 返回一个(索引, 值)的迭代器

运算

  • s.add() Series 加法运算. 同s+s2
    • other Series或标量
    • level=None
    • fill_value=None 使用此值填充缺失值
  • s.sub() Series 减法运算. 同s-s2
  • s.mul() Series 乘法运算. 同s*s2
  • s.div() Series 浮点除法运算. 同s/s2
  • s.truediv() Series 浮点除法运算. 同s/s2
  • s.floordiv() Series 整数除法运算. 同s//s2
  • s.mod() Series 取模(余)运算. 同s%s2
  • s.pow() Series 幂运算. 同s**s2
  • s.radd() Series 右侧加法. 同s2+s
  • s.rsub() Series 右侧减法. 同s2-s
  • s.rmul() Series 右侧乘法. 同s2*s
  • s.rdiv() Series 右侧浮点除法. 同s2/s
  • s.rtruediv() Series 右侧浮点除法. 同s2/s
  • s.rfloordiv() Series 右侧整数除法. 同s2//s
  • s.rmod() Series 右侧取余运算. 同s2%s
  • s.rpow() Series 右侧幂运算. 同s2**s
  • s.lt() Series 同 s < s2
  • s.gt() Series 同 s > s2
  • s.le() Series 同 s <= s2
  • s.ge() Series 同 s >= s2
  • s.ne() Series 同 s != s2
  • s.eq() Series 同 s == s2
  • s.combine() Series 使用自定义函数运算
    • other Series或标量
    • func 传入两个参数, 返回一个参数的函数
    • fill_value=nan 当其中一个s缺少索引是, 使用此值填充后进行运算
  • s.combine_first() Series other | 求索引的并集, 优先保留左侧的值 |
  • s.round() Series decimals=0 | 四舍五入为给定的小数位数 |
  • np.exp(s) Series 支持大多数numpy方法

功能应用 

  • s.apply() Series 对s中所有值执行某一操作
    • func s中每个值要执行的操作(函数)
    • convert_dtype=T 尝试自动适配dtype, 若为False, 则保留为dtype=object
    • args=() 除了值之外, 还要传递给函数的位置参数
    • **kwds 传递给函数的关键字参数
  • s.map() Series 映射
    • arg fun: 传入value返回值作为输出; dict或Series: 映射key(index)->value
    • na_action=None 'ignore': s中nan值将不会受到映射函数的影响

计算/描述统计

  • s.abs() Series   | 返回所有值的绝对值 |
  • s.all() bool   | s中是否全为True(非bool值默认会转换) |
  • s.any() bool   | s中是否存在True(非bool值默认会转换) |
  • s.autocorr() float Lag-N自相关
    • lag=1 执行自相关之前应用的滞后数

重构索引 / 选择 / 标签操作

  • s.align() tuple 更新索引, 并以(new_s, new_s2)的形式返回, 缺失以nan补全
    • other Series
    • join='outer'
      • 'outer': 新索引为s与s2的并集
      • 'inner': 新索引为s与s2的交集
      • 'left': 新索引为s的索引
      • 'right': 新索引为s2的索引
    • axis=None Series不要更改此参数
    • level=None
    • copy=True 是否返回新对象
    • fill_value=None 缺失值使用的值, 默认np.NaN
    • method=None
    • limit=None
    • fill_axis=0
    • broadcast_ axis=None
  • s.drop() Series 删除对应标签并返回新对象
    • labels 单一标签或list_like
    • axis=0
    • level=None
    • inplace=False 若为True则修改s本身而不是新生成一个对象
    • error='raise' 'ignore' :忽略错误
  • s.drop_duplicates() Series 删除重复项
    • keep
      • 'first': 仅保留第一次出现的副本(默认)
      • 'last': 删除重复项, 但最后一项除外
      • False: 删除所有重复项
    • inplace=False 若为True则修改s本身而不是新生成一个对象
  • s.duplicated() Series 返回是否是重复项的bool表示结果
    • keep
      • 'first': 除第一次出现外, 标记重复为True
      • 'last': 除了最后一次出现, 标记重复为True
      • False: 将所有重复项标记为True
  • s.equal() bool 判断两个Series是否包含相同元素, 相同位置NaN被认为是相同的
    • other Series
  • s.first() Series 基于时间偏移来获取时间序列的子集
    • offset '10D': 前10天
  • s.last() Series 基于时间偏移来获取时间序列的子集
    • offset '5M': 过去5个月
  • s.head() Series 返回前n行
    • n=5 返回前n行
  • s.idxmax() index
    • skipna=True 排除NA/null值(否则返回nan)
  • s.idxmin() index
    • skipna=True 排除NA/null值(否则返回nan)
  • s.isin() Series 返回布尔Series, 显示s中每个元素是否包含在传入的序列中
    • values set或list-like, 不可以是单个字符串
  • s.reindex() Series 更新索引, 索引对应的值不变, 之前不存在的索引的值默认设为NaN(s的索引必须单调递增或递减)
    • index 新索引
    • method=None
      • None: 不填充间隙
      • 'backfill' / 'bfill': 将比此索引排序靠后的有效值索引的值填充到此处
      • 'pad' / 'ffill': 将比此索引排序靠前的有效值索引的值填充到此处
      • 'nearest': 仅适用于可用于判断距离的索引, 选择离得最近的索引的值填充
    • copy=True 返回一个新对象, 即使传递的索引是相同的
    • level=None
    • fill_value=np.nan 缺失值填充的内容
    • limit=None 向前或向后填充的连续元素的最大数量(貌似索引只能是数字)
    • tolerance=None 原标签和新标签的最大距离(可计算距离的数据类型)
  • s.rename() Series 修改Series的name或索引且产生一个新的Series(应该可以本地修改, 但尝试没有成功)
    • index
      • 标量: 更改s的name
      • fun: 把索引传入函数, 传出值替换原索引
      • 字典: {old_index: new_index}
    • copy=True