一个一维的数据对象,包含一个值序列,还有数据标签(索引,index)。也可以视为一个长度有限且有序的字典,
obj4 = pd.Series(sdata, states)
pd.Series()接收一个数组或者字典,作为实际数据,第二个参数是索引,不显式说明就默认从0开始。
对于缺失值,可以使用isnull和notnull两个函数
# 缺失数据
print(pd.isnull(obj4))
print(pd.notnull(obj4))
print(obj4.notnull())
print(obj4.isnull())
数据对齐特性:一方为nan,计算后也是nan。
Series对象自身和其索引都有name属性:
obj4.name = 'poulation'
obj4.index.name = 'state'
print(obj4.name)
print(obj4.index.name)
print(obj4)
poulation
state
state
Hdf NaN
Ohio 35000.0
Texas 71000.0
Name: poulation, dtype: float64
Series的索引可以通过按位置赋值的方式进行改变。
datefram是矩阵的数据表,包含已排列的列集合。既有行索引也有列索引,可以被视作一个共享相同索引的series的字典。
创建方法:
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame = pd.DataFrame(data)
print(frame)
自动为series分配索引
state year pop
0 Ohio 2000 1.5
1 Ohio 2001 1.7
2 Ohio 2002 3.6
3 Nevada 2001 2.4
4 Nevada 2002 2.9
5 Nevada 2003 3.2
使用.head方法可以读取头部的五行
print(frame.head())
state year pop
0 Ohio 2000 1.5
1 Ohio 2001 1.7
2 Ohio 2002 3.6
3 Nevada 2001 2.4
4 Nevada 2002 2.9
可以指定列的顺序,同时如果列名不在data里,将会用缺失值填充
df_1 = pd.DataFrame(data, columns=['year', 'pop', 'state', 'ks'])
print(df_1)
year pop state ks
0 2000 1.5 Ohio NaN
1 2001 1.7 Ohio NaN
2 2002 3.6 Ohio NaN
3 2001 2.4 Nevada NaN
4 2002 2.9 Nevada NaN
5 2003 3.2 Nevada NaN
可以按照字典型标记或者属性检索series,也就是其中的一列
print(df_1['year'])
print(df_1.year)
0 2000
1 2001
2 2002
3 2001
4 2002
5 2003
Name: year, dtype: int64
列的引用是可以修改的,可以将列赋值为标量值或者值数组,要确保值的长度必须与dataframe的长度保持一致。
如果将series赋值给一列时,回按照dataframe的索引重新排列,并在空缺处填充缺失值
df_1['ks'] = 1.0
print(df_1)
df_1['ks'] = np.arange(6)
print(df_1)
del方法可以用于移除之前新建的列:
del df_1['ks']
print(df_1.columns)
Index(['year', 'pop', 'state'], dtype='object')
从DataFrame中选取的列是数据的视图,而不是拷贝。因此,对Series的修改会映射到DataFrame中。如果需要复制,则应当显式地使用Series的copy方法。
data = df_1['ks'].copy()
print(data)
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
Name: ks, dtype: object
行的选择:可以通过位置或者特殊属性loc选取
print(df_1.loc[2])
year 2002
pop 3.6
state Ohio
ks NaN
Name: 2, dtype: object
除了上面的列表格式,还可以使用嵌套字典的方式:
也可以使用包含series的字典。
pop = {'Nevada': {2001: 2.4, 2002: 2.9},
'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
df_2 = pd.DataFrame(pop)
print(df_2)
print(df_2.T)
Nevada Ohio
2001 2.4 1.7
2002 2.9 3.6
2000 NaN 1.5
2001 2002 2000
Nevada 2.4 2.9 NaN
Ohio 1.7 3.6 1.5
这样最外层的键是列的索引,内层的键是行的索引。可以转置
如果显式指定索引,就不会采用默认的排序
DataFrame的values属性会将包含在DataFrame中的数据以二维ndarray的形式返回:
print(df_2.index)
print(df_2.values)
Index([2001, 2002, 2000], dtype='int64')
[[2.4 1.7]
[2.9 3.6]
[nan 1.5]]
pandas中的索引对象是用于存储轴标签和其他元数据的(例如轴名称或标签)
索引对象是不可变的,