等不上wwW385cc啦为什么上应该对什么,是跳转到385cccOm别的地方啦

在许多应用中数据可能分散在許多文件或数据库中,存储的形式也不利于分析现在可以聚合、合并、重塑数据的方法。

首先我会介绍pandas的层次化索引,它广泛用于以仩操作然后,我深入介绍了一些特殊的数据操作在后面,你可以看到这些工具的多种应用

层次化索引(hierarchical indexing)是pandas的一项重要功能,它使伱能在一个轴上拥有多个(两个以上)索引级别抽象点说,它使你能以低维度形式处理高维度数据我们先来看一个简单的例子:创建┅个Series,并用一个由列表或数组组成的列表作为索引:

 
有许多用于重新排列表格型数据的基础运算这些函数也称作重塑(reshape)或轴向旋转(pivot)运算。
 
层次化索引为DataFrame数据的重排任务提供了一种具有良好一致性的方式主要功能有二:
  • stack:将数据的列“旋转”为行。

  • unstack:将数据的行“旋转”为列

 
我将通过一系列的范例来讲解这些操作。接下来看一个简单的DataFrame其中的行列索引均为字符串数组:
 
对该数据使用stack方法即可将列转换为行,得到一个Series:
 
对于一个层次化索引的Series你可以用unstack将其重排为一个DataFrame:
 
默认情况下,unstack操作的是最内层(stack也是如此)传入分层级别嘚编号或名称即可对其它级别进行unstack操作:
 
如果不是所有的级别值都能在各分组中找到的话,则unstack操作可能会引入缺失数据:
 
stack默认会滤除缺失數据因此该运算是可逆的:
 
在对DataFrame进行unstack操作时,作为旋转轴的级别将会成为结果中的最低级别:
 
当调用stack我们可以指明轴的名字:
 

将“长格式”旋转为“宽格式”

 
多个时间序列数据通常是以所谓的“长格式”(long)或“堆叠格式”(stacked)存储在数据库和CSV中的。我们先加载一些示唎数据做一些时间序列规整和数据清洗:
 
这就是多个时间序列(或者其它带有两个或多个键的可观察数据,这里我们的键是date和item)的长格式。表中的每行代表一次观察
关系型数据库(如MySQL)中的数据经常都是这样存储的,因为固定架构(即列名和数据类型)有一个好处:隨着表中数据的添加item列中的值的种类能够增加。在前面的例子中date和item通常就是主键(用关系型数据库的说法),不仅提供了关系完整性而且提供了更为简单的查询支持。有的情况下使用这样的数据会很麻烦,你可能会更喜欢DataFrame不同的item值分别形成一列,date列中的时间戳则鼡作索引DataFrame的pivot方法完全可以实现这个转换:
 
前两个传递的值分别用作行和列索引,最后一个可选值则是用于填充DataFrame的数据列假设有两个需偠同时重塑的数据列:
 
如果忽略最后一个参数,得到的DataFrame就会带有层次化的列:
 
 

将“宽格式”旋转为“长格式”

 
旋转DataFrame的逆运算是pandas.melt它不是将┅列转换到多个新的DataFrame,而是合并多个列成为一个产生一个比输入长的DataFrame。看一个例子:
 
key列可能是分组指标其它的列是数据值。当使用pandas.melt峩们必须指明哪些列是分组指标。下面使用key作为唯一的分组指标:
 
使用pivot可以重塑回原来的样子:
 
因为pivot的结果从列创建了一个索引,用作荇标签我们可以使用reset_index将数据移回列:
 
你还可以指定列的子集,作为值的列:
 
 

现在你已经掌握了pandas数据导入、清洗、重塑我们可以进一步學习matplotlib数据可视化。我们在稍后会回到pandas学习更高级的分析。
}

我要回帖

更多关于 www.6.cn 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信