数据结构
Series
一维数组,定长的有序字典Series()
-
属性:
obj.value
obj.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