首页 > 编程笔记 > Python笔记 阅读:16

Pandas DataFrame对象的用法(非常详细)

Pandas 是 Python 数据分析中重要的库,而 Series 和 DataFrame 是 Pandas 库中两个重要的对象,也是 Pandas 中两个重要的数据结构
本节将主要介绍 DataFrame 对象。DataFrame 对象是 Pandas 库中的一种数据结构,它是由多种类型的列组成的二维表数据结构,类似于 Excel、SQL 或 Series 对象构成的字典。

DataFrame 是最常用的 Pandas 对象,与 Series 对象一样支持多种类型的数据。

图解DataFrame对象

DataFrame 对象是一个二维表数据结构,是由行和列数据组成的表格。

DataFrame 对象既有行索引,又有列索引,可以看作是由 Series 对象组成的,只不过这些 Series 对象共用一个索引,如下图所示。


图 1 图解DataFrame对象(学生成绩表)

处理 DataFrame 对象数据时,用 index 表示行,用 columns 表示列更直观。用这种方式迭代 DataFrame 对象的列,代码更易读懂。

【实例 1】首先创建 DataFrame 对象,然后使用 for 循环遍历 DataFrame 对象数据,输出成绩表的每一列数据,程序代码如下:
# 导入pandas模块
import pandas as pd
# 解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.east_asian_width', True)

# 创建列表
data = [[110,105,99],[105,88,115],[109,120,130]]
index = [0,1,2]
columns = ['语文','数学','英语']
# 创建DataFrame对象,即表格数据
df = pd.DataFrame(data=data, index=index,columns=columns)
print(df)

# 遍历DataFrame对象的每一列
for col in df.columns:
    series = df[col]
    print(series)
运行程序,结果如下图所示:


图 2 遍历DataFrame对象数据


从运行结果得知:第一组数据为原始数据,即 DataFrame 对象,其余数据其实是 Series 对象,这也更进一步说明了 DataFrame 对象是由 Series 对象组成的。那么,Pandas 为什么要提供这两种数据结构呢?其主要目的就是使代码易读,使操作更加方便。

创建DataFrame对象

创建 DataFrame 主要使用 Pandas 的 DataFrame 类,语法如下:
pandas.DataFrame(data,index,columns,dtype,copy)

表:数据类型对应表
Pandas dtype Python type
object str
int64 int
float64 float
bool bool
datetime64 datetime64[ns]
timedelta[ns] NA
category NA

下面通过两种方法来创建 DataFrame 对象,即通过列表和字典。

1) 通过列表创建DataFrame对象

【实例 2】通过列表创建成绩表,包括语文、数学和英语,程序代码如下:
# 导入pandas模块
import pandas as pd
# 解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.east_asian_width', True)
# 创建列表
data = [[110,105,99],[105,88,115],[109,120,130]]
columns = ['语文','数学','英语']
# 创建DataFrame对象
df = pd.DataFrame(data=data, columns=columns)
print(df)
运行程序,结果如下图所示:


图 3 通过列表创建成绩表

2) 通过字典创建DataFrame对象

通过字典创建 DataFrame 对象,需要注意,字典中的 value 值只能是一维数组或简单的单个数据,如果是数组,则要求所有数组的长度一致;如果是单个数据,则每行都要添加相同的数据。

【实例 3】通过字典创建成绩表,项目包括语文、数学、英语和班级,程序代码如下:
# 导入pandas模块
import pandas as pd
# 解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.east_asian_width', True)
# 通过字典创建DataFrame对象
df = pd.DataFrame({
    '语文':[110,105,99],
    '数学':[105,88,115],
    '英语':[109,120,130],
    '班级':['高一7班','高一7班','高一7班']
})
print(df)
运行程序,结果如下图所示:


图 4 通过字典创建成绩表

在上述代码中,“班级”的 value 值是单个数据,所以为每行都添加了相同的数据“高一7班”。

DataFrame对象的重要属性和函数

DataFrame 对象是 Pandas 模块的一个重要对象,它的属性和函数非常之多。

下面先简单介绍几个重要且常用的属性如下表所示:

表:重要属性
属性 描述 举例
values 查看所有元素的值 df.values
dtypes 查看所有元素的类型 df.dtypes
index 查看所有行名,重命名行名 df.index
columns 查看所有列名,重命名列名 df.columns
T 行列数据转换 df.T
head 查看前 n 条数据,默认 5 条 df.head() df.head(10)
tail 查看后 n 条数据,默认 5 条 df.tail() df.tail(10)
shape 查看行数和列数,[0] 表示行 [1] 表示列 df.shape[0] w df.shape[1]
info 查看索引、数据类型和内存信息 df.info

DataFrame 对象常用的函数如下表所示:

函数 描述 举例
describe 查看每一列的统计汇总信息 df.describe()
count 返回每一列中的非空值个数 df.count()
sum 返回每一列的和,无法计算返回空值 df.sum()
max 返回每一列的最大值 df.max()
min 返回每一列的最小值 df.min()
argmax 返回某一列(Series 对象)的最大值所在的自动索引位置 df['销量'].argmax()
argmin 返回某一列(Series 对象)的最小值所在的自动索引位置 df['销量'].argmin()
idxmax 返回最大值所在的自定义索引位置 df.idxmax()
idxmin 返回最小值所在的自定义索引位置 df.idxmin()
mean 返回每一列的平均值 df.mean()
median 返回每一列的中位数(中位数又称中值,是统计学专有名词,是指按顺序排列的一组数据中居于中间位置的数) df.median()
var 返回每一列的方差(方差用于度量单个随机变量的离散程度(不连续程度)) df.var()
std 返回每一列的标准差(标准差是方差的算术平方根,反映数据集的离散程度) df.std()
isnull 检查df中的空值,空值为 True,否则为 False,返回布尔型数组 df.isnull()
notnull 检查df中的空值,非空值为 True,否则 False,返回布尔型数组 df.notnull()

相关文章