10 有序数据
10.1序的建立
有序类别:as_unordered()
无序类别:reorder_categories()
通过cat对象调用
可以通过sort_values(),sort_index()排序
10.2区间类别
cut()函数构造
参数:bin传入整数n时,按照最大和最小值等距分为n段
默认为左开右闭
另外常用的方法,传入分割点的列表
pd.cut(s,bins=[-np.infty,1.2,1.8,2.2,np.infty]
#另外两个常用参数为labels和retbins
#分别代表了区间的名字和是否返回分割点
qcut()函数构造
q参数,传入为正整数时按照分位数n等分
10.3一般区间的构造
区间的开闭状态:right,left,both,neither
区间的属性:mid,length,right,left,closed
overlaps判断两个区间是否有交集
pd.IntervalIndex
生成方法:from_breaks,from_arrays,from_tuples,interval_range
10.4区间的属性和方法
left,right,mid,length
contains()是否包含某元素
overlaps()是否有交集
11 时序
11.1时序对象
时间戳 Timestamp
时间差 Timedeltas
时间偏置 DateOffset
11.2时间戳
单个时间戳利用pd.Timestamp()实现
属性:year,month,day,hour,min,second
11.3 Datatime时间序列的生成
利用to_datetime和date_range来生成
data_range()
重要参数为:
start,end,freq,periods
11.4 dt对象
常用属性:
month_name,day_name返回英文的月名和星期名方法不是属性
11.5 时间戳的切片与索引
#利用dt对象与布尔条件
s=pd.Series(np.random.randint(2,size=366),
index=pd.date_range("2020-01-01","2020-12-31"))
idx=pd.Series(s.index)
#每月的最后一天与第一天
s[(idx.is_month_start|idx.is_month_end)].head()
#双休日
s[idx.dayofweek.isin[5,6].values].head()
11.6时间差
生成:pd.to_timedelta
序列生成:timedelat_range
支持的运算:与标量的乘法运算、与时间戳的加减法运算、与时间差的加减法运算
11.7日期偏置
11.8时序滑窗与重采样
所谓时序的滑窗函数,即把滑动窗口用 freq 关键词代替
重采样
在 resample 中要特别注意组边界值的处理情况,默认情况下起始值的计算方法是从最小值时间戳对应日期
的午夜 00:00:00 开始增加 freq ,直到不超过该最小时间戳的最大时间戳,由此对应的时间戳为起始值,然后每次累加 freq 参数作为分割结点进行分组,区间情况为左闭右开。
整理自:https://github.com/datawhalechina/joyful-pandas