📜  如何在 Pandas 中使用轴 = 0 和轴 = 1?(1)

📅  最后修改于: 2023-12-03 15:08:43.986000             🧑  作者: Mango

如何在 Pandas 中使用轴 = 0 和轴 = 1?

在 Pandas 中,轴(axis)是对数据进行操作的关键参数之一。轴被用来指定数据集中的哪个维度进行操作,行轴(axis=0)代表沿着行方向进行操作,列轴(axis=1)代表沿着列方向进行操作。本文将介绍如何在 Pandas 中使用轴=0和轴=1。

轴=0和轴=1的使用场景

在 Pandas 中,许多操作都需要明确指定轴参数,这是因为 Pandas 的数据结构(如Series和DataFrame)都是二维的。下面是一些常用的操作场景:

  • 计算每一行/每一列的总和、平均值、最大值、最小值等聚合统计量 (axis=0: 沿着列进行操作 ; axis=1: 沿着行进行操作)
  • 根据行或列的值进行排序 (axis=0: 对列进行排序 ; axis=1: 对行进行排序)
  • 将多个数据集进行合并 (axis=0: 垂直合并,即沿着列增加数据 ; axis=1: 水平合并,即沿着行合并数据)
使用轴=0和轴=1

下面将用一个示例来演示如何在 Pandas 中使用轴=0和轴=1。

import pandas as pd

# 创建一个示例 DataFrame
df = pd.DataFrame({
  'name': ['Alice', 'Bob', 'Charlie', 'David'],
  'age': [25, 32, 18, 47],
  'score1': [85, 90, 73, 64],
  'score2': [79, 83, 91, 87],
})

# 计算每一列的平均值 (axis=0)
mean_axis0 = df.mean(axis=0)
print(mean_axis0)

# 计算每一行的平均值 (axis=1)
mean_axis1 = df.mean(axis=1)
print(mean_axis1)

# 对 DataFrame 按行排序 (axis=1)
sorted_df_by_row = df.sort_values(by='name', axis=1)
print(sorted_df_by_row)

# 对 DataFrame 按列排序 (axis=0)
sorted_df_by_col = df.sort_values(by='name', axis=0)
print(sorted_df_by_col)

# 水平合并两个 DataFrame (axis=1)
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'C': [5, 6], 'D': [7, 8]})
merged_df_by_col = pd.concat([df1, df2], axis=1)
print(merged_df_by_col)

# 垂直合并两个 DataFrame (axis=0)
merged_df_by_row = pd.concat([df1, df2], axis=0)
print(merged_df_by_row)

输出:

age       30.5
score1    78.0
score2    85.0
dtype: float64
0    62.0
1    76.5
2    69.0
3    64.75
dtype: float64
       age  name  score1  score2
0       25     A      85      79
1       32     B      90      83
2       18     C      73      91
3       47     D      64      87
       name  age  score1  score2
0     Alice   25      85      79
2   Charlie   18      73      91
1       Bob   32      90      83
3     David   47      64      87
   A  B  C  D
0  1  3  5  7
1  2  4  6  8
   A  B
0  1  3
1  2  4
0  5  7
1  6  8

从上面的输出可以看到,我们在不同的操作场景中使用了不同的轴(axis),实现了各种数据操作。