当使用 Pandas 处理数据的时候,我们经常需要沿着某一维度完成各种操作,而这时候就需要使用到 axis
参数。axis=0
表示沿着行的方向操作,axis=1
表示沿着列的方向操作。
下面详细介绍在 Pandas 中使用 axis=0
和 axis=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 的函数一起使用,可以实现更丰富的数据分析和处理需求。