学习笔记三、pandas包中常用方法整理

  • Post author:
  • Post category:其他






本文由pandas官网提供的十分钟熟悉pandas包的介绍文档整理而成。



整理思路:


通过pandas包与现有分析工具在使用上的区别,让分析人员能从系统上了解pandas包的功能,以便后期快速上手。



相关资料:


1、10 minutes to pandas原文网址:http://pandas.pydata.org/pandas-docs/stable/10min.html


2、pandas包官网:http://pandas.pydata.org




一、介绍pandas包前期工作


1、运行本文提供的代码,需引入包有:




pandas as pd





numpy as np





matplotlib.pyplot as plt



2、部分快捷查询方法





对象属性查询(pandas包定义的数组对象,或矩阵对象):在对象名后加点,然后按tab键,则会显示


二、pandas包中的重要方法介绍


1、对象定义





1)、类似


数组


类型




pd.Series([1,np.nan,3])





//标明每个数组元素,通过pd.Series封装成数组





//其中

数组元素的生成可以调用numpy中的方法,如:np.random.randint(0,7,size=10))。




pd.Series(1,index=list(range(4)),dtype=’float32′)





pd.Series(1,index=pd.date_range(‘20130102′, periods=4),dtype=’float32’)





//除了给出具体的数值,还可以指定对应的index(类型不局限于数字),以及数字的类型dtype





2)、类似


矩阵


类型






pd.DataFrame(data={‘col1’: [1, 2], ‘col2’: [3, 4]})





//可以标明矩阵具体的数字,如上列一共两列,一列为1,2;一列为3,4。生成一个举证





pd.DataFrame(np.random.randn(6,4), index=pd.date_range(‘20130102’, periods=4), columns=list(‘ABCD’))





//可以标明具体的数值,index范围即矩阵行数,columns范围即矩阵列数





pd.DataFrame({ ‘A’ : 1.,





‘B’ : pd.Timestamp(‘20130102’),





‘C’ : pd.Series(1,index=list(range(4)),dtype=’float32′),





‘D’ : np.array([3] * 4,dtype=’int32′),





‘E’ : pd.Categorical([“test”,”train”,”test”,”train”]),





‘F’ : ‘foo’ })





//也可以通过定义键值对,定义矩阵;每个键值对表示一个列




3)、对象赋值





df.at[dates[0],’A’] = 0  //对某一个值赋值





df.iat[0,1] = 0  //对某一个值赋值





df.loc[:,’D’] = np.array([5] * len(df))  //对某一列赋值





df.fillna(value=5)     //对矩阵中为NaN的元素填充为5


2、对pandas中定义对象的操作





1)、获取头尾数据





pd.head(1) //数组则为第一个数字,对于矩阵则为第一行数据;

2则为前两个







pd.tail(1) //数组则为最后一个数字,对于矩阵则为最后一行数据。






2)、查看数据的行、列、数值




pd.index //获取数组的下标,对于矩阵获取矩阵的行





pd.columns //获取矩阵的列,

但对于数组则无该属性






pd.values //获取数据及举证的具体数值




pd.describle()//获取pd对象全部基础属性





3)、类似矩阵计算 相关操作



注:df为一个实例对象)







转置






df.T //获取矩阵的转置







矩阵部分数据提取




通过行名和列名,对整行或者整列进行





df[‘A’] //获取矩阵中,列名为A的该列数据(对某列的提取,对行不行)





df[0:1] //获取矩阵中,第0行(行数的下标从0开始),df[0:2]则取第0行和第1行,不包括2





//也可以通过具体的行名进行提取,如df[‘20130102′:’20130104’]。提取’20130102’到’20130104’之间数值




通过df自带函数,和具体的行名和列名进行提取





df.loc[dates[0]] //dates数组为行名数组,其中dates[0]表示提取第一行数据。同样可以用具体标签进行筛选df.loc[‘20130102′:’20130104’]





df.loc[:,[‘A’,’B’]] //提取矩阵中列名为A和B,两列的数据





df.loc[1,[‘A’]]  //可以结合行、列,对矩阵进行提取;





//如果列名也有数组,可以通过以下方法提取某个值df.at[dates[0],’A’]




通过df自带函数,和所在位置进行提取





df.iloc[2:5,0:2]  //提取第3至5行,以及第1至2列的数据





df.iat[1,1]  //选取第二行、第二列的数据




通过运算符选取符合条件的数据





df[df.A > 0]  //选取第A列中,大于0的对应行





df[df > 0]    //选取矩阵中大于0的值,如果小于0,则显示为NaN





df[df[‘E’].isin([‘two’,’four’])]  //选取矩阵中,列名为E且数值为two和four的数据





df.dropna(how=’any’)  //去掉元素中包含NaN的行





pd.isna(df1)   //判断df1矩阵中是否为NaN,如果为空则为True





矩阵中增、删、改






df[‘E’] = [ ‘one’,’two’,’three’,’four’]  //在df矩阵中,增加一列,列名为E,数值为’one’,’two’,’three’,’four’,其中数组的长度要和矩阵的行数相同





df1 = df.reindex(index=dates[0:4], columns=list(df.columns) + [‘E’])  //提取df矩阵中第1到4行,并在原有的列中新加入一列E





df.append(df.iloc[3], ignore_index=True)    //取出df矩阵中的第4行,比添加都矩阵df下面





对矩阵中的统计方法






df.mean()  //对每一列进行统计,计算平均值





df.mean(1)  //对每一行进行统计,计算平均值





矩阵中的加减运算






df.sub(s, axis=’index’)   //按照index进行匹配,完成两个矩阵相减(df-s),如果s为数组,其为补全为一个矩阵后进行计算





df.apply(np.cumsum)    //每行数值向上求和,如数组1,2,3  计算结果为 1,3,6





df.max() – df.min()   //去数据每列最大值 – 每列最小值   其与df.apply(lambda x : x.max() -x.min()) 的区别





s.value_counts()   //对数组中,数值次数的统计,仅对矩阵有帮助





s.str.lower()      //把数组中的大写变为小写




4)、类似SQL语言 相关操作






类似order by






df.sort_index(axis=1,ascending=False) //根据矩阵的行名进行排序





df.sort(columns = ‘B’) //根据矩阵的某一列的值进行排序,如根据列名为B的值进行排序







类似group by




df.groupby([‘A’,’B’]).sum()   //先根据B列的数据进行聚合,在根据A列的数据聚合。A为大类,B为小类







类似union




pieces = [df[:3], df[3:7], df[7:]]   //





pd.concat(pieces)                    //每行的数据个数要求一样,才能进行union







类似join




left = pd.DataFrame({‘key’: [‘foo’, ‘foo’], ‘lval’: [1, 2]})





right = pd.DataFrame({‘key’: [‘foo’, ‘foo’], ‘rval’: [4, 5]})





pd.merge(left, right, on=’key’)   //根据key列进行关联




5)、类似Excel处理方法





df.stack()   //类似excel中根据不同维度统计,变换表头





df.unstack(1)    //类似excel中根据不同维度统计,变换表头





pd.pivot_table(df, values=’D’, index=[‘A’, ‘B’], columns=[‘C’])   //类似透视表,详情需查询官网


3、数据的写入





1)、csv的读取和写入





df.to_csv(‘foo.csv’)   //把df矩阵写入foo.csv中




pd.read_csv(‘foo.csv’)   //把foo.csv数据读入






2)、xls的读取和写入





df.to_excel(‘foo.xlsx’, sheet_name=’Sheet1′)  //把df矩阵写入foo.xlsx中




pd.read_excel(‘foo.xlsx’, ‘Sheet1’, index_col=None, na_values=[‘NA’])   //读取foo.xlxs中的数据



版权声明:本文为keith0812原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。