系列(Series)
是能够保存任何类型的数据(整数,字符串,浮点数,Python对象等)的一维标记数组。轴标签统称为索引。
Series对象是使用pandas的基础。
Series有如下特点:
- Series对象:一维的,带标签的数组(类似字典的数组)
- Series对象是ndarray数组的派生类型,和数组相比类型没有限制
- Series对象本质上由两个ndarray数组构成,一个数组构成对象的键(index,索引,标签),一个数组构成对象的值(values),键 -> 值
- Numpy中的数组运算和操作都可用于Series对象(Series本质上是ndarray)
- Python字典操作部分可用于Series(Series内部实现的部分)
Pandas
系列可以使用以下构造函数创建
[Python]
纯文本查看
复制代码
1 | pandas.Series( data, index, dtype, copy) |
构造函数的参数如下:
| 编号 | 参数 | 描述 |
| 1 | data | 数据采取各种形式,如:ndarray,list,constants |
| 2 | index | 索引值必须是唯一的和散列的,与数据的长度相同。 默认np.array(n) 如果没有索引被传递。 |
| 3 | dtype | dtype 用于数据类型。如果没有,将推断数据类型 |
| 4 | copy | 复制数据,默认为false |
可以使用各种输入创建一个系列,如
- 数组
- 字典
- 标量值或常数
Series对象的操作
1,创建
- 创建一个空系列
[Python]
纯文本查看
复制代码
1 2 3 | import pandas as pds = pd.Series()print(s) |
执行上面代码,结果如下:
- 从ndarray创建一个系列(无索引)
[Python]
纯文本查看
复制代码
1 2 3 4 5 | import pandas as pd[/font][/color][/color][/font]import numpy as npdata = np.array(['a','b','c','d'])s = pd.Series(data)print(s) |
执行上面代码,结果如下:
这里没有传递任何索引,因此默认情况下,它分配了从 0 到 len(data)-1
的索引,即:0到3
- 从ndarray创建一个系列(有索引)
[Python]
纯文本查看
复制代码
1 2 3 4 5 | import pandas as pdimport numpy as npdata = np.array(['a','b','c','d'])s = pd.Series(data,index=[100,101,102,103])print(s) |
执行上面代码,结果如下:
- 从字典创建一个系列(字典的键用于构建索引)
[Python]
纯文本查看
复制代码
1 2 3 4 5 | import pandas as pdimport numpy as npdata = {'a' : 0., 'b' : 1., 'c' : 2.}s = pd.Series(data)print(s) |
执行上面代码,结果如下:
[Python]
纯文本查看
复制代码
1 2 3 4 5 | import pandas as pdimport numpy as npdata = {'a' : 0., 'b' : 1., 'c' : 2.}s = pd.Series(data,index=['b','c','d','a'])print(s) |
- 从标量创建一个系列
[Python]
纯文本查看
复制代码
1 2 3 4 | import pandas as pdimport numpy as nps = pd.Series(5, index=[0, 1, 2, 3])print(s) |
执行上面代码,结果如下:
- 其他方式创建系列
[Python]
纯文本查看
复制代码
1 2 3 4 | g_values = np.arange(5)g_index = np.arange(9, 4, -1)g = pd.Series(g_values, index = g_index)print(g) |
[Python]
纯文本查看
复制代码
1 2 | h = pd.Series(range(10))print(h) |
执行上面代码,结果如下:
2,查询
- index和value查询
[Python]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 | import pandas as pdimport numpy as npdata = {'a' : 0., 'b' : 1., 'c' : 2.}s = pd.Series(data,index=['b','c','d','a'])print(s)print('**'*10)print(s.values)print('**'*10)print(s.index)print('**'*10)print(s.index[2])print('**'*10)print(s.index.values) |
- 索引查询
[Python]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 | import pandas as pdimport numpy as npdata = {'a' : 0., 'b' : 1., 'c' : 2.}s = pd.Series(data,index=['b','c','d','a'])print(s)print('**'*10)# 查询单值print(s[1]) # 位置索引,默认,自动生成,和自定义索引并存print('**'*10)print(s['a']) # 标签索引,自定义索引print('**'*10)print(s.d) # 方法调用print('**'*10)# 查询多值print(s[[0,3]])print('**'*10)print(s[['a', 'd']]) |
执行上面代码,结果如下:
- 切片
[Python]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 | import pandas as pdimport numpy as npdata = {'a' : 0., 'b' : 1., 'c' : 2., 'f': 12., 'q': 3.4, 'y': 5.6}s = pd.Series(data,index=['b','c','d','a','f','q','y','e'])print(s)print('**'*10)print(s[:4]) # 位置切片,默认索引,左闭右开print('**'*10)print(s[:'q']) # 标签切片,自定义索引, 注意:两边都闭区间(因为使用标签索引时通常不知道标签顺序,很难确定结束前一个标签是什么)print('**'*10)print(s['f':])print('**'*10)print(s[::2])print('**'*10)print(s[::-1]) #步长-1,逆序 |
执行上面代码,结果如下:
- 类似ndarray的数组运算
[Python]
纯文本查看
复制代码
1 2 3 4 5 6 7 | import pandas as pdimport numpy as nps = pd.Series([100,25,59,90,61],index=['ming','hua','hong','huang','bai'])print(s)print('**'*10)print(s>=60) |
执行上面代码,结果如下:
[Python]
纯文本查看
复制代码
1 2 3 4 5 6 7 8 | import pandas as pdimport numpy as nps = pd.Series([100,25,59,90,61],index=['ming','hua','hong','huang','bai'])print(s)print('**'*10)print(s['hua']>60)print(s['ming']>60) |
执行上面代码,结果如下:
[Python]
纯文本查看
复制代码
1 2 3 4 5 6 7 | import pandas as pdimport numpy as nps = pd.Series([100,25,59,90,61],index=['ming','hua','hong','huang','bai'])print(s)print('**'*10)print(s+100) # 标量运算 |
执行上面代码,结果如下:
[Python]
纯文本查看
复制代码
1 2 3 4 5 6 7 8 | import pandas as pdimport numpy as nps = pd.Series([100,25,59,90,61],index=['ming','hua','hong','huang','bai'])print(s)print('**'*10)print(np.median(s)) # 应用函数 , 获取中位数print(s.median()) # 方法调用的写法 |
执行上面代码,结果如下:
- 类似字典的操作
[Python]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 11 | import pandas as pdimport numpy as nps = pd.Series([100,25,59,90,61],index=['ming','hua','hong','huang','bai'])print(s)print('**'*10)res = 'hua' in sprint(res)print('**'*10)print(s.get('bai', 80))print(s.get('hei', 80)) |
执行上面代码,结果如下:
3,修改
[Python]
纯文本查看
复制代码
1 2 3 4 5 6 7 8 | import pandas as pdimport numpy as nps = pd.Series([100,25,59,90,61],index=['ming','hua','hong','huang','bai'])print(s)print('**'*10)s['ming'] = 0print(s) |
执行上面代码,结果如下:
[Python]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 11 | import pandas as pdimport numpy as nps = pd.Series([100,25,59,90,61],index=['ming','hua','hong','huang','bai'])print(s)print('**'*10)s['ming', 'hua'] = 0print(s)print('**'*10)s['ming', 'hua'] = [30, 40]print(s) |
执行上面代码,结果如下:
[Python]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 11 | import pandas as pdimport numpy as nps = pd.Series([100,25,59,90,61],index=['ming','hua','hong','huang','bai'])print(s)print('**'*10)s.index = ['xiaoming','xiaohua','xiaohong','xiaohuang','xiaobai'] # 索引修改print(s)print('**'*10)s.index.values[2] = 'laoli'print(s) |
执行上面代码,结果如下:
更多免费技术资料可关注:annalin1203