python中關於axis=0和axis=1應該如何理解?
阿新 • • 發佈:2020-12-09
axis=0:資料在縱向發生變化;
axis=1:資料在橫向發生變化。
下面我們用python程式碼的方式更加直觀的瞭解axis=0和axis=1的區別。
import pandas as pd
data = pd.DataFrame(data=[['吳文化', '男', 100, 98, 85],
['史珍香', '女', 66, 75, 72],
['範建', '男', 77, 88, 100],
[ '胡說', '男', 80, 90, 86],
['夏扯淡', '女', 76, 80, 96]],
columns=['name', 'gender', 'math', 'chinese', 'english'])
print(data)
上面程式碼的結果如下,這就是我們接下來要操作的資料:
name gender math chinese english
0 吳文化 男 100 98 85
1 史珍香 女 66 75 72
2 範建 男 77 88 100
3 胡說 男 80 90 86
4 夏扯淡 女 76 80 96
1)首先我們求一下每一科目的平均成績,每一科目的平均成績就是求科目列的平均值。求科目列的平均值時,我們會把多行壓縮成三行(因為有三個科目),這是屬於縱向的變化,所以應該指定axis=0。
# 每一科目的平均成績
avg_subject = data[['math', 'chinese', 'english']].mean(axis=0)
print(avg_subject)
# 下面是執行結果
math 79.8
chinese 86.2
english 87.8
2)然後我們求一下每個同學的平均成績。每一個同學的平均成績,會把科目所在的三個列壓縮成一個列,屬於橫向的變化,所以應該指定axis=1。
avg_score = data[['math', 'chinese', 'english']].mean(axis=1)
print(avg_score)
# 下面是執行結果
0 94.333333
1 71.000000
2 88.333333
3 85.333333
4 84.000000
3)接下來我們看一下刪除行或者列。
刪除math列,因為列減少了,相當於人瘦了,橫向上發生了變化。所以我們要指定axis=1。
data.drop(labels='math', inplace=True, axis=1)
print(data)
# 下面是執行結果
name gender chinese english
0 吳文化 男 98 85
1 史珍香 女 75 72
2 範建 男 88 100
3 胡說 男 90 86
4 夏扯淡 女 80 96
4)最後我們看一下刪除指定行。因為刪除了行,相當於人變矮了,縱向發生了變化。所以指定axis=0。
data.drop(index=0, inplace=True, axis=0)
print(data)
# 下面是執行結果
name gender chinese english
1 史珍香 女 75 72
2 範建 男 88 100
3 胡說 男 90 86
4 夏扯淡 女 80 96