【Python】Pandasの基本的な使い方の速習

Pythonの応用
スポンサーリンク

PandasはPythonでデータ解析を行うための機能を持ったライブラリで、数表や時系列データを操作するためのデータ構造を作ったり演算を行うことができます。

ここではPandasの基本的な使い方を一気に学んでいきます。

Anacondaを使っているなら、Pandasはすでにインストールされているのではないかと思いますが、入っていなければターミナルからcondaコマンドやpipコマンドでインストールしましょう。

NumPy同様に、ここでもjupyter notebookを利用します。

スポンサーリンク

Pandasの基本的な使い方を一気に学ぶ

jupyter notebookを起動したら、まずはPandasをインポートしましょう。

NumPyを利用しての計算も後々出てくるので、合わせてインポートします。Pandasは慣例としてpdとして利用します。

Series()で1次元のデータを作る

まずPandasで1次元のデータを作ってみます。これにはSeries()を使います。

リストに入ったデータを利用して次のように書きます。

(以降はインポート文は省略します)

4つのデータが入っているのがわかりますね。

[shift]+[return]キーで実行して、sを表示します。

インデックスと対応させてデータが表示されているのがわかります。

インデックスを指定して値を表示したり、メソッドを利用して合計を求めたりすることができます。

このあたりはNumPyと同じような操作ですから他のメソッドも利用できますね。ちなみにドット(.)を入力した時に[tab]キーを押せば、メソッドの一覧が表示されます。

DataFrame()で2次元のデータを作る

次は2次元のデータです。こちらの方が利用する機会が多いでしょう。DataFrame()を使って2次元の値を与えることで作成できます。

次のように辞書型データを使っても作ることができます。

慣例として変数をdfにすることが多いです。

これを実行するとこうなります。

このように縦横のマトリクスに対応したデータが表示されます。

データのタイプは次のようにして確認できます。

スポンサーリンク

DataFrame()を操作する

DataFrame()を使った2次元のデータの作成はわかりましたが、本来のデータは多く、もっと複雑ですので整理などが必要となります。

そこでDataFrame()の様々な基本操作の方法をここで一気にみていきましょう。

まず6行4列のデータをrandomを使って作ってみます。

ここまではいいのですが、データの項目が一体何なのか、これでは意味を理解することができません。

データにラベルをつける

そこで、縦と横の項目にラベルをつけていきます。

date_range()を使って縦の項目にラベルをつけます。ここでは日付を入れました。preriodsにはデータの数を指定します。横の項目にはcolumsにリストでラベルを指定してあげます。

実行するとこうなります。

縦、横それぞれの項目が表示されたので、データの意味がわかりやすくなりました。

head()でデータの先頭、tail()でデータの末尾を表示する

データの先頭行を表示するならdead()を使います。

ここでは数字の1を入れて操作しましたが、丸括弧()に数字を入れなければ、先頭から5つのデータが表示されます。

末尾のデータを表示させるならtail()を使います。

3を入れているので末尾から3つのデータを表示しています。数値を入れなければ5つのデータが表示されます。

index, columns, valuesで縦軸、横軸、中身を表示

データの縦軸の表題(インデックス)、横軸の表題(カラム)、データの値をそれぞれ表示させるには次のコードを使います。

 describe()で基本統計量を取得する

describe()を使えば基本統計量を取得できます。

それぞれ、件数 (count)、平均値 (mean)、標準偏差 (std)、最小値(min)、第一四分位数 (25%)、中央値 (50%)、第三四分位数 (75%)、最大値 (max) を確認できます。

行と列の転換、値のソート

行と列の転換にはTを、値のソートにはsort_values()を使います。

Tで縦横が変換されているのがわかります。ソートはCの項目で小さい順に並び替えられているのがわかります。

データのスライス

リストと同じように、データの縦方向のインデックスやラベルの値を使って範囲指定してデータをスライスすることができます。

行、列を指定してデータを参照する

行、列を指定してデータを参照するには、loc、ilocを使います。

locは行、列のラベルを使います。

ilocは行、列の番号を使います。

不等号で取り出す

ある条件のデータでゼロより大きい値を取り出してみます。

まずラベルAのデータがゼロより大きい時のデータ。そしてゼロより大きい全てのデータ。言葉で書くとわかりずらいので、次のような場合です。

上側がAで該当する列のデータを抽出、下側は0以下のデータはNaNと表示しています。

copy()と列の追加

もう一度、dfの内容を確認しておきます。

ここで、このデータをコピーして、E列を加えてデータを入れてみたいと思います。

copy()で複製することができます。この複製をdf2とします。これにE列をしてして値を入れています。

E列に値が入っているのがわかります。

isin()を使って、値が入ってる列のデータを取り出すことができます。

新たな1次元データを列データに加える

ここで1次元のデータを作ってみます。

このデータsをdfに項目Eとして付け加えるには次のように書きます。

shift()でデータをシフトする

shift()を使ってデータをズラすことができます。

元の1行目から下にずれているのがわかると思います。

concat()で連結する

扱いやすいように新しい小さなデータを作ります。

2行2列のデータを作ります。このデータを2つ連結するには、concat()を使います。

行を増やす形で連結されているのがわかります。

append()で追加する

また新たにデータを作ります。

ここにデータの1行目を参照して、新しい一次元データを作ってsに代入します。

このデータsを、元のdfにappend()で追加します。

最後の行にsのデータが追加されているのがわかります。

ただ行番号の0が2つあってちょっとデータとして扱うにはおかしくなる場合がありますよね。

そこで次のように、ignore_index=Trueとして書き直すことで、新しく追加されるデータに新しい行番号が割り振られます。

行番号が整えられました。

groupby()で要素をグループ化

再度、作業用に新しいデータを作ります。

このデータには、A列のデータにa, bがそれぞれ2つ入っています。groupby()を使えば、そ子に含まれる同じ要素をグループ化することができます。

次のコードは要素をまとめてその要素ごとに合計します。

a, bそれぞれの値がまとめられてsum()で合計されているのがわかります。

スポンサーリンク

最後に

Pandasの基本的な操作を簡単ですが一気に見てきました。途中、NumPyを途中で使うことがあるように、どちらもデータの扱いには必要なライブラリです。

もちろんこれ以外にも様々な機能があり、データを外部から読み込むライブラリもあとで扱います。これで終わりではありませんので、さらに詳しいところは別のところでじっくりやろうと思います。

タイトルとURLをコピーしました