数据结构
Series
一维数组,定长的有序字典Series()
-
属性:
obj.valueobj.index(可设置索引)
obj.name,obj.index.name(可设置),obj.rename,DataFrame的index -
索引:可选取单个或一组:
obj['1'],obj.[[a,2,3]] 自动对其不同索引的数据
-
函数:适用NumPy数组运算和部分字典函数:
obj*2,a in obj 可直接根据字典创建Series,索引既键
检查缺失数据:
pd.isnull(obj),obj.notnull()
DataFrame
二维表格型,series组成的字典;每列可不同数据类型,有行索引+列索引
-
传入等长列表,字典,可columns,index参数指定。
NumPy组成的字典。
嵌套字典:外侧作为列,内层行。转
frame.T 属性:
frame.index.name,frame.column.name,frame.values
Index
index对象是不可修改的!
主要index对象:Index, Int64Index, MultiIndex, DatetimeIndex, PeriodIndex
| 方法,属性 | 说明 |
|---|---|
| append | 连接一个index,产生新index |
| diff | 差集 |
| intersection | 交集 |
| union | 并集 |
| isin | 是否包含 |
| delete | 删除索引处元素,新index |
| drop | 删除传入值,新index |
| insert | 插入 |
| is_monotonic | 各元素均>=前一个,True |
| is_unique | 无重复True |
| unique | 唯一值的数组 |
基本功能
-
重新索引:
obj.reindex()重排引入缺失值 DataFrame: 传入一个修改index,
frame.reindex(columns= )。
frame.ix[['a','b','c'],states] 参数:index,method填充方式,fil_value缺失值,
limit最大填充量,level简单索引,copy相等时是否复制
method:
ffill,pad向前填充;bfill, backfill向后填充 丢弃:
obj.drop['a', 'b', 'c'],axis=1列索引-
索引:标签切片包含末端:
obj['a':'c']过滤:
obj[obj<2],obj[[1, 3]]标签索引ix:
obj.ix['a'],obj.ix['a', ['1', '2']] 附:xs:标签选取单行或单列
icol,irow:整数位置选取单行单列
get_value,set_value:标签选取单个值(选,设)
-
算术运算:
索引对齐运算:
s1+s2,df1+df2 填充:
df1.add(df2, fill_value=0),add, sub, mul, div 广播:df与series,每行都与series运算,同上
-
函数:
ufuncs元素级函数也可:min,max,abs等。
应用函数:series用map,dataframe用applymap。
format = lambda x: '%.2f' %x frame.applymap(format) -
排序
index:
obj.sort_index(),参数:axis=1,ascending=False dataframe某列排序:sort_index 参数:by=‘index_0’,by=[]
value:
series.order()obj.rank(),给出排名 method:'average', 'min', 'max', 'first'
ascending=False
带有重复值的索引
汇总和计算描述统计
-
约简方法:
sum, min, mean, median, var, std, mad(绝对离差)
skew(三阶矩偏度), kurt(峰度), diff(一阶差分)
idmax, idmin,argmin(整数索引),
cumsum(累计和), cummin(累计最值), cumprod(累计积)
describe(汇总统计), pct_change(百分数变化)
选项:axis,skipna,level
除非整个切片都是NA,否则排除
-
相关系数与协方差
同一个dataframe:cov, corr()
obj.col1.cov(obj.col2) 不同df,se:corrwith(),axis=1
-
唯一值:
obj.unique()计数:
ovj.vlaue_counts()isin:
obj.isin()
处理缺失数据
检查:isnull(), notnull()
处理:dropna(),how='all'仅全部缺失的行,axis=1
thresh=3,(时间序列)仅留下部分
fillna(),默认产生新对象,inplace=True
可进行不同列填充:df.fillna(1:0.5, 3:-1)
参数:value填充值,method,axis,inplace,limit连续填充最多
层次化索引
- 两个以上索引基本:
index=[[], []]
内层索引:data[:, 2]
每条轴都可层次化索引:
columns=[[], []], 各层索引都有名字(不同于轴标签)-
更改级顺序:
swaplevel('index_name1', 'index_name2') 单个级别中的值排序:
sortlevel(0/1) 级别汇总:
frame.sum(level='index_name'), axis=1重塑:
data.unstack(),多维表格
data,stack()层次索引
-
列当索引:
set_index(['col1', 'col2']), drop=False
reset_index()索引转列
其他
整数索引:容易有歧义。基于位置的索引icol,irow
-
面板数据panel:三维,
pd.Panel()
to_frame()转化为datafram
to_panel()转化为panel