pandas数据结构介绍
Series
pd.Series([1,2,3] ,index = []) |
创建一个带索引的一维数组 |
pd.Series(字典 ,index= []) |
创建一个带索引的一维数组,可以通过index来修改索引,如修改后的索引不在字典中存在,该值为Na'N |
arr.values |
获取数组数值 |
arr.index |
获取数组索引对象 |
arr['a','b'] |
通过索引方式选取单个或者一组值 |
arr[arr>0] |
根据布尔型数组进行过滤 |
b' in arr |
判断索引b是否存在 |
pd.isnull(arr)或arr.isnull() |
判断是否缺失数据 |
pd.notnull(arr) |
判断是否没有缺失数据 |
arr+arr1 |
Series中的一个重要功能是自动对齐不同索引的数据,返回的是arr和arr1的并集 |
arr.name = 'a' |
Series对象本身优一个name属性 |
arr.index.name = 'b' |
索引有一个name属性 |
arr.index = [] |
可就地修改索引 |
DataFrame
列获取 |
frame['a'] |
返回一个Series,如不存在a可以通过赋值方式进行修改 |
frame.a |
返回一个Series |
frame.ix['three'] |
ix可进行行获取 |
del frame['a'] |
删除a列 |
frame.T |
对frame进行转置 |
frame.index.name |
对index或columns设置name属性 |
索引对象
index对象是不可修改的,用户不能对此进行修改
基本功能
重新索引
arr.reindex |
根据新索引进行重排,如果某个索引值不存在,就引入缺失值 |
arr.reindex([],fill_value = 0,method = '') |
丢弃指定轴上的值
obj.drop() |
drop方法返回的是一个在指定轴上删除了指定值的新对象 |
索引、选取和过滤
obj[’b‘:’c‘] |
利用标签的切片运算与普通的python切片运算不同,其末端是包含的 |
算术运算与数据对齐
在算术方法中填充值 |
df1.add(df2,fill_value = 0) |
DataFrame 和Series之间的运算 |
会沿着一直向下广播 |
函数应用于映射
排序和排名
按索引进行排序 |
obj.sort_index(axis = 1, ascending = False) |
按值进行排序(Series) |
obj.order() 任何缺失值会放到末尾 |
按值进行排序(DataFrame) |
obj.sort_index(by=[]) 将一个或多个列的名字传递给by |
rank返回排名值 |
obj.rank(ascending = ,method = ) |
带有重复值的轴索引
obj.index.is_unique |
索引的is_unique属性可以知道它的值是否唯一 |
汇总和计算描述统计
df.mean(axis = 1, skipna = )
相关系数与协方差
obj.corr() |
用于计算两个Series中重叠的、非NA的、按索引对齐的值的相关系数 |
obj.cov() |
用于计算协方差 |
obj.corrwith() |
计算其列或行跟另一个Series或DataFrame之间的相关系数 |
唯一值、值计数以及成员资格
处理缺失数据
滤掉缺失数据
df.dropna(how = ‘any’,thresh = 3)
填充缺失数据
df.fillna()
层次化索引
data.unstack() |
进行数据重塑 |
data.stack() |
unstack的逆运算 |
重排分级排序
frame.swaplevel('key1','key2') |
接受两个级别编号或名称,并返回一个互换了级别的新对象(但数据不发生变化) |
frame.sortlevel() |
根据单个级别中的值对数据进行排序(稳定的) |
根据级别汇总统计
frame.sum(level = '') |
根据行或列上的级别进行求和 |
使用DataFrame的列
frame.set_index() |
将一个或多个列转换为行索引,并创建一个新的DataFrame |
其他有关Pandas的话题
整数索引
如果有一个含0/1/2的索引,但是很难判断用户是想基于标签或位置的索引 |
ix |
面向标签的索引器 |
iget_value/irow/icol |
不考虑索引类型/基于位置的索引 |