1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PandasのBroadCasting とは? no.12

Posted at

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

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

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

Pandasを勉強していると『ブロードキャスト(Broadcast)』というコンセプトをよく聞くことになると思います。

今回の記事では、Pandasで使われるブロードキャストとは具体的にどういう意味なのか、例を示しながら書いていこうと思います

この記事を読むと

  • ブロードキャストとは?
  • ブロードキャストなメソッドはどのように働いてくれるのか?
  • 2つ以上のコラムにそれぞれ違う計算をしたい時の方法
が分かります

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

今回使わせてもらうデータ

National Football League.png

この記事ではアメリカンフットボールの選手の身長・体重・生年月日に関するデータを使います。

※身長はインチ、体重はポンドの単位が使われています

CSVデータを読み込み必要な部分を取り出す

スクリーンショット 2021-03-18 084713.jpg

今回使うCSVデータは上記のようになっています

『full_name』『height_in_inches』『weight_in_lbs』のコラムを使い、full_name をインデックスとして使います

players_data = pd.read_csv("ファイル名", usecools =["full_name","height_in_inches","weight_in_lbs"], index_col="full_name")

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

スクリーンショット 2021-03-18 085255.jpg

Pandasのブロードキャスト(BroadCast)を具体的に

名称未設定のデザイン (4).png

『ブロードキャスト』という言葉を聞くとテレビやラジオなどを思い出すと思いますが、Pandasでいうブロードキャストも似たような概念になります。

ある1つの同じメッセージが各家庭に届けられる

そのような感じだとまずはざっくりと理解してくださいね。
ここで言う各家庭というのは、一つ一つのセルに入った値の比喩だという感じでとらえてみてください。

ブロードキャストなメソッドを集めてみました。

こちらはPandasのブロードキャストについての説明をしている動画になります。(英語になります)

ブロードキャストという概念はPanda やNumpyには存在しますが、Python にはありません。

また、Pandas のSeries であれ、DataFrame であれどちらにもブロードキャストの考え方は存在します。

『ブロードキャストな』という表現が日本語としてあっているか少し自信がないですが(適切な日本語がわかる方は是非教えてください。<(_ _)>)以下に、ブロードキャストな働きをするメソッドを紹介していきますね。

add()など

import pandas as pd
df = pd.csv_read("ファイル名")
df.add(5)

DataFrameの全体にadd()メソッドが適応されるのではなく

DataFrameの値一つ一つにadd()が適応されます。

では、最初のプロセスで取り出したDataFrame にadd() を適応するとどうなるかを示しますね。

スクリーンショット 2021-03-18 085534.jpg

DataFrame の一つ一つの値に5が足されているのが分かります。

こちらのショートハンドは

df + 5

です。

DataFrame というオブジェクトと 整数(integer)というデータ型が違うもの同士を足し、エラーが出そうに感じますが、これでもちゃんとコードは実行されます

スクリーンショット 2021-03-18 090614.jpg

同じ結果になりました。

引き算 .sub()

掛け算 .mul()

割り算  .div()

も同じように一つ一つの値に対して計算した結果を返してくれます。

ポンドの体重をキログラムに、インチの身長をセンチに変えたい

ここで問題が起こります。

ポンドをキログラム表示に変えたい時は

(ポンド) × (0.453592)

インチをセンチメートルに変える時は

(インチ) × (2.54)

と違う数字を掛け合わせたいので、上記のやり方では、うまく行きません。

一様に同じ計算を施してしまうからです。

解決策

①DataFrame["コラム名"] で計算を施したいコラムを指定する

②DataFrame["新しいコラム名"] = DataFrame["計算を施したいコラム名"] * 0.453592 とすると新しいコラムが作られる

キログラム表示の新しいコラムが最後のコラムの次に足されます

スクリーンショット 2021-03-18 093852.jpg

センチ表示の身長も新しいコラムとして足してみました

スクリーンショット 2021-03-18 094754.jpg

やはり日本人には、センチとキログラムで表示してくれた方が分かりやすいですよね。

しかし、アメリカのアメフト選手デカいですね(笑)

まとめ

今回の記事はこれくらいで終わりにしようと思います。

Pythonには無いコンセプトもPandas にはあって、そこがPandasを少しややこしい物にしている時もあるかも知れませんが、また気づいたことがあれば、記事にしていきますね。

次回もよろしくお願いします!

1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?