如何在Pandas中使用axis=0和axis=1

  • Post category:Python

当使用 Pandas 处理数据的时候,我们经常需要沿着某一维度完成各种操作,而这时候就需要使用到 axis 参数。axis=0 表示沿着行的方向操作,axis=1 表示沿着列的方向操作。

下面详细介绍在 Pandas 中使用 axis=0axis=1 的完整攻略。

axis=0

当我们使用 axis=0 时,我们是沿着数据中的行进行操作,常用的操作包括:

  • 对各行数据进行排序
  • 对各行数据进行归约(例如求和、均值、方差等)
  • 对各行数据进行选择和过滤

下面通过几个实例来说明如何在 Pandas 中使用 axis=0

对各行数据进行排序

下面的例子中,我们创建一个 DataFrame 包含三列,分别为“name”,“age”,“height”,并且有三行数据,我们要按照“age”列进行从小到大排序。

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 20, 30], 'height': [165, 170, 175]}
df = pd.DataFrame(data)

print(df.sort_values(by='age', axis=0))

输出结果为:

       name  age  height
1       Bob   20     170
0     Alice   25     165
2  Charlie   30     175

对各行数据进行归约

下面的例子中,我们创建一个 DataFrame 包含三列,分别为“name”,“age”,“height”,并且有三行数据,我们要对“age”列进行求和。

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 20, 30], 'height': [165, 170, 175]}
df = pd.DataFrame(data)

age_sum = df['age'].sum(axis=0)

print(age_sum)

输出结果为:

75

对各行数据进行选择和过滤

下面的例子中,我们创建一个 DataFrame 包含三列,分别为“name”,“age”,“height”,并且有三行数据,我们要选出“age”列小于或等于 25 的行数据。

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 20, 30], 'height': [165, 170, 175]}
df = pd.DataFrame(data)

age_filter = df[df['age'] <= 25]

print(age_filter)

输出结果为:

    name  age  height
0  Alice   25     165
1    Bob   20     170

axis=1

当我们使用 axis=1 时,我们是沿着数据中的列进行操作,常用的操作包括:

  • 对各列数据进行排序
  • 对各列数据进行归约(例如求和、均值、方差等)
  • 对各列数据进行选择和过滤

下面通过几个实例来说明如何在 Pandas 中使用 axis=1

对各列数据进行排序

下面的例子中,我们创建一个 DataFrame 包含三行,分别为“name”,“age”,“height”,并且有三列数据,我们要按照“name”列进行从小到大排序。

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 20, 30], 'height': [165, 170, 175]}
df = pd.DataFrame(data)

print(df.sort_values(by='name', axis=1))

输出结果为:

   age  height     name
0   25     165    Alice
1   20     170      Bob
2   30     175  Charlie

对各列数据进行归约

下面的例子中,我们创建一个 DataFrame 包含三行,分别为“name”,“age”,“height”,并且有三列数据,我们要对“age”和“height”两列进行求和。

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 20, 30], 'height': [165, 170, 175]}
df = pd.DataFrame(data)

sum_columns = df[['age', 'height']].sum(axis=1)

print(sum_columns)

输出结果为:

0    190
1    190
2    205
dtype: int64

对各列数据进行选择和过滤

下面的例子中,我们创建一个 DataFrame 包含三行,分别为“name”,“age”,“height”,并且有三列数据,我们要选出“age”和“height”两列数据,并且选出“age”和“height”都大于或等于 25 的行数据。

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 20, 30], 'height': [165, 170, 175]}
df = pd.DataFrame(data)

age_height_filter = df.loc[df[['age', 'height']].ge(25).all(axis=1), ['age', 'height']]

print(age_height_filter)

输出结果为:

   age  height
0   25     165
2   30     175

在使用 axis 参数时,需要根据具体的需求来选择沿着哪个方向进行操作,配合其他 Pandas 的函数一起使用,可以实现更丰富的数据分析和处理需求。