pandas中Series数组创建方法

import numpy as np
import pandas as pd

ar = np.random.rand(5)
# s = pd.Series(ar)
s = pd.Series(ar, index = list("abcde"))
print(s)
print(type(s))

print("-------------")
print(s.index, type(s.index))  # index查看Series索引,当构造Series对象时没有提供index参数,s.index类型为rangeindex
print(s.values, type(s.values))  # values查看Series值,类型是ndarray 

核心:相比于ndarray,Series是一个自带索引index的数组—>一维数组 + 对应索引,所以当只看Series的值的时候,就是一个ndarray。另外的,两者的索引切片功能差别不大,Series与dict相比,更像一个有顺序的字典(dict本身不存在字典),其索引原理和字典相似(一个用key,一个用index)

Series创建方法一:由字典创建,字典的key就是index,values就是values

d = {"a":1, "b":2, "c":3}
s = pd.Series(d)
s.name = "test"
s.rename("test1")  # 不会改变原series,返回新的Series
print(s)

方法二,通过一维数组创建

ar = ["jack", "tom", "sam"]
s = pd.Series(ar, index = list("abc"))  # index可以自己定义
print(s)

方法三 通过标量创建

s = pd.Series(100, index = range(4))
print(s)
print("------------")
s = pd.Series(100, index = list(range(4)))
print(s)
print(s.add(1))

下面将介绍Series数组的索引方法

下标索引

s = pd.Series(np.random.rand(10))
print(s)
print(s[5], type(s[6]), s[7].dtype)

标签索引

s = pd.Series(np.random.rand(5), index = list("abcde"))                                 
                                             
print(s)
print(s["a"], type(s["a"]), s["a"].dtype)
# type对应的是数据类型,dtype对应的是值的类型

print(s[["b", "a", "c"]])  
# 如果需要选择多个标签的值,用[[]]来表示(相当于[]中包含一个列表)
# 多标签索引结果是新的数据,即生成新的数组,同时它的顺序可以根据自己的安排更改

切片索引

s1 = pd.Series(np.random.rand(5))  
s2 = pd.Series(np.random.rand(5), index = list("abcde"))

print(s1)
print(s2)
print()

print(s1[1:4], s1[4])  # 下标,另外的,下标是左闭右开的
print(s2["a":"c"], s2["c"])  # 标签,另外的当使用index做切片的时候,是末端包含的
print()
print(s2[0:3], s2[3])
# 注意:访问数组,可以使用下标,也可以使用标签,但是当数组有标签的时候,尽量使用标签

布尔索引, 类似于前面的数组

s = pd.Series(np.random.rand(5) * 100, index = [0,1,2,3,4])
s[6] = None  # 当上面定义了index = list("abcde")的时候,这里将会报错。IndexError: index 5 is out of bounds for axis 0 with size 5
print(s)
print("-------------")
s = pd.Series(np.random.rand(5) * 100, index = list("abcde"))
s["6"] = None  # 下标赋值
print(s)

 0    5.83786
1    14.4434
2    54.5672
3    59.5865
4    20.9863
6       None
dtype: object
-------------
a    33.9792
b    21.8953
c    72.4662
d    86.1862
e    12.2518
6       None
dtype: object
#  注意:这里有一个坑,index为数值类型的时候,s[6] = None不会报错,因为这里表示的是使用索引向数组添加值
# s[3] = None ,不会报错,但是这里是根据下标更改对应的value

# 当index为字符(串)类型的时候,s[6] = None会直接报错,因为这里不是用索引添加,而是用下标修改对应位置的value,
# 但是一维数组的元素个数没有那么长,就会报错。但是s["6"]就不会报错,因为这里是使用索引添加,

# 综上,我们可以使用索引添加,而不能使用下标添加内容
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值