http://pandas.pydata.org
Pandas是Python第三方库,提供高性能易用数据类型和分析工具。
import pandas as pd
数据类型:Series, DataFrame
基于数据类型的各类操作:基本操作、运算操作、特征类操作、关联类操作
Numpy: 基础数据类型:ndarray; 关注数据的结构表达:维度,数据间的关系
Pandas: 扩展数据类型:Series, DataFrame; 数据的应用表达:数据与索引间的关系
一、Series类型
一个一维的带‘标签’数组
创建
- Python 列表
- 标量值
- Python字典
- ndarray
- 其他函数,range()
import pandas as pd
#标量,不能省略index=
s = pd.Series(25, index=['a','b','c'])
s
Out[295]:
a 25
b 25
c 25
dtype: int64
#字典1
s = pd.Series({'a':8, 'b':7})
s
Out[297]:
a 8
b 7
dtype: int64
#字典2
s2 = pd.Series({'c':8, 'd':7}, index=['a','b','c','d'])
s2
Out[299]:
a NaN
b NaN
c 8.0
d 7.0
dtype: float64
#ndarray
n1 = pd.Series(np.arange(5))
n 1
Out[303]:
0 0
1 1
2 2
3 3
4 4
dtype: int32
n2 =pd.Series(np.arange(5), index=np.arange(9,4,-1))
n2
Out[309]:
9 0
8 1
7 2
6 3
5 4
dtype: int32
操作
.index 输出为index类型
.values 输出为ndarray类型
b[n] 所得为数值
b[m : n]切片所得为series类
b[b > b.median()]
np.exp(b),生成series类
.get() b.get('f', 100),提取索引为f的值,如果不存在则返回100
'*' in b 只会判断自定义索引是否在Series中
对齐操作:Series + Series:自动对齐不同索引的数据
Series对象和索引都可以有一个名字,存在属性.name中,需要自己设置。
Series类型的修改:随时修改并即刻生效
二、DataFrame类型
一个表格型数据类型,梅列值类型可以不同
有行索引、列索引
常用于二维数据,可以表达多维数据
创建:1、ndarray:d = pd.DataFrame(np.arange(10).reshape(2,5))
2、dict:dt = {'one':pd.Series([1,2,3],index=['a','b','c']),
'two':pd.Series([9,8,7, 6],index=['a','b','c','d'])}
d = pd.DataFrame(dt)
pd.DataFrame(dt, index=['b','c','d'],columns=['two', 'three'])
获取:d['columnname']; d.ix['indexname']; d[columnname']['indexname']
操作:
- .reindex(index = None, Column=None, ...)
重排索引:.reindex(index=['','']);重排列:.reindex(colums: ['', '', '', '']
后面的都看官方文档,不写了!
index和column都是一个Index类(不可变),常用方法:
.append(idx) 链接另一个Index对象,产生新的Index对象
.diff(idx) 计算差集,产生新的Index
.intersection(idx) 计算交集
.union(idx) 计算并集
.delete(loc) 删除loc位置处的元素
.insert(loc,e) 在loc位置增加一个元素e
nc = d.columns.delete(2)
ni = d.index.insert(5, 'c0')
nd = d.reindex(index=ni, columns=nc, method='ffill')
运算:
算数运算:根据行列索引,补齐(NaN)后运算,默认产生浮点数。
.add(d, **argws) +
.sub(d, **argws) -
.mul(d, **argws) *
.div(d, **argws) /
不同维度运算采用广博运算,二维一维,默认轴1参与运算,可指定axis=0
比较运算:同维度,要求尺寸相同;不同维度,广播运算
一、数据的排序
.sort_index(axis=0, ascending=True) 指定轴 根据索引排序 默认升序
.sort_value(by, axis=0, ascending=True) 指定轴 根据数值排序 默认升序
Series.sort_value(axis=0, ascending=True ) by指定排序的行或列
NaN统一放在末尾
二、基本数据统计分析函数
.sum(); .count(); .mean() .median(); .var()方差 .std(); .min() .max()
只适用于Series类型:
.argmin() .argmax() 对应位置自动索引; .idxmin() .idxmax()对应位置的自定义索引
.describe() 针对0轴每一列,统计汇总
三、累计统计分析函数
.cumsum(); .cumprod(); .cummax(); .cummin() 按列算
滚动计算(窗口计算)函数,计算相邻w个元素
.rolling(w).sum(); .rolling(w).mean(); rolling(w).var(); rolling(w).std(); rolling(w).min() .max()
四、数据的相关分析
度量相关性:1、协方差cov(X,Y)
2、Pearson相关系数r:[-1,1]; |r|:0.8-1.0极强相关;0.6-0.8强相关;0.4-0.6中等程度相关;0.2-0.4弱相关;0.0-0.2极弱相关或不相关。
.cov() 计算 协方差矩阵
.corr() 计算相关系数矩阵,Pearson、Searman、Kendall等系数