[利用python进行数据分析 书笔记]第5章 pandas入门

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之间的运算 会沿着一直向下广播


函数应用于映射

apply()
applymap()




排序和排名

按索引进行排序 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 不考虑索引类型/基于位置的索引










猜你喜欢

转载自blog.csdn.net/daisy_fight/article/details/80792281