pandas之DataFrame对象

DataFrame对象

DataFrame这种列表式数据结构跟excel表相似,其设计初衷是将Series的使用场景由一维扩展到多维,DataFrame由按一定顺序排列的多列数据组成,各列的数据类型可以有所不同.
DataFrame对象有两个索引数组(index和columns),第一个数组与行相关,它与Series的索引数组极为相似,每个索引值都跟所在的一行相关联,第二个数组包含一系列列标签(每个值相当于列名),DataFrame可以理解为一个由Series组成的字典,其中每一列的名称作为字典的键,形成DataFrame的列的Series作为字典的值,每个Series的所有元素映射到叫Index的标签数组中.

dataframe.png

  • 定义DataFrame对象
    构造函数如下:
def __init__(self, data=None, index=None, columns=None, dtype=None,
                 copy=False):

使用字典构造DataFrame对象,字典的键为columns的值,字典的值为columns的值对应的Series对象.

>>> data = {"color": ["blue", "green", "yellow", "red", "white"], "object": ["ball", "pen", "pencil", "paper", "mug"], "price": [1.2, 1.0, 0.6, 0.9, 1.7]}
>>> frame = pd.DataFrame(data)
>>> print(frame)
    color  object  price
0    blue    ball    1.2
1   green     pen    1.0
2  yellow  pencil    0.6
3     red   paper    0.9
4   white     mug    1.7

如果用来创建DataFrame的dict中存在你不需要的数据,你可以指定columns参数来构造DataFrame对象,新建的DataFrame各列顺序与你指定的列顺序一样.

>>> frame2 = pd.DataFrame(data, columns=["color", "price"])
>>> print(frame2)
    color  price
0    blue    1.2
1   green    1.0
2  yellow    0.6
3     red    0.9
4   white    1.7

也可以指定index参数构造DataFrame对象,如果没有指定,默认是从0开始依次递增的数组.

>>> frame2 = pd.DataFrame(data, index=["one", "two", "three", "four", "five"])
>>> print(frame2)
        color  object  price
one      blue    ball    1.2
two     green     pen    1.0
three  yellow  pencil    0.6
four      red   paper    0.9
five    white     mug    1.7
  • 使用数据矩阵构造DataFrame对象
>>> frame3 = pd.DataFrame(np.arange(16).reshape((4,4)), index=["red", "blue", "yellow", "white"], columns=["ball", "pen", "pencil", "paper"])
>>> print(frame3)
>>> print(frame3)
        ball  pen  pencil  paper
red        0    1       2      3
blue       4    5       6      7
yellow     8    9      10     11
white     12   13      14     15
  • 选取元素
>>> print(frame3.columns)
Index(['ball', 'pen', 'pencil', 'paper'], dtype='object')
>>> print(type(frame3.columns))

>>> print(frame3.index)
Index(['red', 'blue', 'yellow', 'white'], dtype='object')
>>> print(type(frame3.index))

>>> print(frame3.values)
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
>>> print(type(frame3.values))     --- 是一个numpy的ndarray数组

  • 获取一列数据
>>> print(frame3["paper"])    --- 得到一个Series对象
red        3
blue       7
yellow    11
white     15
Name: paper, dtype: int32
>>> print(type(frame3["paper"])

>>> print(frame3.paper)    --- 使用列名称作为属性获取一列
red        3
blue       7
yellow    11
white     15
Name: paper, dtype: int32
  • 获取一行(使用DataFrame对象的ix属性)
>>> print(frame3.ix[2])     --- 返回一个Series对象,index由列名组成,values为每个列名对应的值
ball       8
pen        9
pencil    10
paper     11
Name: yellow, dtype: int32
>>> print(type(frame3.ix[2]))

  • 用一个数组指定多个索引值选取多行,返回一个DataFrame对象
>>>print(frame3.ix[[2,4]])  --- 两个参数表示选取行
       ball  pen  pencil  paper
blue      4    5       6      7
white    12   13      14     15
>>>print(type(frame3.ix[[2,4]]))

  • 直接使用索引选取多行数据
>>> print(frame3[1:3])
        ball  pen  pencil  paper
blue       4    5       6      7
yellow     8    9      10     11
>>> print(frame3[1])
直接报错,不能选取一行
>>> print(frame3[1:2])    --- 选取一行
      ball  pen  pencil  paper
blue     4    5       6      7
  • 获取存储在DataFrame中的一个数据
>>>print(frame3["paper"][2])
11
  • 赋值

你可能感兴趣的:(pandas之DataFrame对象)