如何理解pandas库dataframe类型方法里面的axis参数?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
本文解读dataframe
类型的各种方法里面的axis
参数是什么意思,axis
并不是属性,而是经常出现在各种函数方法里面的参数。其实,一句话总结本文的话,axis
就是表述操作的是数据流的运动方向,axis=1
为一列一列推进,axis=0
为一行一行推进。
大家好,这里是苏南大叔的程序如此灵动博客,记录苏南大叔的代码编程感悟。本文描述dataframe
的世界里面,axis
究竟代表着什么意思。测试环境:python@3.11.0
,win10
。
方法综述
在前面的文章里面,对dataframe
里面进行列删除或者列合并操作的时候,都曾经涉及到axis
的概念。参考文章:
总的原则,是表述数据流推进的方向:
axis=1
还可以表述为:axis="columns"
,数据流方向为一列一列(从左到右)推进。axis=0
还可以表述为:axis="index"
,数据流方向为一行一行(从上到下)推进。
为了更好的理解本文的内容,本文还增加了一个.sum()
方法,作用是对某行或某列数据求和。本文共涉及三个方法:
方法名 | 作用 |
---|---|
df.sum() | 求和 |
df.drop() | 删除 |
pd.concat() | 合并 |
范例数据
现在定义了两个dataframe
数据,用于后续的演示:
import pandas as pd
df = pd.DataFrame(
[[1, 2, 3], [3, 2, 1], [5, 6, 7]],
columns=["col1", "col2", "col3"],
index=["row1", "row2", "row3"],
)
print(df)
df2 = pd.DataFrame(
[[0, 0, 0], [5, 5, 5], [9, 9, 9]],
columns=["col1", "col2", "col3"],
index=["row1", "row2", "row3"],
)
print(df2)
输出:
col1 col2 col3
row1 1 2 3
row2 3 2 1
row3 5 6 7
col1 col2 col3
row1 0 0 0
row2 5 5 5
row3 9 9 9
axis=1
/axis="columns"
,水平一列一列推进
axis=1
/axis="columns"
,数据流沿【水平方向】流动,从左到右一列一列推进。
df.sum(axis=1)
是针对每一行求和。df.drop(col, axis=1)
是去掉某一列(或某几列)数据。pd.concat([df, df2], axis=1)
是叠加在右侧的。
测试代码之求每行的和:
print(df.sum(axis=1))
输出结果:
row1 6
row2 6
row3 18
dtype: int64
测试代码之删除某几列:
print(df.drop("col1", axis=1))
print(df.drop(["col1","col2"], axis="columns"))
输出结果:
col2 col3
row1 2 3
row2 2 1
row3 6 7
col3
row1 3
row2 1
row3 7
测试代码之合并到右侧:
print(pd.concat([df, df2], axis=1))
输出为:
col1 col2 col3 col1 col2 col3
row1 1 2 3 0 0 0
row2 3 2 1 5 5 5
row3 5 6 7 9 9 9
axis=0
/axis="index"
,垂直一行一行推进
axis=0
/axis="index"
,数据流沿着【垂直方向】流动,所以:
df.sum(axis=0)
是针对每一列求和。df.drop(index, axis=0)
是删除某一行(或某几行)数据。pd.concat([df, df2], axis=1)
效果是叠加在底部的。
测试代码之求每列的和:
print(df.sum(axis=0))
输出结果:
col1 9
col2 10
col3 11
dtype: int64
测试代码之删除某几行:
print(df.drop("row1", axis=0))
print(df.drop(["row1","row2"], axis="index"))
输出结果:
col1 col2 col3
row2 3 2 1
row3 5 6 7
col1 col2 col3
row3 5 6 7
测试代码之合并到下方:
print(pd.concat([df, df2], axis=0))
输出为:
col1 col2 col3
row1 1 2 3
row2 3 2 1
row3 5 6 7
row1 0 0 0
row2 5 5 5
row3 9 9 9
结束语
苏南大叔的更多python
文章,请点击:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。