A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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 dtypedtype用于数据类型。如果没有,将推断数据类型
4 copy 复制数据,默认为false

可以使用各种输入创建一个系列,如
  • 数组
  • 字典
  • 标量值或常数

Series对象的操作

1,创建
  • 创建一个空系列
   
[Python] 纯文本查看 复制代码
import pandas as pd
s = pd.Series()
print(s)

    执行上面代码,结果如下:
   
  • 从ndarray创建一个系列(无索引)
   
[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

  • 从ndarray创建一个系列(有索引)
   
[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,查询
  • index和value查询
   
[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,逆序

    执行上面代码,结果如下:
   
   

  • 类似ndarray的数组运算
   
   
[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)

    执行上面代码,结果如下:
   




2 个回复

倒序浏览
多谢分享
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马