Pandas教程-Python Pandas Series
Pandas Series可以定义为能够存储各种数据类型的一维数组。我们可以轻松地将列表、元组和字典转换为使用“series”方法的系列。系列的行标签称为索引。一个系列不能包含多个列。它有以下参数:
- data: 它可以是任何列表、字典或标量值。
- index: 索引的值应该是唯一且可哈希的。它必须与数据的长度相同。如果我们不传递任何索引,默认的 np.arrange(n) 将被使用。
- dtype: 它指的是系列的数据类型。
- copy: 它用于复制数据。
创建系列:
我们可以通过两种方式创建系列:
1.创建一个空系列
2.使用输入创建系列。
创建一个空系列:
我们可以轻松地在 Pandas 中创建一个空系列,这意味着它将没有任何值。
用于创建空系列的语法:
<series object> = pandas.Series()
下面的例子创建了一个空系列类型对象,它没有值,且有默认的数据类型,即 float64。
示例
import pandas as pd
x = pd.Series()
print (x)
输出
Series([], dtype: float64)
使用输入创建系列:
我们可以使用各种输入创建系列:
- 数组
- 字典
- 标量值
从数组创建系列:
在创建系列之前,首先,我们必须导入 numpy 模块,然后在程序中使用 array() 函数。如果数据是 ndarray,则传递的索引必须与长度相同。
如果我们不传递索引,则默认索引 range(n) 被传递,其中 n 定义了数组的长度,即 [0,1,2,...range(len(array))-1]。
示例
import pandas as pd
import numpy as np
info = np.array(['P','a','n','d','a','s'])
a = pd.Series(info)
print(a)
输出
0 P
1 a
2 n
3 d
4 a
5 s
dtype: object
从字典创建系列
我们也可以从字典创建系列。如果作为输入传递了字典对象且未指定索引,则以排序的顺序取字典键来构造索引。
如果传递了索引,则从 字典 中提取对应特定标签索引的值。
#import the pandas library
import pandas as pd
import numpy as np
info = {'x' : 0., 'y' : 1., 'z' : 2.}
a = pd.Series(info)
print (a)
输出
x 0.0
y 1.0
z 2.0
dtype: float64
使用标量创建系列:
如果我们使用标量值,则必须提供索引。标量值将重复以匹配索引的长度。
#import pandas library
import pandas as pd
import numpy as np
x = pd.Series(4, index=[0, 1, 2, 3])
print (x)
输出
0 4
1 4
2 4
3 4
dtype: int64
通过位置访问系列中的数据:
一旦创建了系列类型对象,你就可以访问其索引、数据,甚至是单个元素。
系列中的数据可以类似于在 ndarray 中那样访问。
import pandas as pd
x = pd.Series([1,2,3],index = ['a','b','c'])
#retrieve the first element
print (x[0])
输出
1
系列对象属性
系列属性定义为与系列对象相关的任何信息,例如大小、数据类型等。以下是一些你可以用来获取系列对象信息的属性:
属性 | 描述 |
---|---|
Series.index | 定义系列的索引。 |
Series.shape | 它返回数据的形状的元组。 |
Series.dtype | 它返回数据的数据类型。 |
Series.size | 它返回数据的大小。 |
Series.empty | 如果系列对象为空,则返回 True,否则返回 false。 |
Series.hasnans | 如果有任何 NaN 值,则返回 True,否则返回 false。 |
Series.nbytes | 它返回数据中的字节数。 |
Series.ndim | 它返回数据的维数。 |
Series.itemsize | 它返回项的数据类型大小。 |
检索系列对象的索引数组和数据数组
我们可以使用属性 index 和 values 检索现有系列对象的索引数组和数据数组。
import numpy as np
import pandas as pd
x=pd.Series(data=[2,4,6,8])
y=pd.Series(data=[11.2,18.6,22.5], index=['a','b','c'])
print(x.index)
print(x.values)
print(y.index)
print(y.values)
输出
RangeIndex(start=0, stop=4, step=1)
[2 4 6 8]
Index(['a', 'b', 'c'], dtype='object')
[11.2 18.6 22.5]
检索类型 (dtype) 和类型大小 (itemsize)
你可以使用属性 dtype 与系列对象一起使用 <objectname> dtype 来检索系列对象单个元素的数据类型,你可以使用 itemsize 属性显示分配给每个数据项的字节数。
import numpy as np
import pandas as pd
a=pd.Series(data=[1,2,3,4])
b=pd.Series(data=[4.9,8.2,5.6],
index=['x','y','z'])
print(a.dtype)
print(a.itemsize)
print(b.dtype)
print(b.itemsize)
输出
int64
8
float64
8
检索形状
系列对象的形状定义了包括缺失或空值(NaN)在内的总元素数。
import numpy as np
import pandas as pd
a=pd.Series(data=[1,2,3,4])
b=pd.Series(data=[4.9,8.2,5.6],index=['x','y','z'])
print(a.shape)
print(b.shape)
输出
(4,)
(3,)
检索维度、大小和字节数:
import numpy as np
import pandas as pd
a=pd.Series(data=[1,2,3,4])
b=pd.Series(data=[4.9,8.2,5.6],
index=['x','y','z'])
print(a.ndim, b.ndim)
print(a.size, b.size)
print(a.nbytes, b.nbytes)
输出
1 1
4 3
32 24
检查空性和 NaN 值的存在
要检查系列对象是否为空,你可以使用 empty 属性。类似地,要检查系列对象是否包含一些 NaN 值,你可以使用 hasans 属性。
示例
import numpy as np
import pandas as pd
a=pd.Series(data=[1,2,3,np.NaN])
b=pd.Series(data=[4.9,8.2,5.6],index=['x','y','z'])
c=pd.Series()
print(a.empty,b.empty,c.empty)
print(a.hasnans,b.hasnans,c.hasnans)
print(len(a),len(b))
print(a.count( ),b.count( ))
输出
False False True
True False False
4 3
3 3
系列函数
以下是一些在系列中使用的函数:
函数 | 描述 |
---|---|
Pandas Series.map() | 将两个系列中具有共同列的值映射。 |
Pandas Series.std() | 计算给定一组数字、DataFrame、列和行的标准偏差。 |
Pandas Series.to_frame() | 将系列对象转换为 dataframe。 |
Pandas Series.value_counts() | 返回一个系列,包含唯一值的计数。 |