本文是对《利用Python进行数据分析》的pandas内容的一个回顾性总结,将围绕下面目录进行展开。
目录
Series
定义
Series是一种类似于一维数组的对象,它由一组数据(各种Numpy数据类型)以及与之相关的数据标签(即索引)组成。
对于Series,无论是否显示创建了索引,pandas都会自动创建一个0到N-1的整数索引
例子
obj2=Series([4,7,-5,3],index=['d','b','a','c'])
print(obj2['d']) # 指定索引的取值
print(obj2[:2]) # 利用整数索引的取值
输出
4
d 4
b 7
缺失数据
当指定了索引却无法找到匹配值时,默认会用NaN来作为缺失值填充。例子
sdata={'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}
states=['California','Ohio','Oregon','Texas'] #
obj4=Series(sdata,index=states) # 这个是按照index里对应的states的值来,对于sdata里面没有对应index,则给states里对应的key赋值NaN 了
print(obj4)
输出 :
California NaN
Ohio 35000.0
Oregon 16000.0
Texas 71000.0
dtype: float64
DataFrame
定义
DataFrame是一个表格型的数据结构,它含有一组有序的序列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,可以看成是由Series组成的字典(共用同一个索引)。 类似Series,都会自动加上整数索引。
例子
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)
print(frame)
输出
pop state year
0 1.5 ohio 2000
1 1.7 Ohio 2001
2 3.6 Ohio 2002
3 2.4 Nevada 2001
4 2.9 Nevada 2002
构造函数能接受的数据列表
取值
按选取的列排序
如要求各列按year,state,pop的顺序排列
DataFrame(data,columns=['year','state','pop']) #可以columns中指定列的排列的顺序
取某列的值可以用data['columnA'] 的方式也可以用data.columnA
给列赋值,三种需要注意的情况
frame2['debt']=16.5 # 这个单个值时会通过”广播“给整个列都赋值同一个值
print(frame2)
frame2['debt']=np.arange(5.) #将列表或者数组 赋值给某个列时,注意需要同这列的长度一样
print(frame2)
print('\n')
val=Series([-1.2,-1.5,-1.7],index=['two','four','five'])
frame2['debt']=val # 如果给某列赋值的是一个Series,则会相当于将这列原来的值全部删除,然后精确匹配索引给对应的值,对于给的Series中没有值的情况,则会赋值为NaN (注意 并不会保留原来的值)!!!。
print("赋值一个Series给存在的列\n{}".format(frame2))
frame2['dd']=val # 对于原本不存在的列,则其实也相当于给存在的列赋值一样,也是重新给值,不存在的值的索引则给NaN
print("赋值一个Series给 本不 存在的列\n{}".format(frame2))
列的删除
del 列a, 例子
# 列的 删除用 del
del frame2['estern']
选取行
print(frame2.ix['three'] # dataframe的行可以通过位置或名称的方式进行获取,比如用索引字段ix )
print(frame2.loc['three'] )# loc for label based indexing 即字符串类型类似label的index
print(frame2.iloc[2] )# 整型的index,这个是用于取数据的时候用,虽然在表中实际并不存在,2即第2+1行
参考与鸣谢:
《利用python进行数据分析》