[pandas]方法总结

  • pandas.rolling 方法
  • pandas.cut 方法
    • 用途
    • 原型
    • 参数含义
    • 返回值
    • 例子
  • pandas.rename 方法
  • 参考

pandas.rolling 方法

window:表示时间窗的大小,注意有两种形式(int or offset)。如果使用int,则数值表示计算统计量的观测值的数量即向前几个数据。如果是offset类型,表示时间窗的大小。pandas offset相关可以参考这里。
min_periods:最少需要有值的观测点的数量,对于int类型,默认与window相等。对于offset类型,默认为1。
freq:从0.18版本中已经被舍弃。
center:是否使用window的中间值作为label,默认为false。只能在window是int时使用。
win_type:窗口类型,默认为None一般不特殊指定,了解支持的其他窗口类型,参考这里。

on:对于DataFrame如果不使用index(索引)作为rolling的列,那么用on来指定使用哪列。
closed:定义区间的开闭,曾经支持int类型的window,新版本已经不支持了。对于offset类型默认是左开右闭的即默认为right。可以根据情况指定为left both等。
axis:方向(轴),一般都是0。

DataFrame.rolling(window, min_periods=None, freq=None, center=False, win_type=None, on=None, axis=0, closed=None)

rolling 方法其实就在固定一个window,这样你就可以在这个window做sum, mean.等等
例子

import pandas as pd
import numpy as np
index = pd.date_range('2019-01-01', periods=5)
# 创建日期序列
data = pd.DataFrame(np.arange(len(index)), index=index, columns=['test'])
# 创建简单的pd.DataFrame
print(data)
# 打印data
data['sum'] = data.test.rolling(3).sum()
print('-----')
print(data['sum'])
# 移动3个值,进行求和
data['mean'] = data.test.rolling(3).mean()
print('-----')
print(data['mean'] )
# 移动3个值,进行求平均数
data['mean1'] = data.test.rolling(3, min_periods=2).mean()
print('-----')
print(data['mean1'] )
            test
2019-01-01     0
2019-01-02     1
2019-01-03     2
2019-01-04     3
2019-01-05     4
-----
2019-01-01    NaN
2019-01-02    NaN
2019-01-03    3.0
2019-01-04    6.0
2019-01-05    9.0
Freq: D, Name: sum, dtype: float64
-----
2019-01-01    NaN
2019-01-02    NaN
2019-01-03    1.0
2019-01-04    2.0
2019-01-05    3.0
Freq: D, Name: mean, dtype: float64
-----
2019-01-01    NaN
2019-01-02    0.5
2019-01-03    1.0
2019-01-04    2.0
2019-01-05    3.0
Freq: D, Name: mean1, dtype: float64Process finished with exit code 0

pandas.cut 方法

用途

pandas.cut用来把一组数据分割成离散的区间。比如有一组年龄数据,可以使用pandas.cut将年龄数据分割成不同的年龄段并打上标签。

原型

pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise') #0.23.4

参数含义

x:被切分的类数组(array-like)数据,必须是1维的(不能用DataFrame);
bins:bins是被切割后的区间(或者叫“桶”、“箱”、“面元”),有3中形式:一个int型的标量、标量序列(数组)或者pandas.IntervalIndex 。

一个int型的标量
当bins为一个int型的标量时,代表将x平分成bins份。x的范围在每侧扩展0.1%,以包括x的最大值和最小值。
标量序列
标量序列定义了被分割后每一个bin的区间边缘,此时x没有扩展。
pandas.IntervalIndex
定义要使用的精确区间。
right:bool型参数,默认为True,表示是否包含区间右部。比如如果bins=[1,2,3],right=True,则区间为(1,2],(2,3];right=False,则区间为(1,2),(2,3)。
labels:给分割后的bins打标签,比如把年龄x分割成年龄段bins后,可以给年龄段打上诸如青年、中年的标签。labels的长度必须和划分后的区间长度相等,比如bins=[1,2,3],划分后有2个区间(1,2],(2,3],则labels的长度必须为2。如果指定labels=False,则返回x中的数据在第几个bin中(从0开始)。
retbins:bool型的参数,表示是否将分割后的bins返回,当bins为一个int型的标量时比较有用,这样可以得到划分后的区间,默认为False。
precision:保留区间小数点的位数,默认为3.
include_lowest:bool型的参数,表示区间的左边是开还是闭的,默认为false,也就是不包含区间左部(闭)。
duplicates:是否允许重复区间。有两种选择:raise:不允许,drop:允许。

返回值

out:一个pandas.Categorical, Series或者ndarray类型的值,代表分区后x中的每个值在哪个bin(区间)中,如果指定了labels,则返回对应的label。
bins:分隔后的区间,当指定retbins为True时返回。

例子

这里拿给年龄分组当做例子。

import numpy as np
import pandas as pdages = np.array([1,5,10,40,36,12,58,62,77,100]) #年龄数据

将ages平分成5个区间

r1 = pd.cut(ages, 5)
print(r1)

输出:

[(0.901, 20.8], (0.901, 20.8], (0.901, 20.8], (20.8, 40.6], (20.8, 40.6], (0.901, 20.8], (40.6, 60.4], (60.4, 80.2], (60.4, 80.2], (80.2, 100.0]]
Categories (5, interval[float64]): [(0.901, 20.8] < (20.8, 40.6] < (40.6, 60.4] < (60.4, 80.2] <(80.2, 100.0]]

可以看到ages被平分成5个区间,且区间两边都有扩展以包含最大值和最小值。

将ages平分成5个区间并指定labels

r2 = pd.cut(ages, 5, labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"])
print(r2)

输出

[婴儿, 婴儿, 婴儿, 青年, 青年, 婴儿, 中年, 壮年, 壮年, 老年]
Categories (5, object): [婴儿 < 青年 < 中年 < 壮年 < 老年]

给ages指定区间进行分割

r3 = pd.cut(ages, [0,5,20,30,50,100], labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"])
print(r3)
[婴儿, 婴儿, 青年, 壮年, 壮年, 青年, 老年, 老年, 老年, 老年]
Categories (5, object): [婴儿 < 青年 < 中年 < 壮年 < 老年]

这里不再平分ages,而是将ages分为了5个区间(0, 5],(5, 20],(20, 30],(30,50],(50,100].
返回分割后的bins
令retbins=True即可

r4 = pd.cut(ages, [0,5,20,30,50,100], labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"],retbins=True)
print(r4)
([婴儿, 婴儿, 青年, 壮年, 壮年, 青年, 老年, 老年, 老年, 老年]
Categories (5, object): [婴儿 < 青年 < 中年 < 壮年 < 老年], array([  0,   5,  20,  30,  50, 100]))

只返回x中的数据在哪个bin
令labels=False即可

r5 =  pd.cut(ages, [0,5,20,30,50,100], labels=False)
[0 0 1 3 3 1 4 4 4 4]

第一个0表示1在第0个bin中。

pandas.rename 方法

改列表名字

data = pd.DataFrame(ages, columns=['test'])
r6 =  pd.cut(data['test'], [0,5,20,30,50,100], labels=False)
print(r6)
print(r6.rename('s'))
0    0
1    0
2    1
3    3
4    3
5    1
6    4
7    4
8    4
9    4
Name: test, dtype: int64
0    0
1    0
2    1
3    3
4    3
5    1
6    4
7    4
8    4
9    4
Name: s, dtype: int64
<class 'pandas.core.series.Series'>Process finished with exit code 0

参考

https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas.cut.html

[pandas]方法总结相关推荐

  1. 机器学习数据整合+pandas方法astype、merge、drop、to_numeric、concat等

    机器学习数据整合+pandas方法astype.merge.drop.to_numeric.concat等 # 合并两个数据集的数据并进行特征处理 def combine_features(self, ...

  2. pandas数据处理 代码_使用Pandas方法链接提高代码可读性

    pandas数据处理 代码 We have been talking about using the Pandas pipe function to improve code readability. ...

  3. python的pandas方法_python使用Pandas处理数据的方法

    python使用Pandas处理数据的方法 发布时间:2020-06-17 13:50:10 来源:亿速云 阅读:119 作者:鸽子 Pandas是Python中非常常用的数据处理工具,使用起来非常方 ...

  4. 掌握这些 NumPy Pandas 方法,快速提升数据处理效率!

    Pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的.pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.pandas提供了大量能使我们快速 ...

  5. Pandas方法实践-2012美国总统竞选赞助数据分析

    目录 1. 数据载入和总览 1.1 数据载入(pd.read_csv()) 1.2 数据合并(pd.concat()) 1.3 数据预览和基本统计分析 2. 数据清洗 2.1 缺失值处理​ 2.2 数 ...

  6. Python运算符与Pandas方法的映射关系

  7. 收藏 | 提高数据处理效率的 Pandas 函数方法

    作者:俊欣 来源:关于数据分析与可视化 前言 大家好,这里是俊欣,今天和大家来分享几个Pandas方法可以有效地帮助我们在数据分析与数据清洗过程当中提高效率,加快工作的进程,希望大家看了之后会有收获. ...

  8. 还在抱怨pandas运行速度慢?这几个方法会颠覆你的看法

    前言 当大家谈到数据分析时,提及最多的语言就是Python和SQL.Python之所以适合数据分析,是因为它有很多第三方强大的库来协助,pandas就是其中之一.pandas的文档中是这样描述的: & ...

  9. Pandas 基础 (4)—— 汇总和计算描述统计

    Pandas 对象拥有一组常用的数学和统计方法,他们大部分都属于约简和汇总统计,用于从 Series 中提取单个值(如 sum/mean),或者从 DataFrame 的行或列中提取一个 Series ...

最新文章

  1. 金税接口调用实例 java_Java 常见面试题
  2. MongoError: topology was destroyed解决方法
  3. 垂垂老矣,一代人的回忆,Adobe Flash 寿命将尽
  4. php spl的优势,PHP SPL核心库相对以前有什么好处嘛?
  5. 【Flutter】Animation 动画 ( AnimatedWidget 动画使用流程 | 创建动画控制器 | 创建动画 | 创建 AnimatedWidget 动画组件 | 动画运行 )
  6. html5 抽奖程序,真正的网页抽奖-JavaScript HTML5代码
  7. quasar 异步回调_Java IO基准测试:Quasar与异步ForkJoinPool与ManagedBlock
  8. Python测试序列是否所有相邻元素之间都具有升序关系
  9. 中央气象台天气预报api调用
  10. 自动驾驶——SimpleNet的学习笔记
  11. java 字符串和整型的相互转换
  12. js获取url传递参数
  13. android特殊用法(转)
  14. jeecgboot框架简介
  15. 【智能电网】分数阶微积分在决策系统中的应用,通过决策树实现智能电网管理(Matlab代码实现)
  16. ASP版微信分享JS-SDK代码
  17. 阿里云无影云桌面服务关联角色设置及删除方法
  18. open judge 1.6.3
  19. Oulipo(kmp)
  20. 计算机上安装了更新ie版本,XP系统安装不了ie提示“安装了更新的Internet Explorer版本”的原因及解决办法...

热门文章

  1. 解决WIN7有限的访问权限的终极解决方案合集
  2. 继承ListPreference后,去掉右边的图标
  3. 使用 Nginx 提升网站访问速度(转)
  4. 指针的理解 -- java程序员学C语言日记二
  5. GARFIELD@03-26-2005
  6. 企业如何实际使用 Docker
  7. SynchronizationContext(同步上下文)综述
  8. 排序算法理解总结篇——冒泡排序、选择排序、插入排序、希尔排序、归并排序、堆排序、计数排序、基数排序、桶排序
  9. 64位下搭载汇编环境
  10. 【树莓派】树莓派(Debian)- root用户无法使用SSH登录