Pandas学习笔记三——从DataFrame中选择数据

DataFrame数据选择方法

DataFrame在某些方面像二维化或结构化的数组,在某些方面又像一个共享索引的若干Series对象构成的字典。所以,选择DataFrame中的数据可以从上面两个角度出发。

将DataFrame看作字典

“`python
import numpy as np
import pandas as pd

创建一个DataFrame对象

area = pd.Series({‘California’: 423967, ‘Texas’: 695662,
‘New York’: 141297, ‘Florida’: 170312,
‘Illinois’: 149995})
pop = pd.Series({‘California’: 38332521, ‘Texas’: 26448193,
‘New York’: 19651127, ‘Florida’: 19552860,
‘Illinois’: 12882135})
data = pd.DataFrame({‘area’:area, ‘pop’:pop})

把data看作是字典,字典的键为列名,值是每列对应的Series对象、

这里两个Series分别构成DataFrame的一列,可以通过对列名的字典形式的取值获取数据

data[‘area’]

输出如下:

California 423967
Texas 695662
New York 141297
Florida 170312
Illinois 149995
Name: area, dtype: int64
“`

#同样也可以将每一列看作是DataFrame的属性,使用data的属性形式可以直接访问数据
data.area

#输出如下:
California    423967
Texas         695662
New York      141297
Florida       170312
Illinois      149995
Name: area, dtype: int64
将DataFrame对象看作是二维数组
#对data可以直接查看其values属性
data.values

#输出如下:
array([[  423967, 38332521],
       [  695662, 26448193],
       [  141297, 19651127],
       [  170312, 19552860],
       [  149995, 12882135]])
#如果仅仅是获得数据,而不要求保留DataFrame的标签,那么可以在取得value属性后,进行和numpy数组一样的操作(获取切片、花哨索引、bool索引、掩码等数据子集
#如果需要保留DataFrame的标签,推荐使用pd.loc和pd.iloc
#pd.loc为显式索引,即使用标签进行索引
data.loc['California':'Florida',:'pop']

#输出如下:
              area       pop
California  423967  38332521
Texas       695662  26448193
New York    141297  19651127
Florida     170312  19552860

#如果只需要对index方向上进行索引,可以在data直接操作,对多个标签用切片会选中行进行筛选
data['California':'Florida']

#结果如下
              area       pop
California  423967  38332521
Texas       695662  26448193
New York    141297  19651127
Florida     170312  19552860

#需要注意的是,如果在data上对单个标签取值会对DataFrame的列进行筛选
data['pop']

#结果如下
California    38332521
Texas         26448193
New York      19651127
Florida       19552860
Illinois      12882135
Name: pop, dtype: int64
#那么何为隐式搜索呢?隐式搜索相当于使用numpy二维数组取值方式的同时保留DataFrame的标签,最大的好处就是:在数据量庞大的时候,可以快速的对DataFrame进行切片操作
data.iloc[:3,:2]

#结果如下:
              area       pop
California  423967  38332521
Texas       695662  26448193
New York    141297  19651127

猜你喜欢

转载自blog.csdn.net/jasonzhoujx/article/details/81630549