ウェブサイト検索

Python初心者のためのデータ処理ガイド


Pythonは人気のある汎用プログラミング言語ですが、統計学、データ分析、データサイエンスにますます好まれています。統計学の基本的な知識がある場合、それをPythonにどのように適用できますか?手作業ではこれまで以上に速くPythonでデータを整理する方法を紹介します。

なぜデータのためにPythonなのか?

Pythonがデータ分析に人気である一方で、ExcelやLibreOffice Calc、Google Sheetsのようなスプレッドシートではなく、なぜPythonを使いたくなるのか疑問に思うかもしれません。

Pythonを使用する主な理由は、ほとんどのスプレッドシートに含まれているものよりもはるかに多くのオプションが得られるからです。スプレッドシートは主にビジネスや財務計算のために設計されています。Pythonを使用すると、Pythonの膨大なライブラリにアクセスできるため、より高度な計算を行うことができます。

もう一つの問題はスケーラビリティです。スプレッドシートは小規模なデータセットでより効果的に機能しますが、ヘビーユーザーは何百行もの巨大なものを作成できます。操作を行うには、列をクリックしてドラッグする必要があります。これが数行に対しては機能しても、データが複数画面にわたる場合、指がすぐに疲れてしまうことがあります。

Pythonのデータ操作は、NumPy、pandas、Seaborn、Pingouinなどのライブラリを使用することで、大量のデータを扱う際に非常に効率的です。複数の列からデータを選択し、それらに対して計算を行うような複雑な操作を1行または数行で指定できます。さらに素晴らしいことに、これらの操作を自動化するためのスクリプトを書くことができるので、最初に一度だけ入力すれば済みます。

スプレッドシートはまだその役割があります。作業の迅速化や、Pythonで使用するためのデータのフォーマットに最適です。スプレッドシートからデータをインポートする方法もお教えします。データのフォーマットに関しては、文字数や整数のような特定のタイプの数字にデータをフォーマットする必要がある場合、小規模なデータベース管理システムであるSQLiteの方がさらに優れています。

簡潔にするために、この記事では基本的な統計計算のためのPythonライブラリの使用方法について説明し、理論についてはあまり詳しく説明しません。統計理論について学びたい場合は、オンラインおよびオフラインのリソースがたくさんあり、コース、教科書、動画などがあります。無料学習オプションとしては、OpenStaxのオンライン教科書やKhan Academyを試してみてください。

環境の設定

データ分析のために環境を設定するには、前述のいくつかのライブラリをインストールする必要があります。あなたがLinux、macOS、またはWindows Subsystem for LinuxがインストールされたWindowsのようなUnix系システムを使用していると仮定します。

最初にインストールする必要があるのはMambaで、これはこれらのライブラリのためのパッケージマネージャーです。ほとんどのLinuxシステムにはパッケージマネージャーが付属しているため、なぜパッケージマネージャーの上にパッケージマネージャーが必要なのでしょうか?システムのパッケージマネージャーにはPythonや私が言及するライブラリが含まれていますが、これらは主にOS自体の管理のためのものであり、プログラミングプロジェクトのためではありません。開発者は、多くのメインストリームのディストリビューションに付属しているよりも新しいバージョンを望む傾向があるため、このグループの中でローリングリリースディストリビューションが人気です。Mambaは、安定したベースシステムを実行しながら、新しい開発パッケージへのアクセスを提供する第三の選択肢を提供します。ウェブサイトの指示に従うことができます。要するに、ターミナルにスクリプトを貼り付けることに尽きます。

Mambaがインストールされているので、ライブラリをインストールする必要があります。この文書で使用するライブラリは、NumPy、pandas、SciPy、Pingouinです。また、標準のPythonインタープリタよりも対話的使用に便利なIPythonもインストールします。

これらのパッケージを使って、Mambaで「stats」と呼ばれる環境を作成します。

mamba create -n stats
    

それを有効にする必要があります。

mamba activate stats
    

環境が設定されたら、パッケージをインストールできます。

mamba install ipython numpy pandas scipy seaborn pingouin
    

環境が整ったので、計算を始めることができます。

データを取得中

統計計算を行うには、いくつかのデータが必要です。これは、すでに持っているスプレッドシートなどのデータである可能性があります。または、Kaggleのようなサイトからダウンロードしたデータである可能性もあります。SeabornやPingouinは、遊んだり学んだりするために利用できる公開データセットにアクセスできます。

まず最初に、「stats」環境がアクティブになっていることを確認し、その後IPythonを実行してください。

ipython

最初にpandasをインポートします。

import pandas as pd
    

Pandas には、データ分析で広く使用されている Excel .xls およびカンマ区切り値形式 .csv など、人気のあるデータファイル形式から読み取るためのメソッドがあります。

私たちは、pandasのread_csvメソッドを使用してファイルを読み込みます。最近、複雑なモデルを構築するために使用した私のノートパソコンの価格データでデモンストレーションします。

data = pd.read_csv("data/laptop_prices.csv")
    

これにより、「DataFrame」と呼ばれるデータ構造が作成され、これはスプレッドシートやリレーショナルデータベースに似ています。それをデータを含むテーブルとして考えてください。DataFrameに対してheadメソッドを呼び出すことで、最初の数行を見ることができます。

data.head()
    

自分でデータをランダムに生成して作成することもできます。これはテストデータを作成するのに良いです。これにはNumPyの乱数生成器を使用できます。

まず、NumPyをインポートします:

import numpy as np
    

それからランダム番号生成器を作成します:

rng = np.random.default_rng()
    

正規分布から取られた50個のランダムな数の配列を作成できます:

a = rng.standard_normal(50)
    

記述統計: 平均, 中央値, 標準偏差, パーセンタイル

Pythonとpandasを使用して基本的な記述統計を計算するのは簡単です。

私たちはデータフレーム用にSeabornのtipsデータセットを使用します。

import seaborn as sns
tips = sns.load_dataset('tips')
    

列を見るには、上記で述べたhead()メソッドを使用してください。

tips.head()
    

データフレーム内のすべての数値列の記述統計を取得するために、describeメソッドを使用できます。

tips.describe()
    

pandasは「total_bill」、「tip」、「size」列のデータを印刷します。これにはデータポイントの数、平均、標準偏差、最小値、下四分位数(25パーセンタイル)、中央値(50パーセンタイル)、および上四分位数(75パーセンタイル)が含まれます。

個々の列の記述統計を表示することもできます:

tips['total_'bill'].describe()
    

列の統計情報も表示できます。たとえば、中央値のチップを見るには:

tips['tip'].median()
    

回帰:トレンドとは何か?

記述統計は、データの説明を提供します。データ分析の力は、データの中にある関係を見つけることから生まれます。線形回帰は、これを行う最も簡単な方法の一つです。

線形回帰をデータポイントに対して線を当てはめることとして視覚化できます。

私たちのチップデータセットに戻りましょう。Seabornを使って、チップと合計請求額をプロットします。請求額は独立変数でx軸に、チップは従属変数でy軸に配置されます。散布図の上に回帰線をプロットして、どのくらいフィットしているかを確認できます。

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

Pingouinを使って、より正式な分析も得ることができます。

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

一番左の列にはy切片とx値の係数、今回は合計請求額が含まれます。これにより、標準的な傾き切片方程式として直線を再構成することができますが、注意していただきたいのは相関係数の二乗、すなわちr²です。この場合、約0.46であり、これは正の方向においてかなり良い適合であり、グラフで見たことを確認しています。

統計的検定:違いは本当に重要ですか?

対照群と実験群を持つ実験、例えば新薬の臨床試験では、しばしば出現する一つの問題は、二つのグループの違いが偶然によるものかどうかを判断することです。グループ間の統計テストは、違いが統計的に有意かどうかを判断するのに役立ちます。

現代の研究の中で最も人気のあるものの一つは、学生のt検定です。これは、実験に必要な小さなサンプルを扱うのに優れているからです。

NumPyの乱数生成器を使用して、それぞれ10要素のシミュレーショングループを2つ作成します:

import numpy as np
rng = np.random.default_rng()
a = rng.standard_normal(10) * 20
b = rng.standard_normal(10) * 50
    

Pingouinには、2つのグループ間に有意な差がないという帰無仮説を検定するためのt検定機能が組み込まれています。

pg.ttest(a,b)
    

出力の重要性を判断するための数値はp値です。重要性を判断するために0.05のp値を使用します。結果は約0.61です。これは0.05よりも高いため、帰無仮説を棄却することはできませんので、結果は統計的に有意ではないと結論付けます。


これらの例は、Pythonにおけるデータ分析の表面をほんのかすめているだけです。これらのライブラリの助けを借りて、Pythonでのデータ操作がいかに簡単で強力であるかを見た今、Pythonがデータ分析やデータサイエンスの選ばれる言語である理由がわかるでしょう。