こんにちはヤク学長です。
データサイエンティスト兼ファーマシストで、アルゴリズムやBI開発を行っています。
本記事の目的は、「pythonの基本操作を知る」ことを目的としています。
【本記事のもくじ】
まず、「Python」に真剣に取り組むための概要を解説します。
下記の方法で、簡単に概要を抑えることができます。
- 1.データ解析
それでは、上から順番に見ていきます。
なお、本上記の方法を順番に抑えれば成果が出ます。
記事の内容は「転載 & 引用OK」問題ありません。
1.データ解析
データ解析の概念
データ解析(Data Analysis)は、あるデータを収集し、整理・加工し、それらから有用な情報や知見を抽出するプロセスを指します。このプロセスを通じて、データに潜む規則性や傾向、関係性を発見し、ビジネスの意思決定や新たな知見の獲得などに役立てることができます。
データ解析には、データ収集・整理・加工・分析・可視化の5つのステップがあります。データ収集では、必要なデータを収集し、整理して、扱いやすい形式にします。データ整理・加工では、データを前処理し、欠損値の補完、外れ値の処理、データの正規化などを行い、データの精度を上げます。データ分析では、統計学的手法や機械学習手法を用いて、データから知見を得ます。データ可視化では、データ分析の結果をグラフやチャートなどで視覚化し、分析結果を分かりやすく表現します。
データ解析は、ビジネス分野だけでなく、科学分野や社会分野でも広く利用されています。例えば、医療分野では患者の治療方針の決定や薬の開発に利用されます。金融分野では、市場の動向や投資商品の選定に利用されます。また、自然災害の発生予測やエネルギーの最適化など、社会問題の解決にも役立てられます。
Jupyter Notebook
Jupyter Notebookは、Pythonやその他のプログラミング言語のコードやテキスト、画像などを含むドキュメントを作成するためのオープンソースのWebアプリケーションです。Jupyter Notebookは、インタラクティブなコンピューティングの概念に基づいています。
以下は、Jupyter Notebookを使用してPythonコードを実行する手順の例です。
- Jupyter Notebookをインストールします。コマンドラインで
pip install jupyterlab
を実行するか、AnacondaなどのPythonディストリビューションをインストールするとJupyter Notebookも含まれています。 - Jupyter Notebookを起動します。コマンドラインで
jupyter lab
を実行すると、Jupyter Notebookが起動します。ブラウザでhttp://localhost:8888
を開くと、Jupyter Notebookのホームページが表示されます。 - 新しいノートブックを作成します。ホームページから “New” をクリックして、Python3のノートブックを選択します。
- ノートブックにコードを入力します。セルにコードを入力し、”Shift + Enter”を押して実行します。コードの出力がセルの下に表示されます。
- ノートブックを保存します。ノートブックを保存して後で再開できます。
以下は、簡単なPythonコードの例です。
# 2つの数値を足し算する関数
def add_numbers(a, b):
return a + b
# 2つの数値の足し算を実行する
result = add_numbers(2, 3)
# 結果を表示する
print(result)
例1: データ分析
Jupyter Notebookはデータ分析に非常に便利です。例えば、PandasとMatplotlibを使用して、データを読み込み、分析し、視覚化することができます。以下は、このプロセスの例です。
# 必要なライブラリをインポートする
import pandas as pd
import matplotlib.pyplot as plt
# データを読み込む
data = pd.read_csv('data.csv')
# データを分析する
mean = data.mean()
median = data.median()
mode = data.mode()
# データを視覚化する
plt.hist(data)
plt.show()
このコードは、データをdata.csv
から読み込み、平均値、中央値、最頻値を計算し、ヒストグラムを作成して表示します。Jupyter Notebookを使用すると、データやグラフを見やすく表示できるため、分析結果をすばやく共有できます。
例2: マシンラーニング
Jupyter Notebookは、機械学習のモデルの開発にも便利です。例えば、Scikit-learnを使用して、データを読み込み、モデルをトレーニングし、テストすることができます。以下は、このプロセスの例です。
# 必要なライブラリをインポートする
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# データを読み込む
data = pd.read_csv('data.csv')
# データをトレーニング用とテスト用に分割する
X = data.drop('y', axis=1)
y = data['y']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# モデルをトレーニングする
model = LinearRegression()
model.fit(X_train, y_train)
# モデルをテストする
score = model.score(X_test, y_test)
print(score)
このコードは、データをdata.csv
から読み込み、トレーニング用とテスト用に分割し、線形回帰モデルをトレーニングしてテストするプロセスを示しています。Jupyter Notebookを使用すると、モデルのトレーニングプロセスを視覚化し、結果をすばやく共有できます。
numpy
NumPyは、Pythonで高度な数学関数、配列、行列演算を行うためのライブラリで、科学技術分野でよく利用されています。
NumPyを使用することで、大量の数値計算を高速に処理することができます。
以下はNumPyを使って簡単な配列演算を行う例です。
import numpy as np
# 配列を作成
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 配列の足し算
c = a + b
# 配列の掛け算
d = a * b
# 配列の平均値
e = np.mean(a)
# 結果の表示
print("a + b =", c)
print("a * b =", d)
print("平均値:", e)
このコードを実行すると、以下のような結果が得られます。
a + b = [5 7 9]
a * b = [ 4 10 18]
平均値: 2.0
このように、NumPyを使うことで、簡単に配列演算や統計処理などを行うことができます。また、NumPyを用いた線形代数の演算なども可能です。
https://medical-science-labo.jp/python-numpy01/
pandas
Pandasは、Pythonのデータ分析ライブラリの一つで、表形式のデータ処理を行うことができます。主に、データの取り込み、クリーニング、変換、集計、可視化などに用いられます。
Pandasの中心となるデータ構造は、SeriesとDataFrameです。Seriesは、1次元のラベル付きの配列で、DataFrameは、2次元のラベル付きの表形式データです。SeriesはDataFrameの一部としても使用されます。
以下は、Pandasを使用してCSVファイルからデータを読み込む例です。
import pandas as pd
# CSVファイルからデータを読み込む
df = pd.read_csv("data.csv")
# データの表示
print(df.head())
このコードを実行すると、CSVファイルの先頭5行が表示されます。Pandasは、CSVファイルだけでなく、Excel、SQLデータベース、JSON、HTML、XMLなど、様々なデータソースからデータを読み込むことができます。
また、Pandasには、データのフィルタリング、グルーピング、結合、変換、可視化など、様々な機能が用意されています。データ分析や機械学習など、様々な分野で広く使われています。
https://medical-science-labo.jp/python-pandas01/
metaplolib
Matplotlibは、Pythonで高品質なグラフを描画するためのライブラリで、様々な種類のグラフを作成することができます。例えば、散布図、折れ線グラフ、ヒストグラム、バーチャート、3Dグラフなどがあります。
Matplotlibは、NumPyと組み合わせて使用することができ、データを可視化するための高度な機能を提供します。また、Jupyter NotebookやIPython shellでインタラクティブなグラフを作成することもできます。
以下は、Matplotlibを使用して簡単なグラフを描画する例です。
import matplotlib.pyplot as plt
import numpy as np
# x軸の値
x = np.linspace(0, 10, 100)
# y軸の値
y = np.sin(x)
# グラフの描画
plt.plot(x, y)
# グラフのタイトル
plt.title('Sin Curve')
# x軸のラベル
plt.xlabel('x-axis')
# y軸のラベル
plt.ylabel('y-axis')
# グラフを表示
plt.show()
このコードは、x軸の値を0から10まで100分割したものを作成し、それに対応するsin関数の値をy軸の値として、折れ線グラフを描画しています。また、グラフのタイトル、x軸とy軸のラベルも設定しています。
Matplotlibは、Pythonのデータ解析の分野で頻繁に使用されるツールの1つであり、データの可視化やグラフの作成において、高い柔軟性と豊富な機能を提供しています。
https://medical-science-labo.jp/python-matplotlib01/
sckit-learn
scikit-learn(サイキット・ラン)は、Pythonのオープンソースの機械学習ライブラリです。Scikit-learnは、NumPy、SciPy、Matplotlib、pandasなどのPythonの基本的なライブラリに依存しており、多くの機械学習タスクで使用されます。scikit-learnは、教師あり学習、教師なし学習、半教師あり学習、深層学習など、さまざまな種類の機械学習アルゴリズムを提供しています。以下は、scikit-learnが提供する一部の機能です。
- 教師あり学習
- 回帰モデル:線形回帰、ロジスティック回帰、リッジ回帰、Lasso回帰など
- 分類モデル:k-最近傍法、サポートベクトルマシン、決定木、ランダムフォレスト、勾配ブースティングなど
- 教師なし学習
- クラスタリング:k-meansクラスタリング、階層的クラスタリング、DBSCANなど
- 次元削減:主成分分析、t-SNEなど
- 強化学習:Q学習、SARSAなど
- モデル選択、前処理、評価
- データの分割、交差検証、グリッドサーチなどのモデル選択手法
- 特徴量選択、前処理、スケーリングなどのデータ前処理手法
- 交差検証スコア、混同行列、ROC曲線などのモデル評価手法
具体的な例としては、scikit-learnを使用して、Irisの花の種類を分類することができます。Irisデータセットは、花のがく片(sepal)と花弁(petal)の長さと幅を含む150個のデータポイントからなるデータセットで、3つの種類のIris(Iris setosa、Iris virginica、Iris versicolor)が含まれています。以下は、Irisデータセットを使用して、ロジスティック回帰モデルをトレーニングして、新しい花の種類を分類するコードの例です。
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
# load the iris dataset
iris = load_iris()
# split the dataset into training and test sets
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=0)
# train a logistic regression model on the training set
logreg = LogisticRegression(solver='lbfgs', multi_class='auto', max_iter=1000)
logreg.fit(X_train, y_train)
# predict the class labels for the test set
y_pred = logreg.predict(X_test)
# calculate the accuracy of the model on the test set
accuracy = logreg.score(X_test, y_test)
print('Accuracy:', accuracy)
まず、load_iris()
関数を使用して、Irisデータセットをロードします。次に、train_test_split()
関数を使用して、データセットをトレーニングセットとテストセットに分割します。ここでは、テストセットが全体の20%となるように設定しています。
次に、LogisticRegression()
関数を使用して、ロジスティック回帰モデルを作成します。この例では、solver
パラメータに'lbfgs'
、multi_class
パラメータに'auto'
、max_iter
パラメータに1000
を指定しています。これらのパラメータは、ロジスティック回帰モデルのトレーニング方法を指定するものです。
fit()
メソッドを使用して、トレーニングデータセットでモデルをトレーニングします。predict()
メソッドを使用して、テストセットのデータポイントのクラスラベルを予測し、score()
メソッドを使用して、モデルの精度を計算します。
この例では、モデルの精度が0.9666666666666667
となり、非常に正確な予測が行われていることがわかります。
https://medical-science-labo.jp/python-scikit-learn01/
株価のデータ解析と予測
株価のデータ解析と予測は、金融分野において重要なテーマの一つです。Pythonを用いた株価のデータ解析と予測には、Pandas、NumPy、Matplotlib、Scikit-learn、Keras、TensorFlowなどのライブラリがよく使われます。以下は、株価データの解析と予測の一般的な手順です。
- データ収集
株価データを収集するためには、Yahoo Finance、Google Finance、Quandlなどのウェブサイトからデータをダウンロードすることができます。また、Pythonのライブラリを用いて直接データを取得することもできます。Pandasのread_csv()関数を用いることで、CSV形式の株価データを読み込むことができます。
- データ前処理
収集した株価データには、欠損値や外れ値が含まれることがあります。また、時系列データには、トレンドや季節性があることがあります。これらの問題を解決するために、データ前処理が必要です。PandasのDataFrameを用いることで、データの欠損値の削除や補完、外れ値の除外、データのスムージングやトレンドの除去などが行えます。
- データ分析
データ分析では、株価データの特徴を把握するために、統計的な分析やグラフ表示を行います。PandasのDataFrameやSeriesを用いることで、データの集計や統計量の計算、ヒストグラムや散布図の作成などが行えます。MatplotlibやSeabornなどのライブラリを用いることで、グラフの作成や可視化が簡単に行えます。
- モデルの選択
株価の予測には、様々なモデルがあります。例えば、回帰分析、時系列解析、ニューラルネットワーク、ランダムフォレストなどが挙げられます。モデルの選択には、データの特徴や予測の目的に合わせて、適切なモデルを選択する必要があります。
- モデルの学習
選択したモデルに基づいて、学習を行います。
具体例
以下は、S&P 500の株価指数データを使用して、株価の予測モデルをトレーニングする方法の例です。
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# データを読み込む
data = pd.read_csv('s&p500.csv')
# 日付をインデックスにする
data['Date'] = pd.to_datetime(data['Date'])
data.set_index('Date', inplace=True)
# 特徴量とターゲットを分割する
X = data.drop(['Close'], axis=1)
y = data['Close']
# 訓練データとテストデータに分割する
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# 線形回帰モデルをトレーニングする
lr = LinearRegression()
lr.fit(X_train, y_train)
# テストデータで予測する
y_pred = lr.predict(X_test)
# テストデータの予測精度を評価する
score = lr.score(X_test, y_test)
print('R2 Score:', score)
この例では、PandasとScikit-learnライブラリを使用して、株価データを読み込み、特徴量とターゲットに分割し、訓練データとテストデータに分割し、線形回帰モデルをトレーニングし、テストデータで予測を実行し、R2スコアを計算しています。R2スコアは、モデルがデータに適合している程度を示す指標であり、1に近いほど良いモデルであることを示します。
というわけで、今回は以上です。大変大変お疲れ様でした。
引き続きで、徐々に発信していきます。
コメントや感想を受け付けています。ちょっとした感想でもいいので嬉しいです。
それでは、以上です。
https://medical-science-labo.jp/python_advance11/