Pandas模块2

来源:互联网 发布:城乡统筹发展数据 编辑:程序博客网 时间:2024/06/04 20:05
#! /user/bin/env python#encoding=utf-8__author__ = 'chw'from pandas import Series,DataFrameimport pandas as pd**# 重新索引**# Series 对象的重新索引通过其 .reindex(index=None,**kwargs) 方法实现。# **kwargs 中常用的参数有俩:method=None,fill_value=np.NaN:ser=Series([-5,4.5,7.2],index=['a','e','d'])# a=['a','b','d','e']# b=['a','d','e']# print ser.reindex(a)# print ser.reindex(a,fill_value=0)# method有错误# .reindex() 方法会返回一个新对象,其 index 严格遵循给出的参数,method:{'backfill', 'bfill', 'pad', 'ffill', None}# 参数用于指定插值(填充)方式,当没有给出时,自动用 fill_value 填充,默认为 NaN(ffill = pad,bfill = back fill,分别指插值时向前还是向后取值)# print ser.reindex(b,fill_value=0,method='pad')# DataFrame 对象的重新索引方法为:.reindex(index=None,columns=None,**kwargs)。仅比 Series 多了一个可选的 columns 参数,用于给列索引。用法与上例类似,# 只不过插值方法 method 参数只能应用于行,即轴 0。data1={'a':['1','2'],'b':[201,202],'c':['q','w']}dataframe=DataFrame(data1,index=['a','b'])print dataframe# print dataframe.reindex(index=['b','a'],columns=['c','b','a','e'],fill_value=0,method='ffill')**# 删除**# 即删除 Series 的元素或 DataFrame 的某一行(列)的意思,# .drop(labels, axis=0)  表示删除行# .drop(labels, axis=1)  表示删除列# print ser.drop('e')# print dataframe.drop(['a','b'],axis=1)**#索引和切片**# print ser[:'e']  #等价于ser[:2]#  DataFrame 对象的索引方式,因为他有两个轴向(双重索引)。# 可以这么理解:DataFrame 对象的标准切片语法为:.ix[::,::]dataframe# .ix 对象可以接受两套切片,分别为行(axis=0)和列(axis=1)的方向:# print dataframe.ix[:2,1]# 使用布尔型数组的情况,注意行与列的不同切法(列切法的 : 不能省):# **算术运算和数据对齐**# pandas 最重要的一个功能是,它可以对不同索引的对象进行算术运算。在将对象相加时,# 结果的索引取索引对的并集。自动的数据对齐在不重叠的索引处引入空值,默认为 NaN。# 当不希望在运算结果中出现 NA 值时,可以使用前面 reindex 中提到过 fill_value 参数,# 不过为了传递这个参数,就需要使用对象的方法,# **函数应用和映射**# Numpy 的 ufuncs(元素级数组方法)也可用于操作 pandas 对象。# 当希望将函数应用到 DataFrame 对象的某一行或列时,可以使用# .apply(func, axis=0, args=(), **kwds) 方法。data2={'a':[1,2],'b':[201,202],'c':[5,6]}dataframe2=DataFrame(data2,index=['a','b'])print dataframe2f=lambda x:x.max()-x.min()print dataframe2.apply(f,axis=1)**# 排序和排名**# Series 的 sort_index(ascending=True) 方法可以对 index 进行排序操作,ascending 参数用于控制升序或降序,默认为升序。# 若要按值对 Series 进行排序,当使用 .order() 方法,任何缺失值默认都会被放到 Series 的末尾。# 在 DataFrame 上,.sort_index(axis=0, by=None, ascending=True) 方法多了一个轴向的选择参数与一个 by 参数,# by 参数的作用是针对某一(些)列进行排序(不能对行使用 by 参数):# 排名(Series.rank(method='average', ascending=True))的作用与排序的不同之处在于,他会把对象的 values 替换成名次(从 1 到 n)。# 这时唯一的问题在于如何处理平级项,方法里的 method 参数就是起这个作用的,他有四个值可选:average, min, max, first。# DataFrame 的 .rank(axis=0, method='average', ascending=True) 方法多了个 axis 参数,可选择按行或列分别进行排名,暂时好像没有针对全部元素的排名方法。**# 统计方法**# pandas 对象有一些统计方法。它们大部分都属于约简和汇总统计,用于从 Series 中提取单个值,或从 DataFrame 的行或列中提取一个 Series。# 比如 DataFrame.mean(axis=0,skipna=True) 方法,当数据集中存在 NA 值时,这些值会被简单跳过,除非整个切片(行或列)全是 NA,# 如果不想这样,则可以通过 skipna=False 来禁用此功能:# count 非 NA 值的数量# describe  针对 Series 或 DF 的列计算汇总统计# min , max 最小值和最大值# argmin , argmax   最小值和最大值的索引位置(整数)# idxmin , idxmax   最小值和最大值的索引值# quantile  样本分位数(0 到 1)# sum   求和# mean  均值# median    中位数# mad   根据均值计算平均绝对离差# var   方差# std   标准差# skew  样本值的偏度(三阶矩)# kurt  样本值的峰度(四阶矩)# cumsum    样本值的累计和# cummin , cummax   样本值的累计最大值和累计最小值# cumprod   样本值的累计积# diff  计算一阶差分(对时间序列很有用)# pct_change    计算百分数变化# **处理缺失数据**# pandas 中 NA 的主要表现为 np.nan,另外 Python 内建的 None 也会被当做 NA 处理。# 处理 NA 的方法有四种:**dropna , fillna , isnull , notnull** 。# is(not)null# 这一对方法对对象做元素级应用,然后返回一个布尔型数组,一般可用于布尔型索引。# dropna# 对于一个 Series,dropna 返回一个仅含非空数据和索引值的 Series# 问题在于对 DataFrame 的处理方式,因为一旦 drop 的话,至少要丢掉一行(列)。# 这里的解决方式与前面类似,还是通过一个额外的参数:dropna(axis=0, how='any', thresh=None) ,# how 参数可选的值为 any 或者 all。all 仅在切片元素全为 NA 时才抛弃该行(列)。# 另外一个有趣的参数是 thresh,该参数的类型为整数,它的作用是,# 比如 thresh=3,会在一行中至少有 3 个非 NA 值时将其保留。# fillna# fillna(value=None, method=None, axis=0) 中的 value 参数除了基本类型外,# 还可以使用字典,这样可以实现对不同的列填充不同的值。method 的用法与前面# .reindex() 方法相同,这里不再赘述。**# inplace 参数**# 前面有个点一直没讲,结果整篇示例写下来发现还挺重要的。# 就是 Series 和 DataFrame 对象的方法中,凡是会对数组作出修改并返回一个新数组的,# 往往都有一个 replace=False 的可选参数。如果手动设定为 True,那么原数组就可以被替换。

参考文献:http://www.open-open.com/lib/view/open1402477162868.html#articleHeader10
http://www.cnblogs.com/chaosimple/p/4153083.html

原创粉丝点击