《Python for Data Analysis》
from pandas import Series, DataFrame
import pandas as pd
Series
由一组数据以及与之相关的数据标签,Series的字符串表现形式为:索引在左边,值在右边。如果没有指定索引,会自动创建一个0到N-1的整数型索引。
属性: .values
和 .index
In [1]: from pandas import Series, DataFrame
In [2]: import pandas as pd
In [3]: obj = Series([4,6,-3,8])
In [4]: obj
Out[4]:
0 4
1 6
2 -3
3 8
dtype: int64
In [5]: obj.index
Out[5]: RangeIndex(start=0, stop=4, step=1)
In [6]: obj.values
Out[6]: array([ 4, 6, -3, 8], dtype=int64)
Numpy数组运算会保留索引与值之间的链接,可以将Series看成是一个定长的有序字典,因为它是索引值到数据值的一个映射。
可以直接通过字典创建Series:
obj = Series(dict)
Series在算术运算中会自动对齐不同索引的数据。
Series对象本身及其索引都有一个name属性。
Series的索引可以通过赋值的方式就地修改。
DataFrame
DataFrame是一个表格类型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值,字符串,布尔值等)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。
构建DataFrame的方法有很多,最常用的一种是直接传入一个由等长列表或者Numpy数组组成的字典。DataFrame会自动加上索引,且全部会有序排列。
frame = DataFrame(dict)
可以指定列序列
DataFrame(dict, columns=['year', 'state']
DataFrame的列可以获取为一个Series:——frame['year']
等效于frame.year
可以通过位置或名称获取行,比如用索引字段ix——frame.ix['three']
为不存在的列赋值会创建出新列。关键字del
用于删除列
注意:通过索引方式返回的列只是相应数据的++视图++,并不是副本!!
In [1]: from pandas import Series, DataFrame
In [2]: import numpy as np
In [3]: data = DataFrame(np.arange(16).reshape((4,4)),
...: index=['a','b','c','d'],
...: columns=['one','two','three','four'])
In [4]: data
Out[4]:
one two three four
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
d 12 13 14 15
In [5]: data['two']
Out[5]:
a 1
b 5
c 9
d 13
Name: two, dtype: int32
In [6]: data[['three','one']]
Out[6]:
three one
a 2 0
b 6 4
c 10 8
d 14 12
In [7]: data[:2]
Out[7]:
one two three four
a 0 1 2 3
b 4 5 6 7
In [8]: data[data['three'] > 5]
Out[8]:
one two three four
b 4 5 6 7
c 8 9 10 11
d 12 13 14 15
In [9]: data < 5
Out[9]:
one two three four
a True True True True
b True False False False
c False False False False
d False False False False
In [10]: data[data < 5] = 0
In [11]: data
Out[11]:
one two three four
a 0 0 0 0
b 0 5 6 7
c 8 9 10 11
d 12 13 14 15