pandas是基于Numpy构建的具有高级数据结构和操作工具的python库,让数据分析工作更方便。以下整理自《利用Python进行数据分析》第五章
pandas的主要数据结构:Series DataFrame
Series
类似于一维数组的对象,由一组数据(values)和一组数据标签(index)组成。索引可以指定,若不指定则自动创建0-N-1数字索引
和Numpy数组相比,可以通过索引的方式选取Series中的单个或一组值,Numpy的数组运算都会保留
还可以将Series看作一个定长的有序字典,可以通过python字典创建Series。(Series(dict))
使用NaN表示缺失数据,isnull()和notnull()可用于检测缺失数据
Series对象本身及其索引都有一个name属性obj.nameobj.index.name
Series的索引可以通过赋值方式就地修改
DataFrame
DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型。
DataFrame既有行索引也有列索引
构建DataFrame可以直接传入一个由等长列表或Numpy数组组成的字典
data ={'state': ['Ohio', 'Ohio', 'Nevada', 'Nevada'],
'year: [2000, 2001, 2000,2001'],
'pop': [1.5, 1.7, 2.4,2.9]}
frame =DataFrame(data)
结果会自动加上索引且全部列会被有序排列
如果传入的列在数据中找不到,产生NaN值
将DataFrame的列获取为一个Series: frame['state'] frame2.year 返回的Series与DataFrame有相同的索引
可以通过赋值的方式对DataFrame进行修改
del frame['year']删除列
如果将嵌套字典传入DataFrame,外层字典的
键作为列,内层键作为行索引
frame.values得到值
索引对象
index对象不可修改
主要的Index对象:Index Int64Index MultiIndex DatetimeIndex PeriodIndex
Index的方法和属性
append
连接另一个Index对象产生一个新的Index
diff
计算差集
intersection
计算交集
union
计算并集
isin
计算一个指示各值是否都包含在参数集合中的布尔型数组
delete
删除索引i处元素得到新的x
drop
删除传入的值并得到新的Index
insert
将元素插入索引i处并得到新的Index
is_monotonic
各元素均大于等于前一个元素时返回True
is_unique
当Index没有重复值时返回True
unique
计算Index中唯一的数组
基本功能
重新索引reindex
插值(method)选项 ffill/pad 前向填充(或搬运)值
bfill/backfill 后向填充(或搬运)值
丢弃指定轴上的项drop 对于DataFrame可以删除任意轴上的索引值
索引、选取和过滤
DataFrame的索引选型 obj[val] 选取单个列或一组列
obj.ix[val] 选取DataFrame的单个行或一组行
get_value set_value
算数运算或数据对齐
自动的数据对齐操作在不重叠的索引处引入了NA值
当+时,没有重叠的位置就会产生NA值,df1.add(df2, fill_value = 0)可以填充缺失值
DataFrame和Series之间的算术运算会将Series的索引匹配到DataFrame的列然后沿着行一直向下广播 如果希望匹配行且在列上广播,则用算数运算方法frame.sub(series3, axis=0)
函数应用和映射
F =lambda x: x.max() - x.min()
frame.apply(f,axis=1)
排序和排名
obj.sort_index() #对索引排序
obj.order() #按值对Series排序,缺失值放到末尾
obj.rank() 给出一个排名值,默认通过“为各组分配一个平均排名”破坏平级关系
汇总和计算描述统计
约简方法的选项
axis 约简的轴。DataFrame的行用0列用1
skipna 排除缺失值,默认值为True
level 如果轴是层次化索引的,则根据level分组约简
count
非NA值的数量
describe
针对Series或各DataFrame列计算汇总统计
min、max
argmin、argmax
计算最小或最大值的索引位置
idxmin、idxmax
计算最小或最大值的索引值
quantile
计算样本的分位数
sum
值的总和
mean
值的平均数
median
值的算术中位数
mad
根据平均值计算平均绝对离差
var
样本值的方差
std
样本值的标准差
skew
样本值的偏度
kurt
样本值的峰度
cumsum
样本值的累计和
cummin、cummax
样本值的累计最大值和累计最小值
cumprod
样本值的累计积
diff
计算一阶差分
pct_change
计算百分数变化
相关系数和协方差
Series的corr方法用于计算两个Series中重叠的、非NA的、按索引对齐的值的相关系数。cov
用于计算协方差
唯一值、值计数以及成员资格
obj.unique()
obj.value_counts()
处理缺失数据
NA处理方法
dropna
根据各标签的值中是否存在缺失数据对轴标签进行过滤
fillna
用指定值或插值方法填充缺失数据
isnull
notnull
层次化索引
MultiIndex索引,用一个由列表或数组组成的列表作为索引
data.unstack()重新安排到一个DataFrame中
重排分级顺序:swaplevel接受两个级别编号或名称,并返回一个互换了级别的新对象
对DataFrame和Series的描述和汇总都有一个level选项
07-22