前言
写给自己,方便以后查阅
正文
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
Series
(1)values和index属性
【1】通过obj.values可以得到Series对象的以为ndarray数组
a = Series([10, 11, 12, 13])
a.values
结果:
array([10, 11, 12, 13], dtype=int64)
【2】obj.index可以得到Series对象的索引(一维)
a = Series([10, 11, 12, 13])
a.index
结果:
RangeIndex(start=0, stop=4, step=1)
(2)Series对象的创建
可由字典来创建,但不常用,因为一般做数据处理的任务都是直接导入的,应该很少自己创建Series和DataFrame对象,但还是提一下。
a = {'name':'xiaoming', 'weight':123}
b = Series(a)
b
结果:
name xiaoming
weight 123
dtype: object
(3)判断Series对象里是否有NAN值
用obj.isnull()来做
a = {'name':'xiaoming', 'weight':123}
row = ['name', 'weight', 'height']
b = Series(a, index=row)
print(b)
b.isnull()
结果:
name xiaoming
weight 123
height NaN
dtype: object
name False
weight False
height True
dtype: bool
DataFrame
(1)创建
data = {'name':['xiaoming','xiaogang'], 'weight':[123, 456], 'height':[178, 187]}
a = DataFrame(data, columns=['name', 'weight', 'height', 'others'], index=[11, 22])
a
结果:
说一下DataFrame对象的属性:df.columns和df.index
分别表示列和行,这么画一下更好理解:
另外,df.values可以返回一个二维ndarry的数组
(2)重新索引reindex
通过df.reindex()可以重新索引,很重要的一点是可以用它来做插值(设置method参数)
a = DataFrame(np.arange(9).reshape((3, 3)), index=['a', 'b', 'c'], columns=['dd', 'ee', 'ff'])
a.head()
结果:
b = a.reindex(['a','b','d','c'], method='ffill')
b
(3)删除
【1】通过del删除列
del a['dd']
a
【2】删除一行/列(.drop)
注意:默认是删除行(axis=0),若想删除列需要设置axis=1
b = a.drop(['b','c']) #删除index为b和c的两行
c = a.drop(['dd','ee'], axis=1) #删除columns为dd和ee的两列
(4)常用索引
【1】索引列/行
【2】df.ix[]
这种方法更灵活地得到一个DataFrame对象的子集
b = a.ix[['a','b'], ['dd', 'ee']]
b
结果: