データ分析のライブラリ!Pandasとは【初心者向け】|現役エンジニアが解説
データの統計量を表示したり、グラフ化するなど、データ分析(データサイエンス)のライブラリPandasについて紹介しています。Pandasとは一体どんな機能を持っているのか、何ができるのか説明。実際に使用した説明も載せているので、よりイメージが湧くでしょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
今回は、Pythonのデータ解析用ライブラリであるPandasについて解説します。
Pandasを使うと、データの統計量を表示したり、グラフ化するなど、データ分析(データサイエンス)や機械学習で必要となる作業を簡単に行うことができるようになります。
Pythonでデータ分析を行うには、必須のライブラリなので、ぜひこの記事を参考に、Pandasの使い方を覚えましょう。
なお本記事は、TechAcademyのAIオンライン講座の内容をもとに作成しています。
目次
田島メンター!Pandasというのは何でしょうか?
Pythonのデータ解析用のライブラリだよ。Pythonでデータ分析や機械学習を行うには、必須のライブラリなんだ。
どのような機能があるのですか?
例を見ながら説明していくね!
Pandasとは
Pandasは、Pythonでデータ分析を効率的に行うためのライブラリです。Pandasはオープンソース(BSDライセンス)で公開されており、個人/商用問わず、誰でも無料で利用することができます。
Pandasを使うと、
- データの読み込みや統計量の表示
- グラフ化
- データ分析
に関する作業を容易に行うことができるようになります。また主要なコードはPythonまたはC言語で書かれており、Pythonだけでデータ分析を行うのと比較して、非常に高速に処理を行うことができます。
データ分析(データサイエンス)は、機械学習を行うまでの前処理(データの読み込み、クリーニング、欠損値の補完、正規化など)が、全ての作業の8〜9割を占めると言われています。Pandasを使うとそのような処理が効率的に行えるようになるため、Pythonで機械学習を行うには、Pandasは必須のライブラリとなっています。
Pandasの特徴
Pythonによるデータ分析で多く使われているライブラリといえば、PandasやMatplotlib、NumPyなどがあげられます。これらのライブラリはそれぞれ以下のような特徴があります。
Pandas
Pandasはデータの読込や並べ替え、欠損値(欠けている項目値)の補完などを行うことができるライブラリです。データ分析の前処理段階でとても多く利用されています。
データの読込はCSVやテキストだけでなく、エクセルやインターネット上で提供されている株価情報など、多様な形式のデータを読み込むことが出来ます。
また、Pandasの特徴はDataFrameという多機能な「表」にあります。DataFrameにはデータの平均値や行数などの概要的な特徴を把握する機能や、並べ替えや列名の変更などのデータを整形する機能があります。
またキーを指定しての集計やMatplotlibと連携してのグラフによる可視化など、データ分析のデータ前処理の段階で便利な多くの機能が提供されています。データ分析の過程では、Pandasである程度データをきれいに整えてから、NumPyで数値計算を行うようといったように、使い分けて利用することが多いでしょう。
Matplotlib
MatplotlibはPythonで代表的なグラフを描画するライブラリです。2Dだけでなく3Dも含めた多くの種類のグラフを描画することができます。
Matplotlibは慣れると使いやすいのですが、はじめは使い方がやや難しく感じると思います。そのような場合、PandasやSeabornなどのライブラリと組み合わせることで、見た目の良いグラフを簡単に描画することができます。
Matplotlibはデータ分析の様々な段階で、NumPyやPandasと組み合わせてデータの概要を把握したり、特徴を可視化するような目的で使用します。
NumPy
NumPyは数値計算や行列演算を行うライブラリです。複数の数値を配列としてまとめて扱ったり、行列演算を行ったりするのが得意です。
特にコンピューターで小数点以下を扱う際の標準的な形式である浮動小数点型の行列演算を高速に行うことが出来ます。また三角関数や平方根などの数値計算の機能も豊富です。
NumPyはある程度データの前処理が終わり、きれいに整ったデータに対して数値計算を行うのに向いているライブラリと言えます。
Pandasでできること
Pandasには多くの機能があります。主に利用する機能を確認してみましょう。なお以下でDataFrameと記載しているのはDataFrameオブジェクトを指しています。
データの読込
- CSV形式のデータの読込:read_csv()
- Excelファイルの読込:read_excel()
- JSON文字列の読込:read_json()
- pickle形式(Pythonオブジェクトを保存する形式)によるデータの読込/書込:read_pickle()、to_pickle()
- インターネット上で提供されている株価情報の読込:pandas-datareader
データの特徴を把握
- データの特徴を表示:DataFrame.info()
- 要約統計量を表示:DataFrame.describe()
- データの一部を表示:DataFrame.head()、DataFrame.tail()
- データの形状を表示:DataFrame.shape
- 行数を取得:DataFrame.index.values
- 列名を取得:DataFrame.columns.values
- それぞれの列の型を取得:DataFrame.dtypes
データの切り出し(スライス)
- データのスライス:DataFrame[]、DataFrame.iloc[]、DataFrame.loc[]
- フィルタリング:DataFrame.query()
データの並べ替え
- 値による並べ替え:DataFrame.sort_values()
- インデックスによる並べ替え:DataFrame.sort_index()
- 列名の変更:DataFrame.rename()
集計
- 列の集計:DataFrame.value_counts()
- 表の集計:DataFrame.groupby()
- ※groupby().sum()で合計、groupby().mean()で平均値得ることができる
可視化
Matplotlibのimportが必要
- ヒストグラム:DataFrame.hist()
- 散布図、線グラフ:DataFrame.plot()
- 棒グラフ:DataFrame.bar()
- 箱ひげ図:DataFrame.boxplot()
欠損値の扱い
- 欠損値の確認:DataFrame.isnull().sum()
- 欠損値に値を埋める:DataFrame.fillna()
- 欠損値のある行を削除する:DataFrame.dropna()
その他
- カテゴリー変数の展開:get_dummies()
- 列同士の相関を確認:DataFrame.corr()
Pandasを使うメリット
データ分析であればExcelなどの表計算ソフトを使えば十分という方も多いでしょう。Pandasを使うと、大量データに対して何度でも同じ処理をプログラムを実行するだけで行うことができるというメリットがあります。
大量データの処理が可能
Pandasではパソコンのメモリ容量が許す限り、大量のデータをDataFrameに読み込んで処理を行うことが出来ます。動作速度も表計算ソフトほど遅くはなりません。
同じ処理を何度も再実行できる
1つ1つの作業を人間が操作して行うのではなく「プログラム」として記述することで、何度でも全く同じ処理を繰り返し実行することが可能となります。
データ分析では再現性が重要であり、手順書をもとにした人間の操作よりも、プログラムで処理自体を記述したほうが、確実に同じ処理を再実行することができます。
また、大量データに対する処理は数時間~数日も時間を要することがあります。このような場合でも、人間はプログラムを実行して結果を待つだけです。表計算ソフトのように、付きっきりで操作し続ける必要はありません。
さらにパソコンを複数台数用意して、条件を少し変えたプログラムを同時並行で実行して結果を比較する、といったことも容易に実現可能です。
他のライブラリと連携し多彩な機能を実現できる
他のライブラリと連携することで、プログラムを実行してグラフを描画したり、加工した結果を表計算ソフトのファイルとして出力するなど、Pandasだけでは行えない多くのことを実現することができます。
Pandasを利用するには
Pandasを利用するには、Anacondaなどの「ディストリビューション」と呼ばれる開発環境をまとめたパッケージを使うのが簡単です。Anacondaは、データ分析やグラフ描画など、Pythonでよく利用されるライブラリを含んだ開発環境です。
ここではAnacondaを例にダウンロード手順と初期設定について確認しましょう。
ダウンロード手順
Anacondaの公式サイトからProducts > Individual Edition > Downloadを表示します。
Anaconda – Individual Edition – Download
Windows、Mac共に「Python 3.7 – 64-Bit Graphical Installer」をクリックしてダウンロードします。なお、Python2.7は古いバージョンであり、サポート期間が2020年4月とすでに終了しています。どうしても必要な場合を除き、利用することは無いでしょう。
ダウンロードしたファイルを実行することでインストールを行うことが出来ます。選択肢などは既定値のままで良いでしょう。
初期設定
インストールが終わったら、Anaconda Navigatorを起動します。はじめに初期設定として必要なライブラリをインストールしましょう。
ライブラリのインストールはEnvironmentsから行います。Environmentsを開き、「Not installed」を選択して検索ボックスに「pandas」と入力します。
一覧にPandasが表示されますので、チェックボックスで選択し、画面右下のApplyボタンを押すことでインストールすることができます。
また、今回は説明用にscikit-learnのサンプルデータセット(トイデータセット)を使用します。同様にscikit-learnとnumpy、matplotlibもインストールしておきましょう。
インストールが終わったらHomeに戻ります。プログラムはJupyter Notebookで作成します。画面の「jupyter notebook」と書かれた部分の「Launch」ボタンをクリックします。
初回は「Install」ボタンになっており、クリックするとJupyter Notebookがインストールされます。
以降は、Jupyter Notebookをもとに、Pandasの使い方を説明します。
Pandasの使い方
Pandasを使う際は、初めにPandasライブラリをインポートします。併せてサンプルデータセットも利用できるようにしておきましょう。
# Pandas、及び必要なライブラリのインポート import pandas as pd from pandas import DataFrame import numpy as np # サンプルデータセットを取得する from sklearn import datasets boston = datasets.load_boston()
実行結果は特にありません。エラーがでなければ、正しくインポートされています。
次に、サンプルデータセットをPandasのDataFrame型に変換しておきます。なお、今回はサンプルデータセットを使いましたが、CSVデータを読み込むread_csvという命令も用意されています。
# PandasのDataFrame型に変換 df = DataFrame(boston.data, columns = boston.feature_names) # 目的変数をDataFrameへ追加 df['MEDV'] = np.array(boston.target)
準備が整いました。それではPandasの命令を幾つか見ていきましょう。
データの概要を確認する
先頭5行を表形式で表示する
df.head()
実行結果は以下のようになります。
行列数を表示する
df.shape
実行結果は以下のようになります。
(506, 14)
細かい情報を表示する
dataset.info()
実行結果は以下のようになります。
<class 'pandas.core.frame.DataFrame'> RangeIndex: 21613 entries, 0 to 21612 Data columns (total 21 columns): id 21613 non-null int64 date 21613 non-null object ... sqft_living15 21613 non-null int64 sqft_lot15 21613 non-null int64 dtypes: float64(5), int64(15), object(1) memory usage: 3.5+ MB
データの統計量を確認する
統計量を表示する
df.describe()
実行結果は以下のようになります。
countは件数、meanは平均値、stdは標準偏差、minは最小値、25%・50%・75%は四分位点、maxは最大値を表します。
その他の統計量を表示する
print("平均値:", df.MEDV.mean()) print("中央値:", df.MEDV.median()) print("分散:", df.MEDV.var())
実行結果は以下のようになります。
平均値: 22.5328063241 中央値: 21.2 分散: 84.5867235941
グラフを表示する
グラフ表示は内部でmatplotlibを利用します。
ヒストグラムを表示する
全てのデータだと時間がかかるため、100件で表示しています。
df.MEDV[:100].hist()
実行結果は以下のようになります。
その他、散布図や棒グラフ、箱ひげ図など、多くのグラフを描画することができます。
データを加工する
型を変換する
以下ではfloat型に変換しています。
df.MEDV.astype(float)
実行結果は以下のようになります。
0 24.0 1 21.6 2 34.7 3 33.4 4 36.2 5 28.7 (以下、略)
行・列を指定して取り出す
ixを利用することで、表の一部を取り出すことができます。
df.ix[:9][['AGE', 'MEDV']]
実行結果は以下のようになります。
列に対する演算を行う
df['MEDV2'] = df['MEDV'] * 2 df.head()
実行結果は以下のようになります。列同士の計算も簡単に行うことができます。
欠損値を補完する
欠損値とは、データに含まれる値が無い部分です。例えば、例えばCSVファイルをPandasを利用して読み込んだ時、要素の値が空白だと、欠損値とみなされます。欠損値はNaN(Not a Number)とも表現されます。
欠損値への対応としては、行または列を削除する、欠損値を0などに置き換える、といった方法があります。欠損値を0などに置き換えることを、欠損値の補完と言います。
欠損値を補完するには、fillna命令を使用します。
df.fillna(0, inplace=True)
実行結果はありませんが、データに含まれる欠損値が0で置き換わっています。
Pandasには、この他ピボットテーブルの作成、クロス集計、行列への関数の一括適用など、データ分析に必要な処理が多く含まれています。公式サイトなども参考にしてみてくださいね。
Pandasをより便利に使う方法
Pandasのオプションを指定することでDataFrameの結果をより見やすく変更することができます。一例として数値の表示方法を指定するオプションをご紹介します。まずは一部の列を抜き出したDataFrameを作成します。
df2 = df[['CRIM', 'ZN', 'CHAS', 'NOX', 'RM']] print(df2)
実行結果は以下のようになります。
数値の表示方法は float_format オプションで指定します。数値の表示方法はPythonの書式指定文字列を使用して指定します。Pythonの書式指定文字列について、詳しくは公式ドキュメントも参考にしてください。
例えば以下は、全体で10桁右寄せ表示とする例です。「>」が右寄せ、「10」が10桁、「.4f」が小数点以下の桁数を表しています。
pd.options.display.float_format = '{:>10.4f}'.format print(df2.head())
実行結果は以下のようになります。先ほどと見た目が変わり、すべての列が同じ桁数で表示されるようになりました。
ゼロ埋めすることも可能です。「0=」でゼロ埋めを表しています。
pd.options.display.float_format = '{:0=10.4f}'.format print(df2.head())
実行結果は以下のようになります。
Pandasのオプションでは、この他に様々な指定が可能です。オプションについて、詳しくは公式ドキュメントも参考にしてください。
Pandas – Options and settings(英語)
Pandasの勉強方法
ここまで見てきたように、Pandasには多くの機能があります。データ分析には欠かせないライブラリですが、機能が多すぎて、どこから勉強を始めたら良いか、分からない場合も多いことでしょう。最後にPandasの勉強方法についてご紹介します。
Pythonの勉強を行う
まずはPythonについて理解を深めましょう。特にPandasと考え方が共通するシーケンス(リスト、タプルなど)をしっかりと学習するようにします。以下でPythonの習得に役立つ記事を紹介しています。
補助教材としては動画もおすすめです。YouTubeのTechacademyチャネルではPython入門の動画も公開しています。
Pandasの基礎を学ぶ
まずはDataFrameを中心に、Pandasの基本的な使い方を学びましょう。すべての機能を理解する必要はありません。DataFrameとはなにか、列や行、インデックスの考え方などを学ぶようにします。
学ぶ際は実際にプログラムを入力し、動作確認を行うことをおすすめします。この記事で紹介している主な機能や使い方などが参考になります。またYouTubeでもPandas入門の動画が多くありますので参考にすると良いでしょう。
データ分析にチャレンジしてみる
Pandasの基礎を学んだら、実際にデータを使ってデータ分析にチャレンジしてみましょう。はじめは以下のようなことを行うと良いでしょう。
- データの平均値や最小値、最大値を確認する
- グラフ化して、より詳細にデータの特徴を把握する
- データの一部の行、一部の列を抜き出してみる
- 並べ替えを行う
- 欠損値が無いか確認し、あれば補完してみる
データはこの記事でも使用したscikit-learnのトイデータセットがおすすめです。この記事では「ボストンの住宅価格のデータセット」を使用しましたが、他にも様々な種類があるので参考にしてください。
より理解を深めるのであれば書籍の購入を検討すると良いでしょう。以下の書籍では具体的なデータの前処理の工程を例にPandasの使い方を紹介しています。
現場で使える!pandasデータ前処理入門 機械学習・データサイエンスで役立つ前処理手法
Pandasについて、理解は深まったかな?
概要やプログラムの書き方など、勉強になりましたー!
分かりました。ありがとうございました!
今回は、Pythonのデータ解析用ライブラリのPandasについて解説しました。これからPandasを勉強したい、機械学習を使って何か作ってみたいという方は最初に理解しておきたい内容でしょう。
この記事を監修してくれた方
太田和樹(おおたかずき)
ITベンチャー企業のPM兼エンジニア普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント 地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。 |
オンラインのプログラミングスクールTechAcademyでは、AIオンライン講座を開催しています。
AI(人工知能)の構築に必要な機械学習・ディープラーニングについて実践的に学習することができます。
現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、習得することが可能です。
現役エンジニアのサポートとカリキュラムを体感できる無料体験も実施しているので、まずはこちらからお試しください!