[pandas]方法总结
[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]方法总结相关推荐
- 机器学习数据整合+pandas方法astype、merge、drop、to_numeric、concat等
机器学习数据整合+pandas方法astype.merge.drop.to_numeric.concat等 # 合并两个数据集的数据并进行特征处理 def combine_features(self, ...
- pandas数据处理 代码_使用Pandas方法链接提高代码可读性
pandas数据处理 代码 We have been talking about using the Pandas pipe function to improve code readability. ...
- python的pandas方法_python使用Pandas处理数据的方法
python使用Pandas处理数据的方法 发布时间:2020-06-17 13:50:10 来源:亿速云 阅读:119 作者:鸽子 Pandas是Python中非常常用的数据处理工具,使用起来非常方 ...
- 掌握这些 NumPy Pandas 方法,快速提升数据处理效率!
Pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的.pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.pandas提供了大量能使我们快速 ...
- Pandas方法实践-2012美国总统竞选赞助数据分析
目录 1. 数据载入和总览 1.1 数据载入(pd.read_csv()) 1.2 数据合并(pd.concat()) 1.3 数据预览和基本统计分析 2. 数据清洗 2.1 缺失值处理 2.2 数 ...
- Python运算符与Pandas方法的映射关系
- 收藏 | 提高数据处理效率的 Pandas 函数方法
作者:俊欣 来源:关于数据分析与可视化 前言 大家好,这里是俊欣,今天和大家来分享几个Pandas方法可以有效地帮助我们在数据分析与数据清洗过程当中提高效率,加快工作的进程,希望大家看了之后会有收获. ...
- 还在抱怨pandas运行速度慢?这几个方法会颠覆你的看法
前言 当大家谈到数据分析时,提及最多的语言就是Python和SQL.Python之所以适合数据分析,是因为它有很多第三方强大的库来协助,pandas就是其中之一.pandas的文档中是这样描述的: & ...
- Pandas 基础 (4)—— 汇总和计算描述统计
Pandas 对象拥有一组常用的数学和统计方法,他们大部分都属于约简和汇总统计,用于从 Series 中提取单个值(如 sum/mean),或者从 DataFrame 的行或列中提取一个 Series ...
最新文章
- 金税接口调用实例 java_Java 常见面试题
- MongoError: topology was destroyed解决方法
- 垂垂老矣,一代人的回忆,Adobe Flash 寿命将尽
- php spl的优势,PHP SPL核心库相对以前有什么好处嘛?
- 【Flutter】Animation 动画 ( AnimatedWidget 动画使用流程 | 创建动画控制器 | 创建动画 | 创建 AnimatedWidget 动画组件 | 动画运行 )
- html5 抽奖程序,真正的网页抽奖-JavaScript HTML5代码
- quasar 异步回调_Java IO基准测试:Quasar与异步ForkJoinPool与ManagedBlock
- Python测试序列是否所有相邻元素之间都具有升序关系
- 中央气象台天气预报api调用
- 自动驾驶——SimpleNet的学习笔记
- java 字符串和整型的相互转换
- js获取url传递参数
- android特殊用法(转)
- jeecgboot框架简介
- 【智能电网】分数阶微积分在决策系统中的应用,通过决策树实现智能电网管理(Matlab代码实现)
- ASP版微信分享JS-SDK代码
- 阿里云无影云桌面服务关联角色设置及删除方法
- open judge 1.6.3
- Oulipo(kmp)
- 计算机上安装了更新ie版本,XP系统安装不了ie提示“安装了更新的Internet Explorer版本”的原因及解决办法...