ウェブサイト検索

なぜデータ分析にPythonを好むか


最近、Pythonを使ったデータ分析についてたくさん書いてきました。その理由として、なぜこれが選ばれた言語であるかを説明したいと思います。ここに、Pythonが使いやすく、それでいて強力であると私が感じるいくつかの理由があります。

Pythonは迅速なインタラクティブ計算を提供します

Pythonを使えば、手作業では到底できない速さで統計計算を行うことができます。大学で統計のコースを始めたとき、私は平均、中央値、標準偏差などの基本的な記述統計を計算しなければなりませんでした。データセットの長さのため、科学計算機を持っていても扱いにくかったです。私は正しくデータを入力していたのでしょうか?すぐに、私が持っていたTIグラフ計算機に切り替えました。使っていた教科書には、そのモデルのための統計関数が示されていました。

私はまだどこかにグラフ計算機があると思います。Pythonがあれば必要ありません。標準的なジョークは、それをデスクトップ電卓として使えるということです。インタープリターだけでも基本的な計算には使いやすいです。IPythonにアップグレードすると、履歴の再呼び出しなど、インタラクティブなPythonをはるかに簡単にする多くの便利な機能が追加されます。

時々カシオの科学電卓で遊ぶのは好きですが、タクティルボタンが気に入っているので、Pythonを使う方がずっと簡単です。Pythonでランダムな数字のリストを生成し、すぐに記述統計を見つけることができます。100項目のリストで操作を実行できます。それを手作業でやったり、電卓でやったりするのは難しいでしょう。Pythonは本当に簡単です。

物事を簡単にするためのたくさんのライブラリ

Pythonの最も優れた機能の1つは、言語と一緒に使用できるライブラリの数です。Pythonは、自分自身で多くのライブラリを備えているだけでなく、「バッテリー同梱」と呼ばれるアプローチを採用しているだけでなく、データ分析のために利用できるさらに多くのライブラリがあります。

組み込みの数学および統計ライブラリは基本的な計算に役立ちますが、私が普段Mamba環境で設定するより優れたものもあります。

一つの基盤はNumPyです。これは、大きな数値配列を効率的に作成および操作するためのライブラリですが、線形代数や統計など、配列に対して実行できる多くの関数も備えています。この記事では後者に焦点を当てます。

ランダムな数のリストを生成させてください。

まず、NumPyの乱数生成器を設定します:

import numpy as np
rng = np.random.default_rng()
    

さて、20個のランダムな数字のリストを生成します:

a = rng.random(20)
    

このリストの平均を取ることができます:

np.mean(a)
    

標準偏差も計算できます。

np.std(a)
    

これはいくつかの基本的な操作です。Pythonに留まらせてくれるのは他のライブラリです。

グラフィックスはデータを探るための強力な方法です。以前に書いたSeabornは、その強力なツールの一つです。散布図や線形回帰を視覚化するのは良い例です。

Seabornの例を使ってみましょう。ニューヨーク市のレストランの請求書、チップ、テーブルにいる人数、喫煙者かどうかなどの他の変数を含むデータセットをインポートします。

チップの金額と総請求額をプロットしましょう:

tips = sns.load_dataset('tips')
sns.regplot(x='total_bill',y='tip',data=tips)
    

Seabornを使用してボックスプロットや棒グラフも見ることができます。数日間にわたるレストランの総請求額を見てみましょう:

sns.catplot(x='day',y='total_bill',kind='bar',data=tips)
    

私は、統計テストを実施するためのライブラリであるPingouinを使って、より正式にデータを検査することもできます。もう一度、ヒントデータベースを見てみましょう。注意すべき数字は相関係数で、これはデータに対する線のフィットの良さを示しています。相関係数の二乗は「r2」列に記載されています。

pg.linear_regression(tips['total_bill'],tips['tip'])
    

他の時には、カテゴリに沿って値がどのように変化するかを見たいことがあります。そのために、分散分析(ANOVA)が役立ちます。

レストランの請求書からペンギンの請求書に移りましょう。このコードは、アデリーペンギン、チンストラップペンギン、ジェンツーペンギンの3つのペンギン種のデータセットを調べます。私たちは、種ごとのくちばしの長さのミリメートルの違いが有意であるかどうかを確認します。

penguins = pg.read_dataset('penguins')
pg.anova(data=penguins,dv='bill_length_mm',between='species').round(2)
    

p値は0.0であり、これは差が有意であることを意味します。

より直感的なメソッド名

Rはプログラミング言語におけるデータ分析の伝統的なチャンピオンですが、Pythonのメソッド名がより記憶に残りやすいことが、私にとってPythonを優位にしている事実です。

私はR自体には問題がありません。以前使ったことがあり、データ分析には素晴らしい言語ですが、私にはあまり向いていないかもしれません。例えば、等号の代わりにベクトルに値を代入する際、NumPy配列に似た数のリストを使用します。「IPythonのタブ補完によりコマンドの入力が再入力よりもはるかに簡単になり、履歴メカニズムを使って以前に入力したコマンドに戻ることができます。」

遊ぶためのデータがたくさん

私は以前からデータ分析に興味があり、特にPythonとそのライブラリがますます使用されていると聞いてからずっと関心を持っていました。Pythonには少し慣れ親しんでいましたが、もっと関わりたいと思っていました。しかし、どこでデータを見つければいいのか分かりませんでした。

幸いなことに、データを見つけるのは簡単です。前に述べたように、多くのライブラリは公共データセットにアクセスできるようにしているので、これらのライブラリがどのように機能するかを学び、結果を検証することができます。これは前の例でも見ました。

データを得るもう一つの方法は、ランダムに生成することです。これはライブラリの動作を学ぶのに役立つ別の方法です。ランダムデータの唯一の欠点は、毎回変わることです。

自分自身のデータセットを作成することもできます。これは、最近のプロジェクトで電話やタブレットのバッテリー寿命を調査するために行ったことです。

Kaggleのようなサイトで他の人が生成したデータセットもたくさんあります。それをダウンロードして、私が上で言及したツールを使って探索することができます。政府のウェブサイトからデータをダウンロードすることもできます。

インタラクティブな操作は即時フィードバックを提供します

私がデータ分析においてPythonの好きな点の一つは、インタラクティブモードが即座にフィードバックを提供してくれることです。結果を見るためにコンパイルサイクルを待ったり、スクリプトを書いたりする必要がありません。IPythonで計算を実行すると、端末ウィンドウに結果が表示されます。グラフを作成している場合は、別のウィンドウにポップアップします。

しばしば、データを処理しているときに、他の操作を行いたいというアイデアが浮かぶことがあります。それに対してすぐに行動を起こすことができます。それがインタラクティブプログラミングの本当の力です。

Jupyterノートブックは私の計算を記録することを許可します

IPythonがどれほど便利であっても、私が行う多くの操作は、そのセッションが終了し、ウィンドウを閉じると消えてしまいます。プロットは保存できますが、計算はおそらく失われてしまいます。ログを設定することはできますが、そのことを覚えておかなければなりません。何かを行った方法を思い出したい場合は、コマンド履歴を探り抜かなければなりません。

これが、IPythonの開発者がJupyterノートブックインターフェースを作成した理由かもしれません。Jupyterは、私がインタラクティブなノートブックを構築することを可能にします。私は通常、データセットを探索し、その結果を記録したいときに1つを作成します。必要なときに戻ってくることができます。もう1つの良い点は、GitHubアカウントのように他の人とJupyterノートブックを共有できることです。

Jupyterは、科学計算とデータの分野で事実上の標準となっており、それには十分な理由があります。すべての分野の科学者が自分の発見を同僚と記録し共有するのが簡単です。


これらは、特にデータ分析において私の選ぶプログラミング言語がPythonである理由です。始めるのが簡単な言語であり、私がより多くを学び、できることを広げるにつれて成長してきました。