numpy 全书总结宝典
 
 
第3章
 
 
1.tab的用法
 
 
B等于一个序列,b.table 即可得到其所有属性。
 
 
2.?的使用
 
 
B等于一个序列或者一个函数,b?既可以得到其所有的相关信息。
 
 
3.?? 的使用
 
 
能够调出b函数的全部原始代码
 
 
4.一些快捷键
 
 
Ctrl+C复制    ctrl+a 将光标移到行首     ctrl+e  将光标移到末尾 ctrl+k删除从光标到行尾的所有内容    ctrl+f将光标向前移动一格   ctrl+b将光标向后移动一格  ctrl+l清屏。
 
 
5.常用的magic命令
 
 
%run script.py 执行一个python脚本
 
 
%time statement 报告statement的运作时间
 
 
%timeit statement 报告statement 多次执行的平均时间 
 
 
4. if __name__==’__main__’:
 
 
直接执行程序,而非模块的导入
 
 
 
 
 
 
 
 
第4 章
 
 
1. import nuumpy as np 
2. ndarry 的方法有:
array   其次为np.zeros   np.ones   np.arange(int):类似于内置的range用法,但返回的是一个ndarray,而非一个列表      np.random.randn(int 或者是一个shape),   np.arange(int).reshape(shape  可以为二维,也可以为三维的).    注:整型有8,16,32,64位,浮点型为16,32,64,128位,复数为最大256位3. 2中提到的一些np属性,还有一个eye/identity属性,用于生成一个对角矩阵。(np.eye(N,N)==np.identity(N))。
4.  广播的概念要了解,即为数组的矢量运算
5. :切片,常规切片,和对多层切片[][],还有与布尔连用:书上92页,data[name==’bob’](其中data为一个数组,里边的判断输出布尔型,由此输出True 对应的行。    判断式子可以多个并列,利如书上94页,mask=(name==’bob’)竖杠(name==’tom’)
6. (表示对应的行的index)或者是一对(表示对应的行
7. index)作为参数,例如data[[……],[……]],另外一种方法为data[np.ix_([……],[……])],    花式索引跟切片所以不同,直接将数据复制到新的数组中
8.      data.T     np.dot(data,data.T)    transpose 的用法:  如果其后没有跟参数,其实质与T无区别,如果带参数,一般为三个,transpose((…,…,…)),其三个参数分别表示三个维度,一般三个维度的编号为0,1,2 如果有变化,则是将对应的行或者列进行互换(书上97页)
9. np 的数组运算函数(通用函数):形式为np.abs(data),其中data为数组
abs   每个元素取绝对值
sqrt   每个元素取平均值
square  每个元素取平方
exp      e的每个元素次方
log log2 log10log1p   分别表示底数为e,2,10,(1+x)
sign  各个元素的正负号,正数为1,负数为负一,零为零
sin cos tan 余弦值
ceil 大于等于该值的最小整数
floor 小于等于该值的最大整数
rint 将各个元素四舍五入到最接近于其自身的整数
modf 将小数和整数部分以独立的数组形式返回
isnan 返回布尔型
isinf isfinite 返回布尔型,有限和无限
arc   反三角函数
 
np.func(参数1,参数2)
add 两个数组对应元素相加
subtract 从第一个数组中减去第二个数组元素
multiply  两个数组相乘
divid 除法
power 数组1的元素为A ,数组2的元素为B ,为A 的B次方
maximum 元素的最大级别运算
minmum 元素最小级别运算10. np.where 的使用   
np.where(…,…,…),参数一为数组满足的条件,比如数组data>0 等,第二个参数为满足该条件时要取得值,第三个参数为不满足条件时,要取得值。
 11. cumsum()和cumprod()的使用
axis,如果不带参数,则会返回一个一维数组,内容为后者加前者的数列
Axis=0 则在行方向上累加(积),axis=1,则在列方向上累加(积)。
 常见的一些数据统计的方法:
Sum (全部数据的总和,或者某一个轴向上数据的总和,指定axis),mean为算术平均值    std/var标准差和方差      min和max为最小值和最大值   argmax argmin 最大值和最小值的索引  cumsum cumprod
 线性代数
,用dot, x.dot(y)表示两个数组进行线性乘法。
 12. np.randomde 的几个重要函数
permutation :返回一个序列的随机排列  data=np.array([5,4,2,1]),np.random.permutation(data)
np.random.randn:参数可以为int 也可以为dtype 以给定的形态返回一个数组,满足标准正态分布(0,1)
np.random.randint(low,high=None,size=None,dtype),生成一个前闭后开的离散分布的整数型,low必须给出,若high未给出,则取值区间变为[0,low
np.random.rand(),产生[0,1]之间的均匀分布的随机样本
np.random_integers(low,high,size=int,dytype),返回的是[low,high],之间的均匀分布的整数型,如果high=None,则取值范围变为了[1,low]
np.random.shuffle 返回一个打乱的数组
np.random.choice(a,size=None,replace=True.p=None)若a为数组,则从中选取数组,若a为int 则从range(a)中选取数,replace 默认为True,代表选定的数字可以重复,p为选定数字的概率。
 
 
5章 pandas 
1. series可以生成一个有索引的数组,比如object=Series([……]),object 可以通过values属性和index 属性来进行查看对应的数组值和相应的索引。
 
2. Series=([……],index=[……]),可以通过index来进行相关的索引指定。
3.object为一个Series,可以通过object[……]来进行索引,中括号里的内容可以为一个判断句。
4.pd.isnull(object),pd.notnull(object),可用于判断是否有空值,输出的为布尔类型。
5.object 为一个Series,可以通过object.index.name来进行对单层索引的命名
6.dic 为一个字典类型,可以通过Seeries(dic),实现对其的转换
7.DataFrrame({…:[……],…:[……]}其本质为JSON类型
8.DataFrame 可以通过Columns,index来对其数据进行行命名和列命名
9.index的类型,包括广泛的Index,Int64Index,MultiIndex,DatetimeIndex,PeriodIndex
10.index 的属性:append(连接另外一个Index,产生一个新的Index),diff(Index的差集),intersection(交集),union(合集),delete(删除索引i处的数据,并得到一个新索引),drop(删除传入的值,并得到新索引),insert(将元素插入到索引i处,并得到新索引),is_monotonic(当各元素均大于等于前一个元素时,返回True),is_unique(当Index没有重复时,返回True),unique(计算unique中的唯一数组).
11. 如何对索引进行修改:  返回一个索引改变后的Series,或者DataFrame 
Nan值可以用fill_value,也可以用reindex的method 参数,可以为ffill,bfill
ix[[……],[……]],前一个为行索引,后一个为columns 索引,可以一次性的对DataFrame 进行index  和columns的同时修改
 Reindex的参数(要变换的index,method,fill_value,limit(可以向前或者向后填充的最大填充量))13. drop([……]),中括号内的为行或者列索引名字。
14. 
DataFrame的索引方法有ix[[……],[……]],来指定index 和columns,其次用xs如上可以得到一个Series,data.get_value(‘2’,’two’)可以锁定数据5,data.set_value(‘2’,’two’,’6’),可以返回上述的DataFrame,5变为6
1. DataFrame 和Series 两者可进行计算,这种运算统称为广播
2. Lambda 结合apply 运用到DataFrame中,如下图所示,类似于后续的聚合应用(groupby)
3. sort_index.
DataFrame,其行索引为(‘one’,’three’),列索引为(’a’,’b’,’c’,d’)那么data.sort_index(),默认为为行索引排序,为one ,three。Data.sort_index(axis=1),则为列索引排序,为(’a’,’b’,’c’,’d’),默认都为有小到大排序,如果想要由大到小排序则为(参数ascending=False),sort_index 自身是对索引进行排序,但是如果加上sort_index(by=’’)引号内为索引名,则是对相应的索引里的值进行有小到大排序,2而索引也跟排序后的数值相对应的发生变动,其实质变成了对值进行排序

18. Series 的数值如何进行由小到大的排列?用order()
19.常见的DataFrame 的数据计算函数,data=DataFrame() data.count().非Nan的值数量,describe(),各种汇总函数的汇总  min()。max(),argmax(),argmin().最小值和最大值的索引的位置(整数),idxmax(),idxmin(),计算最大值和最小值的索引值,sum(),mean(),median() 中位数,mad()绝对偏差,var方差,std 标准差,cumsum().cumprod()等
20.DataFrame 和Series的unique(),value_counts()的使用方法在书146页查看
21.对于缺失值得处理:一方面可以滤掉,data=Series,DataFrame ,data,dropna(how=’all’),默认参数,也可以为any 
fillna,data.fillna(value,method,axis,limit,inplace).其中value为填充个Nan的值,method为填充方法可以为ffill,bfill,axis默认为0,当用bfill或者ffill时,limit为限制填充的最大行或者列。Inplace为修改调用者对象而不产生副本,如果其为False,则产生了副本,会直接输出结果,如果为True ,则必须调用修改对像,才能输出结果
22.  层次索引:



23.层次索引的变化(即如何将外索引变为内索引,内索引变为外索引)
swaplevel(’……’,’……’)参数分别为外层索引和内层索引
sortlevel是根据参数(参数可以是外层索引,也可以是内层索引),对索引进行一个排序,假设参数为外层索引,那么就对外层索引进行一个怕排序,当然排序为由小到大,其对应的内层索引也要发生相应的顺序变化。详见书156页。
6 章 
 
1. Pandas 中读取文件的方式  读取文件,文件中的内容被逗号隔开,并且第一行的内容为引用字段,或者称为列索引)    read_table (读取文件,文件内容被、\t隔开)  read_fwf(读取定宽的数据,即没有分隔符)   read_clipboard(读取剪贴板上的内容)
2. data=pd.read_csv(文件的绝对路径)读出文件数据格式为DaataFrame 类型,即以第一行的内容为列索引名,行索引则自动生成(0,1,2),注:也可以用read_table 读取一个csv文件,不过要在参数里著名sep=’,’,即分隔符(separator)为逗号
3. csv文件的第一行内容默认为数据的列命,但是也可以不用第一行作为列命,就在路径后面加一个参数header=None,则列名就会变为(X1,X2……),也可以在路径的后面加上names=[……],来重新定义列名
4. index_col=

1. index_col进行层次化索引(详见书上的164页)
2. Pd.read_csv/pd.read_table 的一些参数   除了上述的path,sep,names,index_col,之外,skiprows=[…,…,…]可以跳过一些文件中不符合格式的,或者不想读的行,而读出中括号内的指定的行,na_valus,用于标记nan,可以用NULL,NA,或者-1.#IND标记 comment后输入的为一个字符串(例如#),如果该字符串出现在行首,则跳过该字符串,直接以下一行为列索引名,如果出现在末尾,或者中间行,则直接跳过该行,输出下一行。Converts 由列号/列名  跟函数之间的映射关系组成的字典,比如{‘foo’:f},会对foo列的所有值实行f     nrows 为读取的行数,从文件开始处算起,如果nrows=0,则输出““     skip_footer, 需要忽略的步数,从文件的末尾处算起,如果skip_footer=2,且文件只有两行,那么与nrows=0输出的结果一样。
3. to_csv 可以将数据写入到一个指定的csv文件当中去,比如data为一个DataFrame,那么data.to_csv则会以read_csv的反渠道将data编写进文件中。
4. To_csv 后面的参数有sep 可用与指定分隔符,不局限于’,’  写入文件中的数据可能含有缺失值,可以用类似的na_rep=’NULL’,将其标记出来
5. (index),列(header)的标签,但是将这两个参数设定为False 则会被禁用
6. index(行),cols(列)指定要写入的内容。
7. json文件  import json   f=json.load(object),同样的,可以用josn.dumps(object),将一个python 对象转化为一个json
 
 
 7 章 
1.   用 merge来进行合并,其特点有如下几点:
DataFrame({‘key’:[‘b’,’b’,’a’,’c’,’a’,’a’,’b’]}
DataFrame({‘key’:[‘a’,’b’,’a’]})第一个里面有多个a,b,c,第二个里面只有一个a,b,c   3*1=3 故有3个a,3个b   一般情况下,是根据相同的键,将两组数据取交集,但也可以通过how函数来进行指定。  没有指定那个列时,merge会将重叠列的列名当作键,也可以用on(只有一个键名)或者left_on,right_on(多个键名)进行排序a的个数,b的个数为两个中的个数的乘积

merge的函数总结  首先how ,可以为inner(两者根据重叠的列进行取交集,为默认),也可以为outer ,取并集两者中不同的数据都会显示,也可以为left,除了交集以外,还会显示所有左侧的数据,同理right除了交集以外,还会显示右侧的所有
on 指定数据的键,如果未指定,则会默认用重叠的键
left_on,right_on用作左侧的连接键和右侧的连接键
sort   根据连接键对合并后的数据进行排序,默认为True
left_index,right_index,将行索引用做连接键,两者必须一起出现,否则报错,默认都为False

Df1df2 都为上述的DataFrame
Suffixes用于追加重叠列名的末尾,默认为(_x,_y),例如上面的key_x,key_y,可以指定为其他,比如_1,_2等
1. DataFrame 的列中比如key:’a’,’b’,’a’等。而另一个在index=[‘a’,’b’].,这时候就要传入left_index,right_idex=True    而对于层次化索引,就麻烦,需要以列表的形式指定用作合并的键,例如用left_on,或者right_on=[……,……],详见书上的192页   对于行索引,还有一个方法就死用join,(比较简便,但注意,其只能用于行索引等价于merge(left_index=True,right_index=True)  其形式为data.join(data1,how=),其how默认为left,可以通过right,outer,inner来改变。  其还有参数on ,用法仍为指定键的作用

1. np.concatenate
pd.concat,它首先可以将不同索引的数据连接起来
、
Pd.concat 的join参数设置为inner,加上axis=1,则会取出交集


keys函数制造层次化索引

Concat的一些参数:
Object 参与对接的对象
Axis   指明连接的轴向,默认为axis=0
Join  可以为inner 也可以为outer,默认为outer
Keys 可以指定用于制作层次索引
Ignore_index 当行索引没有实际的意义时,可以将其设定为True ,那么系统会自己将行索引排序,顺序是整合后的顺序


1. DataFrame 或者一个Serie里面有缺失数据,想要用另外一个里面的数据填充到里面,可以data.combine_first(data1),  前提是data和data1的结构形式必须一样。
2. ataFrame 用stack和Unstack行旋转。为了实现真正的索引,必须将单层索引先转化为双层索引,然后再用unstack(0),或者unstack(行索引名),进行数据的旋转(行变为列,列变为行
stack()变为双层索引,另外一种方法是用pd.concat([d1,d2],keys=[……])来制造双层索引。具体看下面的例子
unstack(行名),没有实现数据的行列变化

unstack(0)也不行

stack()转化为双层索引后再用unstack()可以实现数据的行列转化

1. pivot(行索引的名字,列索引的名字)用于将纵向很长的(有重复)DataFrame 转化为横向的,视觉上看上去会短,详见P203页
2. |drop_duplicated(),有时候列中有很多重复的数据,例如下面:
duplicated(),没有参数默认以(k1,k2)为单位进行比较,用于表示各行是否重复,返回boolean 型。

drop_duolicates用于返回一个移除重复行的新的dateFrame

drop_duplicates([k1])

dupicated,drop_duplicates,可以设定take_last=True来保留最后一个。
1. DataFrame中加入映射关系,书中的例子是列名分别为食物,价格组成的DataFrame,想要在这个里面加入列名食物的来自于的动物,假设给出了一个字典dic,里面键为食物名和值为食物对应的动物的映射,假设定的加入的新名为‘’animal’,那么用data[‘animal’]=data[‘food’].map[str.lower].map[dic],然后输出data,即可以得到一个全新的DataFrame 
2. nan的方法为fill_value,fillna(method=ffillor bfill),也可以用data.replace(要替换的值,np.nan),即用后者替换前者,也可以一次性替换多个data.replace([替换值1,替换值2],[np.nan,0]),也可以用字典的形式data.replace(替换值1:np.nan,替换值2:0)
3. cats=pd.cut(数据1,区域)
 注意输出的是每个数据属于的区域

labels可以用阿拉伯数字(0,1,2,3,4……)对数据所属的不同区域进行划分
Levels可以显示不同的区域功能类似于pd.cuts(data,bins)
Pd.value_counts(cats)可以用于输出落在某一个范围内的数据的个数

right=False,来进行改变,pd.cut(data,bins,right=False)来进行
Labels默认为用阿拉伯数字进行标记,也可以设定为其他  pd.cut(data,bins,labels=[…,…,…])
cut 输入的不是具体的边界,而是划分的个数,例如pd.cut(data,4),则系统会根据数据的最大值和最小值自动划分为输入的区域个数
   Cut可能无法使各个面元中含有相同数量的数据点,而qcut则可以。 
1. permutation 来生成一组数,作为索引,对对应的Series 或者DataFrame 进行相关的排序,形式为data.take()
DataFrame 全部排序,可以选择用切片

permutation产生的数代表的为索引,其实,不一定要用permutation,用np.random中的其他属性也可以完成,并且产生的个数不一定一定等于要重新排序的数据个数,例如下面的例子,数据个数为5个,产生的索引个数为10个

sample产生的数字表示data的数据索引
8章(绘图)
1.首先要输入模块import matplotlib.pyplot as plt
matplotlib的图都是在figure 里面的,因此必须创建一个figure,如下,会打开一个空窗口

figure来画图,必须创建subplot
Axs=fig.add_subplot(参数1,参数2,参数3),意思是会生成参数3个参数1*参数2的窗口,我们可以在subplot里画图 
plt.subplots,一次性实现创建figure,和subplot。Plt.subplots(2,3),可以生成6个subplots

Plt.subplots()的一些参数,如上第一个为subplots的行数,第二个为对应的参数,sharex,sharey 为False ,表示横坐标和纵坐标坐标轴都是一样的,一般不设定为True,**fig_kw,为figure的其他参数,比如上面的figsize
plt.subplots_adjust(left=None,bottom=None,top=None,wspace=None,hspace=None)可以去掉间距
plt.plot属性也可以一次性的构建图像,plt.plot(参数为一个np,array)可直接输出一个图片(实质为一个subplot)

plt有属性例如xlim(ylim)返回对应轴的范围,xticks(yticks)返回对应的刻度。Xticklabels(yticklabels)返回对应的标签
ax=plt.plot(参数),可以用ax.set_xlabel(‘zifuchuan’)来设定x轴的标题,ax,set_title(‘’),来设计整个画的标题。
Ax.set_xticklabels([]),来设计每个刻度的标题,可以用rotatinotallow=数字比如30来设定角度,用fontsize来设定字体大小。
2. 画图型,第一步:fig=plt.figure(),第二步:ax=fig.add_subplot(1,1,1)
Rect=plt.rectangle()(矩形,需要指定左下角的点的坐标,长和宽,用圆括号将左下角点的坐标括起来)
Cir=plt.circle()(指定圆心,半径,用圆括号将圆心坐标括起来)
Pnotallow=plt.polygon()(多边形,以三角型为例,需要指定三个点的坐标,用中括号括起来)
Ax,add_patch(rect)
Ax.add_circle(cir)
Ax,add_polygon(pon)
3. Series 和DataFrame 来制作图片,series.plot(),DataFrae.plot()

 可以看得出,其横向索引为其横坐标的刻度。

label注释
4.series/dataframe.plot的一些方法参数:lable图例的标签,为上图小方框的标签   style 用于设定线性风格(‘ko—‘),alpha 透明度。0-之间    kind 绘制图形的种类(line 线形,bar 柱形,barh 横向柱形,hist直方图   box 盒图  kde 核密度估计图,density  密度图,,area 面积图,pie饼图   logy/logx 在Y轴上或者X轴上使用对数刻度  use_index 将对象的索引用作刻度标签,比如上边的例子,行索引为x轴刻度     rot 为旋转刻度标签,等于一个整型,xticks/yticks 等于一个列表,指定刻度   xlim/ylim 显示界限,grid显示轴网格线,默认不打开。。。。  
Ax参数的使用,详见下面的例子,其实质是将数据分配给不同的subplot


DataFrame 还有一些属性,subplots  默认为False,表示是否将各列传入到单个的subplot 

sharex,sharey,

Figsize=None可以改变图像的大小   title可以为图像加入一个标题

kind=‘hist’展示
9章 数据的拆分整合应用

1.
df[data1].groupby([‘key1’]).mean(),上述这个是用一个series作为分组键,实际上任何长度的适当数组都可以,例如用7,8,9,10,11、

df[data1].groupby([‘key1’,’key2’]).mean(),则表示一个外索引,一个内索引
2.对分组进行迭代

I起始表示的是索引,j 表示为df 整体,类似于enumerate

 如果是双层索引,则用上面的格式
3. df['data1'].groupby(['key1])===df.groupby(['key1'])['data1']
 这两种书写的方式都可以,一个分组在前,一个分组在后
4.除了可以用series,数组进行分组,还可以用字典进行分组,指定axis=0,得出来的就是列的个数发生变化,axis=0行变化,axis=1列变化

series,效果是一样的

groupby,通过函数作为分组键

 利用索引名进行分组


5.数据的应用(聚合)
sum ,count,mean.descirbe 等都是一些聚合方法,也可以用agg加入自己用程序写的方法agg(函数名)
count非NA值得数量   sum非na值得和
Mean 非na值的平均值  median 非na 值的算术中位数,std/var标准差,方差   min/max    prod 非na  值的积    first/last  第一个和最后一个的非na值   
6. 面向列的函数应用
agg([方法1,方法2]),如果掺入传入的是一个由(name,function)元组组成的列表,则各元祖的第一个元素就会被用作DataFrame的列名,格式为agg([(列名,方法),(列名,方法)])也可以用agg(dic),字典的键对应元组中的列名,值对应的是元组中的方法。
7.无索引的形式返回聚合数据
groupby传入参数as_index=False来进行删除索引的功能,两者的区别如下:

8.transform的理解,如下例子,相当于先进行people.groupby(key).mean(),然后将该值在分配给key 对应的人名。


8.用agg/apply 去进行填充NAN 值

9.一个重要的例子:
 黑桃,红桃,梅花,方片

 输出结果

n张,n不定

(1)permutation 和shuffle 

(2)take里面的结果实际上是一个打乱的数组取前n个,充当S的索引参数
 进行拆分合并和应用
apply 和agg的区别,agg为什么会报错?用agg时定义的函数一般只有一个参数,即要合并应用的数组本身

10.透视表和交叉表
groupby可以用指定的键进行分组,但groupby  并不能将指定的键特定为行索引或者列索引   而透视表和交叉表可以完成这一要求
data.pivot_table([…],rows=[……],cols=[……])
valued属性),第二个为要做为行索引data中的键名,可以为多个,若为多个,则会形成层次索引,(现在的版本中用index替代rows),第三个中括号内的为data内的作为列索引的键名
value,index,cols,aggfunc  接参数自定义函数名或者len sum count mean 等应用算法,   fill_value 填充nan 值,margins 添加行/列小计和总计,默认为False)
Crosstab  data.crosstab([……],[……])
data的键的列名,第二个为列索引参数,其为data的键的列名,其与透视表的区别在于没有index 和cols 
10章
 
1. now=datetime.now()属性,输出的时间为年,月,日,时,分,秒,毫秒
2. datetime(年,月,日,时,分,秒)可以不全有  减去   datetime(年, 月,时,分,秒)   timedelta用于表示两个datetime对象之间的时间差  
  from datetime importtimedelta 
datetime(年,月,时,分,秒)+timedelta(int  参数),默认为天
3.datetime的几个属性,有date,无参数,即datetime.date,表示年月日,类似的time,datetime.time,无参数,表示时,分,秒,毫秒。
datetime 和timedelta
4.重点:   datetimede 的格式定义
%Y4位数的年    %y 2位数的年   %m 两位数的月[01,12],%d 两位数的日[01,31]  %H 24小时制(00-24),%I12小时制(01-12), %M 2位数的分
%S两位数的秒,  %w用整数表示的星期几,(0,6),零表示星期天
%U每年的第几周(0,53),星期天被认为是每周的第一天,每年第一个星期天之前的那几天被认为是第零周
%W每年的第几周(0,53),星期一被认为是每周的第一天,每年第一个星期天之前的那几天被认为是第零周

%F %Y-%m%d的简写形式   2012-4-18
%D %m/%d/%y的简写形式    04/18/12


5.如何将一个时间转化为字符串   有两种方式,如下:str直接转,形式默认。另一种为用strftime(指定格式化形式)
6.如何将字符串进行转化为datetime 

datetime.strptime(字符串数据,与字符串数据相匹配的格式字符串)
from dateutil.parser import parse
Parse(要转化的数据字符串)
7. 如何构造时间索引的时间序列

data=pd.DatetimeIndex([‘1/1/2000’,…………….])s=Series(数据,index=data)
 其索引方式与之前的索引方式相同
8.索引方式:
 如果生成的序列过长,且有不同的年份,可以通过年份就可以截取同一年份的片段


 直接根据索引值进行切片

 根据时间字符串进行切片

Datetime一样有效
9.日期范围的生成,一般可以用于索引,例如:pd.index_range(), 参数start=’’,为开始日期,end=’’,为结束日期,两者只能传入一个,还有periods=int 传入生成的个数   有时希望生成一组被规范化的午夜时间戳(时间为00:00:00),就需要加一个参数normalize=True
 以及参数freq,  
10.时间序列的基础频率  即freq可以等于什么?
D 频率为1天  B   只加工作日,跳开周六周末    H  小时    分钟   S  秒数  U 毫秒   M 每月最后一个日历日    BM 每月最后一个工作日,MS每月第一个日历日,BMS每月第一个工作日
 W-MON等 指定的星期几(MON,TUEWED,THU,FRI,SAT,SUN)    WOM-1MON等  每月第一第二第三第四第五的星期几    Q-JAN等指定季度月份(JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NO,DEC) 对应的为BQ-AN等  A-JAN等  每年指定月
 举个例子如何获得每月的第三个星期天的时间戳

11,对时间戳或者数据用shift进行移位
freq=’M‘,表示每月的最后一天

shift里只有一个整型的参数,那么时间戳不动,数据向下(大于零的整型),数据向上(小于零的整型),移动

freq,那么数据不动,原有的时间戳+整数*freq, 如下这个例子就是加2d

 12.关于时期,period的运算
p=pd.period(数据,freq=)构造一个时间段
pd.date_range(开始数据,末端数据,freq=)来构建pd.period_range(开始数据,末端数据,freq=)作为数组的索引
pd.DateIndex也有pd.PeriodIndex

 
1.  时间点(时间戳)和时间段两者如何进行互换
to_period(),参数默认为’M’,为每一个月的最后一个工作日
 To_timestamp(),因为为时间戳,因此需要具体到哪一天,参数为how=’start’,或者how=‘end’下面为一个例子:
To_timestamp()参数how默认为start
1. shift,更为规范的为resample,它不仅可以用于频率的变化,还可以同时用how属性,将数据进行规整
Resample的一些方法:
  Freq=用于存放要变化后的频率类型   how=规整数据的方法,比如’meamn,,‘first’,‘last’, ‘max’,’min’等
Axis=用于存放轴向    用于存放填充个NAN值得方法
Closed=’right’,在降采样的过程中,各时间段的哪一段是闭合的,‘right’或者‘left’默认为 ‘right’,用于管理数据的区间封闭  注意与label区分
Limit=向前或者向后填充的允许填充的最大行数
Kind= 变换完频率后的时间序列类型,可以为‘period’  或者‘timestamp’,可以不给出
Label=’right’  默认,用于管理时间序列的区间封闭问题
Loffset=None,可以等于-1s,-2s,10s等
limit,fill_method,用的比较多,而降采样时,实质为timestamp变为period,因此closed  和label用的比较多)看下面的例子
 首先构建一个时间序列索引数组 将其进行降序:


closed=left,由于其是管理数据区间的,所以书记会发生变化

label  是用于管理索引的

Loffset  可以以秒或者毫秒的形式改变时间戳   下面的例子都加了1s

12 章