杏坛荟 > 详情

高中信息技术python的pandas模块DataFrame中关于axis参数的理解

2024-05-06 17:45

38人阅读 收藏

【疑难问题】

浙教版高中信息技术必修1的“4.2.2编程处理数据”章节的pandas模块中有很多函数需要用到axis参数,该如何去理解这些axis参数?是从行和列的角度去理解吗?又或者要从别的角度来看?本文就尝试来回答这个问题。

【解决思路】

首先说结论:因为pandas是基于numpy模块,故其对axis的理解与numpy模块保持一致,即axis表示数组层级,若axis=i,则沿着第i维的方向进行操作。

一、理解DataFrame(二维的数据结构)

将DataFrame视作是共享同一个index的Series的集合,也可视作像数据库的记录表。如图所示:

举例:

import pandas as pd

s1=pd.Series([4,5,6,3,1])

print(s1)

s2=pd.Series([5,4,3,0,2])

print(s2)

s3=pd.Series([2,3,5,2,7])

print(s3)

df=pd.DataFrame({'Mango':s1,'Apple':s2,'Banana':s3})   #将三个Series对象合并到一个DataFrame对象中

print(df)

二、理解DataFrame常见函数中axis=0/1的使用

由于DataFrame是按列存储的,因此令axis=0代表第1个坐标轴,即y轴;令axis=1代表第2个坐标轴,即x轴。当进行count()、sum()、mean()、max()等聚合类操作时候,当函数参数axis=0时,想像成用“梳子”向y轴方向梳;当函数参数axis=1时,想像成用“梳子”向x轴方向梳。

在进行drop()等非聚合类操作时候,当函数参数axis=0时,想像成y轴方向竖拿着“糖葫芦”吃法,每颗“糖葫芦”代表一行记录;当函数参数axis=1时,想像成x轴方向横拿着“糖葫芦”吃法,每颗“糖葫芦”代表一列字段。

我们发现:对于drop()函数,axis=0指删除行;axis=1指删除列;对于sort_index()函数,axis=0表示按照行名排序,axis=1表示按照列名排序。所以不能简单地认为axis=0表示按列处理,axis=1表示按行处理。正确的理解应该是:axis=0表示按0轴(行)分割,把每一行(一个一维数组)看作是一个整体,然后根据numpy模块整体操作数组的方式来处理;axis=1表示按1轴(列)分割,把每一列(一个一维数组)看作是一个整体,然后根据numpy模块整体操作数组的方式来处理。