0
1

More than 3 years have passed since last update.

【Pandas】MultiIndexとは?(pivotメソッドを学ぶ前に知っておくべきこと)no.24

Posted at

見出しを追加 (52).png
こんにちは、まゆみです。

Pandasの記事をシリーズで書いています。

今回の記事は第24回目になります。

今回の記事では、『Multiindex』(マルチインデックス)という概念を扱っていこうと思います。

Multiindex とは文字通り、複数のインデックスという意味です。

この記事を読めば


  • MultiIndexとは?

  • コラムからインデックスに変更するには

  • MultiIndexを扱う時のレベルとは?

が分かります。

また、Multiindexの概要が十分に理解できたら、次回以降の記事で『pivot』や『pivot_table』についても触れていきます。

今回の記事は、そのウォーミングアップのような位置づけになります。

ではさっそく始めていきますね。

今回使うデータ

見出しを追加 (53).png

今回は、data.worldさんのサイトからウェラブル端末に関するデータを使っていきます。

read_csv()で読み込むと下記のような感じになります。

スクリーンショット 2021-03-29 073342.jpg

Body.Location(体のどの部位につけるか)というコラムと、Company...Country(会社がある国)というコラムがあるので、これら2つをインデックスにしていきます。

set_index()

コラムをインデックスにするメソッドは、.set_index()があります。

スクリーンショット 2021-03-29 090700.jpg
引用元:Pandasドキュメント

keys には、インデックスにしたいコラム名を引数として渡します。

今回は2つのコラムをインデックスにしたいので、コラム名をリストに入れて、引数として渡します。

df.set_index(keys=[ "コラムA", "コラムB" ])

そしてこの実行結果をオリジナルのDataFrame に上書きしたいので、パラメーターinplace = True とします。

また、新たに作ったインデックスをアルファベット順に並べたいので、

.sort_index()

でインデックスをアルファベット順(インデックスが数字の場合は小さい順)に並べます

実行結果は下記のようになりました。

スクリーンショット 2021-03-29 0922411.jpg

リスト型にして引数として渡したコラム名は一番最初に書かれたものから順番に一番外側のインデックスから配置されます。
言葉での説明はややこしいので下のイラストをご覧くださいませ。<(_ _)>

set_index(keys=[]).png

リストの最初のアイテムから順番に、外側からインデックスを埋めていきます。

新たにインデックスにしたインデックスのデータ型は?

スクリーンショット 2021-03-29 094459.jpg
上のスクショから分かるように、新たなインデックスのデータ型はタプルです。

また、インデックスの名前は、2つのコラム名が一緒になったリスト型になっています

スクリーンショット 2021-03-29 094934.jpg

インデックスのラベルを変更したい時(レベルとは何か?)

インデックスのラベル名を変更したい時に使うのが.set_names()になります。

スクリーンショット 2021-03-29 100602.jpg
引用元:Pandasドキュメント

ただ、Multiindex になっている時には、注意が必要です。

どちらのインデックス名を変更するのか指定しないといけないからです。

ドキュメントに引数としてレベルを渡すと書いていますが、この『レベル』というものが、Multiindex の、どのインデックスを指定するかに使われるものです。

2.png

では、2つのインデックスのうち、『Company...Country』を日本語の『国名』に変えてみます。

df.index.set_names( names="変更後のラベル", level=multiindexのレベル, inplace=上書きするか?)

実行結果は下記のようになります。

スクリーンショット 2021-03-29 102317.jpg

この『レベル』の定義は、後々、Pandasのドキュメントを読む時にも必要になるので、是非覚えておいてくださいね

まとめ

今回の記事では、実際にデータを集計する前に必要となる作業について書かせていただきました。

データを集計する前のデータの処理が終われば、実際にデータを集計する事ができます。(エクセルのピボットテーブルを使った事がある方なら、Pandasでも同じことができるメソッドがあります)

少し退屈な記事が続くと思いますが、どうぞよろしくお願いします!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1