1. series
series 是一个类数组的数据结构,同时带有标签(lable)或者说索引(index)。
1.1 下边生成一个最简单的series对象,因为没有给series指定索引,所以此时会使用默认索引(从0到n-1)。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# 引入series和dataframe
in [ 17 ]: import pandas as pd
in [ 18 ]: ser1 = series([ 1 , 2 , 3 , 4 ])
in [ 19 ]: ser1
out[ 19 ]:
0 1
1 2
2 3
3 4
dtype: int64
|
1.2 当要生成一个指定索引的series 时候,可以这样:
1
2
3
4
5
6
7
8
9
10
|
# 给index指定一个list
in [ 23 ]: ser2 = series( range ( 4 ),index = [ "a" , "b" , "c" , "d" ])
in [ 24 ]: ser2
out[ 24 ]:
a 0
b 1
c 2
d 3
dtype: int64
|
1.3 也可以通过字典来创建series对象
1
2
3
4
5
6
7
8
9
10
11
|
in [ 45 ]: sdata = { 'ohio' : 35000 , 'texas' : 71000 , 'oregon' : 16000 , 'utah' : 5000 }
in [ 46 ]: ser3 = series(sdata)
# 可以发现,用字典创建的series是按index有序的
in [ 47 ]: ser3
out[ 47 ]:
ohio 35000
oregon 16000
texas 71000
utah 5000
dtype: int64
|
在用字典生成series的时候,也可以指定索引,当索引中值对应的字典中的值不存在的时候,则此索引的值标记为missing,na,并且可以通过函数(pandas.isnull,pandas.notnull)来确定哪些索引对应的值是没有的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
in [ 48 ]: states = [ 'california' , 'ohio' , 'oregon' , 'texas' ]
in [ 49 ]: ser3 = series(sdata,index = states)
in [ 50 ]: ser3
out[ 50 ]:
california nan
ohio 35000.0
oregon 16000.0
texas 71000.0
dtype: float64
# 判断哪些值为空
in [ 51 ]: pd.isnull(ser3)
out[ 51 ]:
california true
ohio false
oregon false
texas false
dtype: bool
in [ 52 ]: pd.notnull(ser3)
out[ 52 ]:
california false
ohio true
oregon true
texas true
dtype: bool
|
1.4 访问series中的元素和索引:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# 访问索引为"a"的元素
in [ 25 ]: ser2[ "a" ]
out[ 25 ]: 0
# 访问索引为"a","c"的元素
in [ 26 ]: ser2[[ "a" , "c" ]]
out[ 26 ]:
a 0
c 2
dtype: int64
# 获取所有的值
in [ 27 ]: ser2.values
out[ 27 ]: array([ 0 , 1 , 2 , 3 ])
# 获取所有的索引
in [ 28 ]: ser2.index
out[ 28 ]: index([u 'a' , u 'b' , u 'c' , u 'd' ], dtype = 'object' )
|
1.5 简单运算
在pandas的series中,会保留numpy的数组操作(用布尔数组过滤数据,标量乘法,以及使用数学函数),并同时保持引用的使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
in [ 34 ]: ser2[ser2 > 2 ]
out[ 34 ]:
a 64
d 3
dtype: int64
in [ 35 ]: ser2 * 2
out[ 35 ]:
a 128
b 2
c 4
d 6
dtype: int64
in [ 36 ]: np.exp(ser2)
out[ 36 ]:
a 6.235149e + 27
b 2.718282e + 00
c 7.389056e + 00
d 2.008554e + 01
dtype: float64
|
1.6 series的自动对齐
series的一个重要功能就是自动对齐(不明觉厉),看看例子就明白了。 差不多就是不同series对象运算的时候根据其索引进行匹配计算。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# ser3 的内容
in [ 60 ]: ser3
out[ 60 ]:
ohio 35000
oregon 16000
texas 71000
utah 5000
dtype: int64
# ser4 的内容
in [ 61 ]: ser4
out[ 61 ]:
california nan
ohio 35000.0
oregon 16000.0
texas 71000.0
dtype: float64
# 相同索引值的元素相加
in [ 62 ]: ser3 + ser4
out[ 62 ]:
california nan
ohio 70000.0
oregon 32000.0
texas 142000.0
utah nan
dtype: float64
|
1.7 命名
series对象本身,以及索引都有一个 name 属性
1
2
3
4
5
6
7
8
9
10
11
12
|
in [ 64 ]: ser4.index.name = "state"
in [ 65 ]: ser4.name = "population"
in [ 66 ]: ser4
out[ 66 ]:
state
california nan
ohio 35000.0
oregon 16000.0
texas 71000.0
name: population, dtype: float64
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://www.cnblogs.com/linux-wangkun/p/5903380.html