一种类似于一维数组的对象,由数据和索引组成,当不指定索引时,默认的索引是从0到n-1
import pandas as pd
from pandas
obj = Series([1,2,3,4])
#obj
# 0 1
# 1 2
# 2 3
# 3 4
# dtype: int64
#查询这个series的值
obj.values
# array([1, 2, 3, 4], dtype=int64)
obj.index
# RangeIndex(start=0, stop=4, step=1) [0,1,2,3]
#创建指定索引的series
obj2 = Series([1,2,3,4],index=([10,23,14,45]))
#根据索引选择某个特定元素
obj2[10] #输出为1
# 可以判断这个series是否存在某个索引
10 in obj2 #true
1 in obj2 #false
# 由于series和dict很相似,所以可以直接转化dict为series
dict = {
'a':100,'b':200,'c':300}
obj3 = Series(dict)
#判断数据是否为空
obj3.isnull()
series还有自动对齐索引的功能,就是说对于两个series,会根据相同的索引对数据进行合并。这样可以进行不同series之间的操作。
可以看作是excel表格感觉,不同的列代表不同的属性,每一行表示一个实体(用一个自动的索引标记)
#创建的时候可以看作是一个词典,每个key是每一列的属性名,每一个value是等长的数组,数组的元素就是每一行这个属性对应的值。
data = {
'state':['a','b','c'],'year':[1,2,3], 'pop':[1.1,2.2,3.3]}
df = DataFrame(data)
# state year pop
# 0 a 1 1.1
# 1 b 2 2.2
# 2 c 3 3.3
#按照指定列的排列方式创建
df = DataFrame(data,columns=['state','pop','year'])
#指定索引创建
df = DataFrame(data,columns=['state','pop','year'],index=['one','two','three'])
#获取某一列 注意什么时候加引号,什么时候不加
df['state']
df.state
#获取某个索引对应的数据
df.ix['one']
# 添加某一列
df['hh'] = 'new col' #hh是新的列的名字 这个赋值的长度必须与现有的df的长度相匹配
#嵌套的方式创建df, 内层{}中的key就是索引值
data2 = {
'a':{
2001:2.4,2002:2.5},'b':{
2001:3,2002:4}}
df2 = DataFrame(data2)
df2
# a b
# 2001 2.4 3
# 2002 2.5 4
# 重新索引功能
obj4 = obj2.reindex([10,23,18,25])
#删除指定值
#删除某个索引及其对应的值
obj4.drop(10) #obj4.drop([10,23])
#删除某一列对应的值
df2.drop('two',axis = 1) #删除two这一列 1表示按列删除
data = DataFrame(np.arange(16).reshape((4,4)),index = ['a','b','c','d'],columns = ['one','two','three','four'])
obj = Series(np.arange(4),index = ['a','b','c','d'])
#选取obj的索引 选取切片的时候是闭区间
obj['a'] #obj['b':'c']
#选取data的列
data['two']
#选取data的某一个索引
data.ix[2] #第三行
data.ix[:'b','two'] #a b(前两行)的two这一列
#对series对象进行排序
obj.sort_index() #按索引进行排序
#对dataframe进行排序
data.sort_index()
data.sort_index(axis = 1) #按照列名进行排序
#按照某一列或多个列进行排序
data.sort_index(by='one') #按照one这一列进行排序
data.sort_index*by = ['one','two']
#带有重复值的索引
#判断某个索引是否唯一
obj.index.is_unique
#聚集函数
data.sum() #计算每一列的和(按照行方向)
data.sum(axis=1) #计算每一行的和(按照列方向)
#填充空值
data.fillna(0)
data.fillna({
1:0.5,3:0.1}) #不同列填充不同的值