创建Series

pandas.Series(data,index,dtype,copy)

常见参数

data:一组数据(ndarray 类型)。
index:数据索引标签,如果不指定,默认从 0 开始。无论我们是否为Series对象指定行索引,一个包含整数0到N-1(这里N是数据的长度)的默认索引将被创建,这种索引被称为位置索引
dtype:数据类型,默认会自己判断。
name:设置名称。
copy:拷贝数据,默认为 False。

常见参数举例

pandas.Series(data, index, dtype, copy) 是一个用于创建 Pandas Series 对象的构造函数。它可以接受多种参数来指定 Series 对象的数据,索引,数据类型和副本选项。
以下是 pandas.Series() 构造函数的参数和示例:

data

Series 数据的输入。可以是列表,NumPy 数组,字典或标量值。例如:

import pandas as pd  
# 从列表创建 
Series s1 = pd.Series([1, 2, 3, 4]) 
print(s1)  
# 从字典创建 
Series s2 = pd.Series({'a': 1, 'b': 2, 'c': 3}) 
print(s2)

输出:

a    1
b    2
c    3
d    4
dtype: int64

10    1
20    2
30    3
40    4
dtype: int64
index

Series 索引的输入。可以是一个标签列表或一个与数据长度相同的数组。例如:

import pandas as pd  
# 使用标签列表创建 
Series s1 = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) print(s1)  
# 使用数组创建 
Series s2 = pd.Series([1, 2, 3, 4], index=[10, 20, 30, 40]) 
print(s2)

输出:

a    1
b    2
c    3
d    4
dtype: int64

10    1
20    2
30    3
40    4
dtype: int64
dtype

Series 数据类型的输入。可以是 NumPy 类型或 Pandas 类型。例如:

import pandas as pd

# 使用 NumPy 数据类型创建 Series
s1 = pd.Series([1, 2, 3, 4], dtype='float32')
print(s1)

# 使用 Pandas 数据类型创建 Series
s2 = pd.Series([1, 2, 3, 4], dtype=pd.StringDtype())
print(s2)

输出:

0    1.0
1    2.0
2    3.0
3    4.0
dtype: float32

0    1
1    2
2    3
3    4
dtype: string
copy

控制是否复制数据。默认为 False,表示不复制原始数据。如果设置为 True,则会创建一个副本。例如:

import pandas as pd

data = [1, 2, 3, 4]
s1 = pd.Series(data)

s2 = pd.Series(data, copy=True)
data[0] = 100  # 修改原始数据

print(s1)
print(s2)

输出:

0    100
1    2
2    3
3    4
dtype: int64

0    1
1    2
2    3
3    4
dtype: int64

在上述代码中,我们创建了一个包含整数的列表并将其用于创建两个 Series 对象。然后,我们将第一个列表元素更改为 100,以模拟原始数据的更改。由于 copy 参数默认为 False,因此 s1 和 s2 都引用了相同的原始数据。因此,当我们更改原始数据时,两个 Series 都受到影响。如果将 copy 参数设置为 True,则会创建副本,并且这种情况下不会发生这种情况。

series基本操作

以下我们展示几种类似ndarray的操作:

import pandas as pd
import numpy as np
s = pd.Series(np.random.randn(4), index=['a', 'b', 'c', 'd'])
print (s)
a    0.989563
b    2.196327
c    0.235339
d    1.296633
dtype: float64
选取数据
  • 前2条数据
s[:2]
a    0.989563
b    2.196327
dtype: float64
  • 第2,3条数据
s[[1,3]]
b    2.196327
d    1.296633
dtype: float64
  • 小于平均值的数据
s[s < s.mean()]
a    0.989563
c    0.235339
dtype: float64

类似字典,Series也可以通过索引值(看作键)来选取元素:

  • 索引值为a的数据
s['a']
0.9895629614490722
  • 索引值为c,d的数据
s[['c','d']]
c    0.235339
d    1.296633
dtype: float64
'c' in s
True
数学运算

Series可以像ndarray一样进行加减乘除幂等数学运算,数学运算会对所有的数值自动执行,不需要写循环来对其中的每一个值进行相同操作。

  • 加法运算
s + 3
a    3.989563
b    5.196327
c    3.235339
d    4.296633
dtype: float64
  • 绝对值运算
np.abs(s)
a    0.989563
b    2.196327
c    0.235339
d    1.296633
dtype: float64

在算术运算中会自动对齐不同索引的数据

s1 = pd.Series([1, 2, 4, 5], index=['a', 'b', 'c', 'd'])
s2 = pd.Series([2, 3, 5, 6], index=['c', 'a', 'b', 'd'])
s1 + s2
a     4
b     7
c     6
d    11
dtype: int64
唯一值

如果想知道Series对象包含多少个不同的元素,可使用unique()函数。其返回结果为一个数组,包含Series去重后的元素:

s3 = pd.Series(data=['a', 'a', 'c', 'd'])
print (s3)
0    a
1    a
2    c
3    d
dtype: object
s3.unique()
array(['a', 'c', 'd'], dtype=object)

unique()函数相似的另一个函数是values_counts(),它可以查看每一个唯一元素的频数:

s3.value_counts()
a    2
d    1
c    1
dtype: int64
转换类型

有时我们在做数据处理时,原始数据的数字是字符串的类型,但是我们又要让它做数学运算。

与ndarray类似,astype()函数可以帮我们解决这个问题:

s4 = pd.Series(data=['1.3', '2.7', '1.4', '2.3'])
print(s4.dtype)
s5 = s4.astype('float32')
print (s5.dtype)
object
float32

Pandas的数据元素包含以下几种类型:
object字符串或混合类型
int整型
float浮点型
datetime时间类型
bool布尔型