SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Pythonによるデータ解析入門

本格的なPythonデータ解析環境を手軽に! 「Jupyter Notebook」の導入から可視化まで

Pythonによるデータ解析入門 第1回


  • X ポスト
  • このエントリーをはてなブックマークに追加

データ解析でよく使われるPythonライブラリ

 データ解析でよく使われるPythonの下記のライブラリをそれぞれ紹介します。

  • NumPy(数値計算)
  • pandas(データ解析)
  • matplotlib(データ可視化)

NumPy(数値計算)

 NumPyは数値計算をPythonよりも高速に行うことができるライブラリです。Pythonはインタープリタ型のスクリプト言語ですので、C言語のような低級言語と比べるとパフォーマンスは良くありません。NumPyは内部実装でC言語を利用することにより高速化しています。例えばPythonのループではなくCのループを用います。また、メモリ上で連続した領域に格納されるためCPUを効率よく使用できます。

 下記のコードでは、Pythonの標準機能での計算とNumPyによる計算をそれぞれ行っています。

[リスト4]NumPyコード
import random
import numpy as np
%precision 3

n = 10000
x = [random.random() for _ in range(n)]
y = [random.random() for _ in range(n)]
x[:3],y[:3]
z = [x[i] + y[i]  for i in range(n)]
print("Python標準機能での計算:")
%timeit  [x[i] + y[i]  for i in range(n)]

xnp = np.array(x)
ynp = np.array(y)
znp = xnp + ynp
znp[:3]

print("NumPyによる計算:")
%timeit  xnp + ynp

 結果は下記のように表示されます。計算結果は同じですが、計算結果は2桁以上の差でNumPyが速い結果になっています。

Python標準機能での計算:
995 µs ± 12.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
NumPyによる計算:
4.76 µs ± 59.2 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

pandas(データ解析)

 データ解析向けのライブラリであるPandasはデータフレームを扱うことができます。データフレーム(data frame)は、表形式のデータを抽象化したオブジェクトです。スプレッドシートにおける1つのシート、あるいはデータベースにおける1つのテーブルを、まるごと1つのオブジェクトにしたものです。

 表形式のデータは縦・横の2次元の配列です。「配列の配列」によりデータフレームを作成できます。

[リスト5]Pandasコードの例
import pandas as pd

df = pd.DataFrame({'男': [11, 21, 31],
                   '女': [13, 23, 33]},
                  index=['東京', '大阪', '福岡'])

df

 Jupyter NotebookではPandasのデータフレームは、テーブルとして表示します。上記の実行結果は下記のように表示されます。

結果のテーブル
結果のテーブル

 Pandasのデータフレームを利用することにより、Pythonによるデータの加工や集計が効率的にできるようになります。

matplotlib(データ可視化)

 MatplotlibはMATLAB風の描画を行うライブラリです。MATLABは数値計算の特にアカデミックな分野ではデファクトとして使われている描画ツールです。

 Jupyter NotebookではMatplotlibを用いることで、出力したグラフをNotebook内に表示させることが可能になります。'%matplotlib inline'という行を記載する必要があります。

[リスト6]matplotlibの例
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

x = np.arange(0,20,0.1)
y = np.sin(x)
plt.plot(x,y)

 上記の実行結果は下記のように表示されます。

matplotlibの描画例
matplotlibの描画例

まとめ

 Pythonによるデータ解析の場面でよく使われるツールであるJupyter Notebookを中心にデータ解析環境を整える方法を紹介しました。

 次回以降は今回紹介したツールやライブラリを用いながら具体的なデータ解析の手順など解説を予定しています。

修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Pythonによるデータ解析入門連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 西 潤史郎(ニシ ジュンシロウ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook<個人紹介>フリーランスとしてデータ解析エンジニアとして主にビッグデータ関連の仕事をしています。TableauなどBIやビッグデータ処理などビジネスデータ解析環境の構築・運用、また解析系のアプリケーション開発やGoogleアナリティクス活用支援などを行っています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10917 2018/07/05 11:39

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング