码迷,mamicode.com
首页 > 其他好文 > 详细

pandas 学习笔记

时间:2015-07-28 23:10:56      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:python   pandas   

读者只需浏览一下本文的目录结构,我相信就已经掌握了1到2成的 pandas 知识。

本文的目的是建立一个大概的知识结构

在数据挖掘python阅读源码时,断断续续查阅了些 pandas 资料,并在源码中大致感受到了 pandas 在数据清理方面的方便性。

先将自己查阅的资料结合实际应用中常用到的方式,以学习笔记的形式整理出来。不会涉及到 pandas 的所有方面,细节知识还需自行查阅官方文档。


数据结构

  • Series: 一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近,其区别是:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。
  • DataFrame:二维的表格型数据结构。很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。以下的内容主要以DataFrame为主。
  • Panel: 三维数组,可以理解为DataFrame的容器。

数据操作

一般操作

  1. head和tail方法可以显示DataFrame前N条和后N条记录,N为对应的参数,默认值为5。

  2. index(行)和columns(列)属性,可以获得DataFrame的行和列的标签。这也是了解数据内容和含义的重要步骤。

  3. decribe方法可以计算各个列的基本描述统计值。包含计数,平均数,标准差,最大值,最小值及4分位差。

  4. T 方法可以对数据进行转置

排序操作

  • df.sort_index(axis=1, ascending=False)

    sort_index可以以轴的标签进行排序。axis是指用于排序的轴,可选的值有0和1,默认为0即行标签(Y轴),1为按照列标签排序。 ascending是排序方式,默认为True即降序排列。

  • df.sort(columns=[‘one’,’two’],ascending=[0,1])

    DataFrame也提供按照指定列进行排序,可以仅指定一个列作为排序标准(以单独列名作为columns的参数),也可以进行多重排序(columns的参数为一个列名的List,列名的出现顺序决定排序中的优先级),在多重排序中ascending参数也为一个List,分别与columns中的List元素对应。

读写文件操作

这里仅介绍读csv格式数据,对于excel数据,请查阅其他资料

  • df = pd.read_csv(‘data.csv‘)
    
  • df.to_csv(‘data.csv‘)
    

数据选择

  • 选择一个单独的列df[‘a‘] 等同于 df.a

  • 通过[]进行选择,这将会对行进行切片:df[0:3]

  • 使用标签选取数据:

    df.loc[行标签,列标签]
    df.loc[‘a‘:‘b‘]#选取ab两行数据
    df.loc[:,‘one‘]#选取one列的数据
    

    df.loc的第一个参数是行标签,第二个参数为列标签(可选参数,默认为所有列标签),两个参数既可以是列表也可以是单个字符,如果两个参数都为列表则返回的是DataFrame,否则,则为Series。

  • 使用位置选取数据:

    df.iloc[行位置,列位置]
    df.iloc[1,1]#选取第二行,第二列的值,返回的为单个值
    df.iloc[0,2],:]#选取第一行及第三行的数据
    df.iloc[0:2,:]#选取第一行到第三行(不包含)的数据
    df.iloc[:,1]#选取所有记录的第一列的值,返回的为一个Series
    df.iloc[1,:]#选取第一行数据,返回的为一个Series
    
  • 通过逻辑指针进行数据切片:

    df[逻辑条件]
    df[df.one>=2]#单个逻辑条件
    df[(df.one>=1) & (df.one<3) ]#多个逻辑条件组合
    

    这种方式获得的数据切片都是DataFrame。


缺失处理

  • df.dropna(how=‘any‘) 会去掉缺失值的行
  • df.fillna(value=) 对缺失值进行填充

基本运算

  • df.mean()#计算列的平均值,参数为轴,可选值为0或1.默认为0,即按照列运算
  • df.sum(1)#计算行的和
  • df.apply(lambda x: x.max() - x.min())#将一个函数应用到DataFrame的每一列,这里使用的是匿名lambda函数,与R中apply函数类似

DataFrame合并

Contact


参考资料

[pandas 官方文档]((http://pandas.pydata.org/)

十分钟搞定 pandsa

版权声明:本文为博主原创文章,未经博主允许不得转载。

pandas 学习笔记

标签:python   pandas   

原文地址:http://blog.csdn.net/u012675539/article/details/47113147

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!