Series和DataFrame是Pandas的两个重要的数据结构类型,本次我们将重点围绕这两个数据结构来展开讲解

Pandas Series入门教程

Series 结构,也称 Series 序列,是 Pandas 常用的数据结构之一,它是一种类似于一维数组的结构,由一组数据值(value)和一组标签组成,其中标签与数据值之间是一一对应的关系。

Series 可以保存任何数据类型,比如整数、字符串、浮点数、Python 对象等,它的标签默认为整数,从 0 开始依次递增。Series 的结构图,如下所示:

python 怎么用一个series的值赋给另一个series python中的series_pandas

创建Series对象

Pandas 使用 Series()  函数来创建 Series 对象,通过这个对象可以调用相应的方法和属性,从而达到处理数据的目的:



import pandas as pd
s=pd.Series( data, index, dtype, copy)

参数说明如下所示:
 

参数名称

描述

data

输入的数据,可以是列表、常量、ndarray 数组等。

index

索引值必须是惟一的,如果没有传递索引,则默认为 np.arrange(n)。

dtype

dtype表示数据类型,如果没有提供,则会自动判断得出。

copy

表示对 data 进行拷贝,默认为 False。

ndarray创建Series对象

ndarray 是 NumPy 中的数组类型,当 data 是 ndarry 时,传递的索引必须具有与数组相同的长度。假如没有给 index 参数传参,在默认情况下,索引值将使用是 range(n) 生成,其中 n 代表数组长度,如下所示:

 

[0,1,2,3…. range(len(array))-1]

使用默认索引,创建 Series 序列对象:


 

import pandas as pd
import numpy as np
data = np.array(['a','b','c','d'])
s = pd.Series(data)
print (s)
输出结果如下:
0   a
1   b
2   c
3   d
dtype: object

上述示例中没有传递任何索引,所以索引默认从 0 开始分配 ,其索引范围为 0 到len(data)-1,即 0 到 3。这种设置方式被称为“隐式索引”。

除了上述方法外,你也可以使用“显式索引”的方法定义索引标签,示例如下:



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)
输出结果:
100  a
101  b
102  c
103  d

dict创建Series对象

您可以把 dict 作为输入数据。如果没有传入索引时会按照字典的键来构造索引;反之,当传递了索引时需要将索引标签与字典中的值一一对应。

下面两组示例分别对上述两种情况做了演示。

示例1,没有传递索引时:



import pandas as pd
import numpy as np
data = {'a' : 0., 'b' : 1., 'c' : 2.}
s = pd.Series(data)
print(s)
输出结果:

a 0.0
b 1.0
c 2.0
dtype: float64

示例 2,为index参数传递索引时:



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)
输出结果:

b 1.0
c 2.0
d NaN
a 0.0
dtype: float64

当传递的索引值无法找到与其对应的值时,使用 NaN(非数字)填充。

4) 标量创建Series对象

如果 data 是标量值,则必须提供索引,示例如下:



import pandas as pd
import numpy as np
s = pd.Series(5, index=[0, 1, 2, 3])
print(s)
输出如下:

0  5
1  5
2  5
3  5
dtype: int64

python 怎么用一个series的值赋给另一个series python中的series_数据_02

 

Series常用属性

下面我们介绍 Series 的常用属性和方法。在下表列出了 Series 对象的常用属性。
 

名称

属性

axes

以列表的形式返回所有行索引标签。

dtype

返回对象的数据类型。

empty

返回一个空的 Series 对象。

ndim

返回输入数据的维数。

size

返回输入数据的元素数量。

values

以 ndarray 的形式返回 Series 对象。

index

返回一个RangeIndex对象,用来描述索引的取值范围。

Series查看数据常用方法

1 head()&tail()查看数据

2  isnull()&nonull()检测缺失值

isnull() 和 nonull() 用于检测 Series 中的缺失值。所谓缺失值,顾名思义就是值不存在、丢失、缺少。

同 Series 一样,DataFrame 自带行标签索引,默认为“隐式索引”即从 0 开始依次递增,行标签与 DataFrame 中的数据项一一对应。上述表格的行标签从 0 到 5,共记录了 5 条数据(图中将行标签省略)。当然你也可以用“显式索引”的方式来设置行标签。

  • isnull():如果为值不存在或者缺失,则返回 True。
  • notnull():如果值不存在或者缺失,则返回 False。

认识DataFrame结构

  • DataFrame 一个表格型的数据结构,既有行标签(index),又有列标签(columns),它也被称异构数据表,所谓异构,指的是表格中每列的数据类型可以不同,比如可以是字符串、整型或者浮点型等。其结构图示意图,如下所示:

python 怎么用一个series的值赋给另一个series python中的series_数据类型_03

  • 表格中展示了某个销售团队个人信息和绩效评级(rating)的相关数据。数据以行和列形式来表示,其中每一列表示一个属性,而每一行表示一个条目的信息。

    下表展示了上述表格中每一列标签所描述数据的数据类型,如下所示:

Column

Type

name

String

age

integer

gender

String

rating

Float

  • DataFrame 的每一行数据都可以看成一个 Series 结构,只不过,DataFrame 为这些行中每个数据值增加了一个列标签。因此 DataFrame 其实是从 Series 的基础上演变而来。在数据分析任务中 DataFrame 的应用非常广泛,因为它描述数据的更为清晰、直观。

    通过示例对  DataFrame 结构做进一步讲解。 下面展示了一张学生成绩表,如下所示:

python 怎么用一个series的值赋给另一个series python中的series_数据_04

  • DataFrame 结构类似于 Execl 的表格型,表格中列标签的含义如下所示:
  • Regd.No:表示登记的序列号
  • Name:学生姓名
  • Marks:学生分数

 

常用属性和方法汇总

DataFrame 的属性和方法,与 Series 相差无几,如下所示:

 

 

名称

属性&方法描述

T

行和列转置。

axes

返回一个仅以行轴标签和列轴标签为成员的列表。

dtypes

返回每列数据的数据类型。

empty

DataFrame中没有数据或者任意坐标轴的长度为0,则返回True。

ndim

轴的数量,也指数组的维数。

shape

返回一个元组,表示了 DataFrame 维度。

size

DataFrame中的元素数量。

values

使用 numpy 数组表示 DataFrame 中的元素值。

head()

返回前 n 行数据。

tail()

返回后 n 行数据。

shift()

将行或列移动指定的步幅长度

数据的基本统计分析

基本的统计分析函数

适用于Series和DataFrame类型

方法

说明

.sum()

计算数据的总和,按0轴计算,下同

.count()

非Nan值得数量

.mean() .median()

计算数据的算术平均值、算术中位数

.var() .std()

计算数据的方差、标准差

.min() .max()

计算数据的最小值、最大值

适用于Series类型

方法

说明

.argmin() .argmax()

计算数据最大值、最小值所在位置的索引位置(自动索引)

.idxmin() .idxmax()

计算数据最大值、最小值所在位置的索引(自定义索引)

适用于Series和DataFrame类型

 方法

说明 

.describe()

针对0轴(各列)的统计汇总

数据的累计统计分析

累计统计分析函数

适用于Series和DataFrame类型,累计计算

方法

说明

.cumsum()

依次给出前1、2、… 、n个数的和

.cumprod()

依次给出前1、2、… 、n个数的积

.cummax()

依次给出前1、2、… 、n个数的最大值

.cummin()

依次给出前1、2、… 、n个数的最小值

适用于Series和DataFrame类型,滚动计算(窗口计算)

方法

说明

.rolling(w).sum()

依次计算相邻w个元素的和

.rolling(w).mean()

依次计算相邻w个元素的算术平均值

.rolling(w).var()

依次计算相邻w个元素的方差

.rolling(w).std()

依次计算相邻w个元素的标准差

.rolling(w).min() .max()

依次计算相邻w个元素的最小值和最大值