本帖最后由 Mr.TR 于 2018-6-9 18:22 编辑
系列(Series)是能够保存任何类型的数据(整数,字符串,浮点数,Python对象等)的一维标记数组。轴标签统称为索引。
Series对象是使用pandas的基础。
Series有如下特点:
- Series对象:一维的,带标签的数组(类似字典的数组)
- Series对象是ndarray数组的派生类型,和数组相比类型没有限制
- Series对象本质上由两个ndarray数组构成,一个数组构成对象的键(index,索引,标签),一个数组构成对象的值(values),键 -> 值
- Numpy中的数组运算和操作都可用于Series对象(Series本质上是ndarray)
- Python字典操作部分可用于Series(Series内部实现的部分)
Pandas系列可以使用以下构造函数创建
[Python] 纯文本查看 复制代码 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] 纯文本查看 复制代码 import pandas as pd
s = pd.Series()
print(s)
执行上面代码,结果如下:
[Python] 纯文本查看 复制代码 import pandas as pd[/font][/color]
[/color][/font]import numpy as np
data = np.array(['a','b','c','d'])
s = pd.Series(data)
print(s)
执行上面代码,结果如下:
这里没有传递任何索引,因此默认情况下,它分配了从 0 到 len(data)-1 的索引,即:0到3
[Python] 纯文本查看 复制代码 import pandas as pd
import numpy as np
data = np.array(['a','b','c','d'])
s = pd.Series(data,index=[100,101,102,103])
print(s)
执行上面代码,结果如下:
[Python] 纯文本查看 复制代码 import pandas as pd
import numpy as np
data = {'a' : 0., 'b' : 1., 'c' : 2.}
s = pd.Series(data)
print(s)
执行上面代码,结果如下:
[Python] 纯文本查看 复制代码 import pandas as pd
import numpy as np
data = {'a' : 0., 'b' : 1., 'c' : 2.}
s = pd.Series(data,index=['b','c','d','a'])
print(s) 执行上面代码,结果如下:
[Python] 纯文本查看 复制代码 import pandas as pd
import numpy as np
s = pd.Series(5, index=[0, 1, 2, 3])
print(s)
执行上面代码,结果如下:
[Python] 纯文本查看 复制代码 g_values = np.arange(5)
g_index = np.arange(9, 4, -1)
g = pd.Series(g_values, index = g_index)
print(g) 执行上面代码,返回结果如下:
[Python] 纯文本查看 复制代码 h = pd.Series(range(10))
print(h)
执行上面代码,结果如下:
2,查询
[Python] 纯文本查看 复制代码 import pandas as pd
import numpy as np
data = {'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] 纯文本查看 复制代码 import pandas as pd
import numpy as np
data = {'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] 纯文本查看 复制代码 import pandas as pd
import numpy as np
data = {'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,逆序
执行上面代码,结果如下:
[Python] 纯文本查看 复制代码 import pandas as pd
import numpy as np
s = pd.Series([100,25,59,90,61],index=['ming','hua','hong','huang','bai'])
print(s)
print('**'*10)
print(s>=60)
执行上面代码,结果如下:
[Python] 纯文本查看 复制代码 import pandas as pd
import numpy as np
s = 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] 纯文本查看 复制代码 import pandas as pd
import numpy as np
s = pd.Series([100,25,59,90,61],index=['ming','hua','hong','huang','bai'])
print(s)
print('**'*10)
print(s+100) # 标量运算
执行上面代码,结果如下:
[Python] 纯文本查看 复制代码 import pandas as pd
import numpy as np
s = 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] 纯文本查看 复制代码 import pandas as pd
import numpy as np
s = pd.Series([100,25,59,90,61],index=['ming','hua','hong','huang','bai'])
print(s)
print('**'*10)
res = 'hua' in s
print(res)
print('**'*10)
print(s.get('bai', 80))
print(s.get('hei', 80))
执行上面代码,结果如下:
3,修改
[Python] 纯文本查看 复制代码 import pandas as pd
import numpy as np
s = pd.Series([100,25,59,90,61],index=['ming','hua','hong','huang','bai'])
print(s)
print('**'*10)
s['ming'] = 0
print(s)
执行上面代码,结果如下:
[Python] 纯文本查看 复制代码 import pandas as pd
import numpy as np
s = pd.Series([100,25,59,90,61],index=['ming','hua','hong','huang','bai'])
print(s)
print('**'*10)
s['ming', 'hua'] = 0
print(s)
print('**'*10)
s['ming', 'hua'] = [30, 40]
print(s)
执行上面代码,结果如下:
[Python] 纯文本查看 复制代码 import pandas as pd
import numpy as np
s = 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)
执行上面代码,结果如下:
|
|