series是具有标签的(也就是具有索引的)一维矢量。frame是一个行和列都具有标签的表格,frame的每一列都是一个series。
from pandas import Series, Dataframe
import pandas as pd
series
- 由一组数据产生:
obj = Series([4, 7, -5, 3])
- 获取数组表示形式和索引对象:
obj.values
obj.index
- 创建的Series带有一个可以对各个数据点进行标记的索引:
obj2 = Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c'])
- 通过索引的方式选取Series中的单个或一组值:
obj2['a']
obj2['c', 'a', 'd']
In[]: 'b' in obj2
Out[]: True- 用字典创建Series:
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
obj3 = Series(sdata) - 不将原字典的键作为索引,通过自定义index查找字典中对应的值,构建Series。如键’California’在字典data中找不到对应的值,便为NaN:
states = ['California', 'Ohio', 'Oregon', 'Texas']
obj4 = Series(data, index=states) - 检测缺失数据:
pd.isnull(obj4) pd.notnull(obj4)
- 按照索引对齐相加,都有合并相加,无则为NaN:
obj3 + obj4
- Series对象本身及其索引的name属性:
obj4.name = 'population'
obj4.index.name = 'state' - 赋值方式修改Series的索引:
obj.index = ['Bob', 'Steve', 'Jeff', 'Ryan']
DataFrame
- 传入字典构建DataFrame
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'], 'year': [2000, 2001, 2002, 2001, 2002], 'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
frame = DataFrame(data) - DataFrame的列按照指定顺序进行排列
DataFramef(data, columns=['year', 'state', 'pop'])
如果传入的列在数据中找不到,就会产生NaN值
DataFramef(data, columns=['year', 'state', 'pop', 'debt'], index=['one', 'two', 'three', 'four', 'five'])
- DataFrame的列获取:
frame2['state'] frame.year
- DataFrame对象的行获取:
fram2.ix['three']
- 通过赋值的方式修改列值:
frame2['debt'] = 16.5
- 给DateFrame对象的列赋Series对象进行精确匹配:
val = Series([-1.2, -1.5, -1.7], index=['two', 'four', 'five'])
frame2['debt'] = val
- 为不存在的列赋值会创建出一个新列:
frame2['eastern'] = frame2.state == 'Ohio'
- 用关键字
删除列:
del frame['eastern']
- 嵌套字典创建DataFrame:
pop = {'Nevada': {2001: 2.4, 2002: 2.9}, 'Ohio':{2000: 1.5, 2001: 1.7, 2002: 3.6}}
frame3 = DataFrame(pop)
DataFrame(pop, index=[2001, 2002, 2003])
- DataFrame转置:
frame3.T
- DataFrame索引:
frame3['Ohio'][:-1] frame3['Nevada'][:2]
- 设置DataFrame的index和columns的name属性:
frame3.index.name = 'year'
frame3.columns.name = 'state'
- values属性以二维ndarray的形式返回DataFrame中的数据:
frame3.values
- index对象是不可修改的。