次回より『ヒデログ』とご検索ください

【Python入門】Pandasの「axis=0」と「axis=1」の違いを解説します

pandas

axisの使い方が「Pythonによるデータ分析入門」を読んでいて、なかなか厄介だなと思ったので、まとめてみました。「Pythonによるデータ分析入門」での例以外も解説しています。

考え方

axis

  • axis=0の場合、行方向にメソッドを適応。
  • axis=1の場合、列方向にメソッドを適応。
言葉では簡単ですが、具体的な例を見ていきましょう。

ちなみにNumpyにもaxisを引数にできます。ここでは、Pandasで例を見ていきます。Numpyでも操作結果は同じです。

例の対象となる行列

data=pd.DataFrame(np.arange(0,16).reshape((4,4)),index=['Tokyo','Kanagawa','Saitama','Chiba'],columns=['one','two','three','four'])

こちらの行列を対象に例を解説していきます。試すときに使ってみてください。

dropメソッド

data.drop('Kanagawa',axis=0)
data.drop('two',axis=1)


  • axis=0の場合は、行方向に「Kawasaki」を探して削除します。
  • axis=1の場合は、列方向に「two」を探して削除します。

applyメソッド

f=lambda x:x.max()-x.min()
data.apply(f,axis=0)
data.apply(f,axis=1)


  • axis=0の場合は、行方向に「最大値から最小値」を引くのでoneの場合「12-0」となります。列のヘッダーが残ります。
  • axis=1の場合は、列方向に「最大値から最小値」を引くのでTokyoの場合「3-0」となります。行のヘッダーが残ります。

sort_indexメソッド

data.sort_index(axis=0)
data.sort_index(axis=1)


  • axis=0の場合は、行方向に並べ替えが行われます。ですので、「Chiba」が最初に来ます。
  • axis=1の場合は、列方向に並べ替えが行われます。ですので、「four」が最初に来ます。

他のメソッドも

Pythonによるデータ分析入門」で解説されているメソッド以外も見てみます。

reindexメソッド

data.reindex(['Tokyo','kanagawa','Saitama','chiba'],axis=0)
data.reindex(['One','two','Three','four'],axis=1)


  • axis=0の場合は、行方向にタイトルが変換される。ですので、「Kanagawa→kanagawa」に変換されています。
  • axis=1の場合は、列方向にタイトルが変換される。ですので、「one→One」に変換されています。

meanメソッド

data.mean(axis=0)
data.mean(axis=1)


  • axis=0の場合は、行方向に「平均値」を取るので、oneの場合「(0+4+8+12)/4=6」となります。列のタイトルが残ります。
  • axis=1の場合は、列方向に「平均値」を取るので、Tokyoの場合「(0+1+2+3)/4=1.5」となります。行のヘッダーが残ります。

sumメソッド


  • axis=0の場合は、行方向に「合計」を取るので、oneの場合「0+4+8+12=24」となります。列のタイトルが残ります。
  • axis=1の場合は、列方向に「合計」を取るので、Tokyoの場合「0+1+2+3=6」となります。行のヘッダーが残ります。

まとめ

行列の方向を覚えておくこと(行:縦、列:横)で、どの方向に操作を行うかが分かります。この点を覚えておくといいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です