Pandas最详细教程来了( 五 )

运行结果如图3-27所示 。

Pandas最详细教程来了

文章插图
▲图3-27
可以看到 , 使用loc的时候 , x索引和y索引都必须是标签值 。对于这个例子 , 使用日期索引明显不方便 , 需要输入较长的字符串 , 所以使用绝对位置会更好 。这里可以使用混合方法 , DataFrame可以使用ix来进行混合索引 。比如 , 行索引使用绝对位置 , 列索引使用标签 , 代码如下:
df.ix[1,'E'] = 3df运行结果如图3-28所示 。
Pandas最详细教程来了

文章插图
▲图3-28
ix的处理方式是 , 对于整数 , 先假设为标签索引 , 并进行寻找;如果找不到 , 就作为绝对位置索引进行寻找 。所以运行效率上会稍差一些 , 但好处是这样操作比较方便 。
对于ix的用法 , 需要注意如下两点 。
  • 假如索引本身就是整数类型 , 那么ix只会使用标签索引 , 而不会使用位置索引 , 即使没能在索引中找到相应的值(这个时候会报错) 。
  • 如果索引既有整数类型 , 也有其他类型(比如字符串) , 那么ix对于整数会直接使用位置索引 , 但对于其他类型(比如字符串)则会使用标签索引 。
总的来说 , 除非想用混合索引 , 否则建议只使用loc或者iloc来进行索引 , 这样可以避免很多问题 。
02 SeriesSeries类似于一维数组 , 由一组数据以及相关的数据标签(索引)组成 。示例代码如下:
import pandas as pds=pd.Series([1,4,6,2,3])sOut:
0    11    42    63    24    3在这段代码中 , 我们首先导入pandas并命名为pd , 然后向Series函数传入一个列表 , 生成一个Series对象 。在输出Series对象的时候 , 左边一列是索引 , 右边一列是值 。由于没有指定索引 , 因此会自动创建0到(N-1)的整数索引 。也可以通过Series的values和index属性获取其值和索引 。示例代码如下:
s.valuesOut:
array([1, 4, 6, 2, 3], dtype=int64)s.indexOut:
Int64Index([0, 1, 2, 3, 4], dtype='int64')当然 , 我们也可以对索引进行定义 , 代码如下:
s=pd.Series([1,2,3,4],index=['a','b','c','d'])sOut:
a    1b    2c    3d    4在这里 , 我们将索引定义为a、b、c、d 。这时也可以用索引来选取Series的数据 , 代码如下:
s['a']【Pandas最详细教程来了】Out:
1s[['b','c']]Out:
b    2c    3对Series进行数据运算的时候也会保留索引 。示例代码如下:
s[s>1]Out:
b    2c    3d    4s*3Out:
a     3b     6c     9d    12Series最重要的功能之一是在不同索引中对齐数据 。示例代码如下:
s1=pd.Series([1,2,3],index=['a','b','c'])s2=pd.Series([4,5,6],index=['b','c','d'])s1+s2Out:
a   NaNb     6c     8d   NaNSeries的索引可以通过赋值的方式直接修改 , 示例代码如下:
s.indexOut:
Index([u'a', u'b', u'c', u'd'], dtype='object')s.index=['w','x','y','z']s.indexOut:
Index([u'w', u'x', u'y', u'z'], dtype='object')sOut:
w    1x    2y    3z    4


推荐阅读