10分钟快速了解Pandas

以下是对Pandas document其中的10 Minutes to pandas的简单翻译

具体原文见:http://pandas.pydata.org/pandas-docs/version/0.18.0/10min.html


===========================分割线================================


                                 好,我们开始



这是一篇关于pandas的简要介绍,主要是为新手准备的。在Cookbook中有关于pandas

较为复杂的例子,链接如下:

http://pandas.pydata.org/pandas-docs/version/0.18.0/cookbook.html#cookbook


首先在库的导入中,习惯性约定如下:



1、对象创建

请看数据结构部分:http://pandas.pydata.org/pandas-docs/version/0.18.0/dsintro.html#dsintro


  创建一个Series:由一系列值组成,索引为默认整型



创建一个DataFrame:由一个numpy数组组成,日期作为索引,且有列标签



创建一个DataFrame:通过字典形式创建,并且可以转换成类似Series的形式:



其特定的数据类型:



如果您正在使用IPython,那么Tab键就具有较强的索引功能,它会将当前对象可能的属性都罗列出来。下面您看到的

就是其一部分属性(实际上很多)。



2、审视数据

  可以参见Basics section

  查看frame的首行及尾行内容:



显示索引值,列以及相关的numpy数据



describe方法:展示数据统计的相关结果,非常便捷



对数据形式进行转置:



根据某一轴进行排序:



根据数值进行排序:



3、选取

注意:尽管标准的Python/Numpy表达式在数据的选取及设置方面较为直观,并且在交互式工作及

代码生成方面也很便利。但我们还是推荐最优化的pandas数据存取方法,如.at, .iat, .loc, .iloc和.ix。

具体可参见索引文档:Indexing and Selecting DataMultiIndex/Anvanced Indexing.

获取

选取单列,即相当于产生一个Series;这等价于df.A



通过[]选取数据,相当于对行切片处理



根据标记值进行选取数据:

详参见:Selection by Label

利用标记值获得一组数据:



根据标记值选取多个轴上的数据:



显示标记值的切片功能,选取域包括端点



减少数据维度大小:



获取标量数值(可理解为内部元素):



快速获得一标量值(与前一方法等价):



通过位置选取

详参见:Selection by Position

通过所在位置整数大小选取



对整数进行切片,与numpy/python类似



通过一串整数列表进行位置选取,与numpy/python风格类似



对行进行切片:



对列进行切片:



获得DataFrame中的一个值(可理解为元素):



快速获取一个标量(元素)值(与上述等价):



布尔型相关索引:

用单列数值进行数据选取:



where操作方法进行数据选取:



利用isin()方法过滤数据:



创建一个新列,使其数据能根据索引值自动排序:



通过标签号设置值的大小:



通过位置值的大小:



通过指定一个numpy数组:



之前操作结果最终显示如下:



利用where操作方法进行设置:



4、数据缺失

pandas主要利用np.nan代替缺失的数据,它默认参加数据的计算,详参见:

Missing Data Section

reindexing允许改变、添加及删除特定轴上的索引,其返回数据的抄本。



丢掉含有数据缺失的行:



填充缺失的数据:



在nan值处获得布尔值:



5、操作符

详参见:Basic section on Binary Ops

操作符一般不包括缺失数据

进行描述性地统计:

 


其他轴的相同操作:



操作多维数据,并且实现数据对齐。除此之外,pandas能够自动在特定的维度进行广播:



应用

将函数运用到数据中:



直方图

详参见:Histogramming and Discretization



字符串方法

Series的str属性中集成了一整套的字符串处理方法,使得其能够很方便的操作数组里的每一个元素,

正如下面代码段所示。str方法中经常的方法都有其常用的使用格式(在某些情况下我们经常这样使用)。

详参见:Vectorized String Methods



合并

合并多个字符串或数组等多种对象

在连接或合并数据的运算中,pandas提供很多种方便的方法去将Series,Dataframe和panel对象结合在一起。

对于索引及相关代数功能提供不同的操作逻辑。

详参见:Merging section

用concat()将pandas对象对象聚合在一起:



连接

SQL合并格式。详参见:Database style joining



添加

在DataFrame加入一行

详参见:Appending



6、分组/分类

按组进行涉及到以下一些或者更多的过程:

按某种标准将数据分组

对各个组进行相关函数处理

将结果以合适的结构展示

详参见:Grouping Section



将数据分类后,对其运用sum方法:



按多个列进行分类,组成层次化索引,然后运用sum方法:



7、改变维度

详参见:Hierarchical IndexingandReshaping

堆栈



stack()方法精简了DataFrame的列:



对于DataFrame或Series,stack()方法的相反操作为unstack(),默认unstack到)的上一个状态



pivot表格

详参见:Pivot Tables



我们可以很容易从上述数据中得到pivot表格:

注:由于pandas版本问题,无法实现


时间序列

pandas对于频率变换中重采样的实现方面,简单且高效(如下面的操作)。这在金融方面非常常见,但并不仅限于此。

详参见:Time Series Section



时间域表示



转换成另一种时间域表示



时间跨度表示之间的转换:



可以用一些便利的函数实现日期及时间戳间的转换。在下面的例子中,将年的季度域分隔转换成

以各个季度最后一个月的后一天早上9点作为时间域分隔:



8、分类属性

自pandas 0.15版本,在DataFrame中就开始包括分类属性。

详参见:categorical introductionAPI documentation



将raw grades 转换成一般数据类型:



使用更多有意义的名字作为分类名,以 Series.cat.categories 实现:



记住分类属性,同时加入一些缺少的属性( Series.cat方法返回一个新的Series ):



Categories里的排序是按照属性顺序,并不是类似字典的排序规则:



通过列的属性分组,则属性不显示:



9、绘图

详参见:Plotting

















在DataFrame中,plot( )方法能够方便地根据列标签绘图:




 













10、数据的输入输出

csv格式

详参见:Writing to a csv file



详参见:Reading from a csv file




读写层次性资料格式数据

详参见:HDFStores

写入数据:



读取数据:




Excel

详参见:MS Excel

向excel表中写数据:



从excel表中读数据:



11、Gotchas

如果你在操作时遇见异常:


遇到这些情况,可以参见:ComparisonsGotchas



注:操作环境

笔记本系统: win7 64位旗舰版

使用软件:Canopy 

                    Version:1.7.4.3384(64bit)

附下载链接:https://store.enthought.com/downloads/#default































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值