機械学習やデータ分析をする際で、pandasは息を吸うように利用することになります。
pandasではDataFrameやSeries等のデータ構造があり、これらをうまく操作しながら、データの分析を進めることになります。今回は、pandasを扱う中で意外と使うような操作について、まとめます。
pandasのDataFrameとSeriesの基本的な構造
pandasでは大きくDataFrameとSeriesの2つの構造があります。DataFrameは、列と行の情報をもつテーブル構造のデータで、Seriesは、1列もしくは一行の情報を持つようなデータとなります。
DataFrameとSeriesの違いを図形にわかりやすく可視化すると次にようになります。

この記事では、主にDataFrameを便利に操作するような内容をまとめます。
またDataFrameですが、DatFrameは次にようなindex、columns, values の3つの要素から構成されています。これを図にするとこのようになっています。

indexは行名、columnsは列名、valuesは表の値に対応しています。
DataFrameを作成・初期化する
DataFrameは、主に、リスト等からDataFrameを直接作成する方法とcsvからデータを読み込む方法があります。
ここでは、リスト等のデータからDataFrameを直接作成する方法について紹介します。
データからDataFrameを作成する
データからDataFrameを作成する場合は、pd.DataFrameメソッドに、データの入ったリストを第一引数に与えることで可能となります。コードは次のようになります。
import pandas as pd
import numpy as np
columns = np.array(["身長", "体重", "性別", "年齢", "住所"])
values = np.array([
[178, 68, "男", 27, "東京"],
[153, 45, "女", 76, "神奈川"],
[181, 89, "男", 34, "東京"],
[172, 57, "男", 19, "千葉"],
[167, 72, "男", 54, "広島"],
[161, 57, "女", 43, "群馬"],
[168, 61, "男", 34, "神奈川"],
[151, 47, "女", 71, "埼玉"]
])
pd.DataFrame(values, columns=columns)
pd.DataFrameに与えるリストは、(行の数, 列の数)のサイズのリストを与えると初期化できます。

DataFrameの要約値を得る
データの系列が多い時は、DataFrameの要約値を見ることで、データの概要を知ることができます。
データのざっくりとした分布等を確認しながら、統計モデルを考えることをよくEDA(exploration data analysis)と呼びます。
df.info()を用いることで、データの基本的なカラム名やnullのデータ数などを確認することができます。
df.info()
結果はこのようになります。

DataFrameの最頻値や最大値などを得る
df.describe()

DataFrameを結合する
dataframeを結合する場合、concat()または、mergeが利用できます。
また結合する場合は、列を増やす方向につなげるのか、行を増やす方向につなげる方法もあるので、適した方を選ぶ必要性があります。
DataFrameのカラム名で検索
多変量解析で多数のカラムを扱う際に、対象のDataFrameから該当するカラムを検索するには、filter()を使います。Index名で検索する場合は、axis=0を指定しています。列名を指定する場合は、axis=1を指定します。
df.filter(regex="a")
df.filter(regex="a", axis=1) # 系列名で検索
df.filter(regex="a", axis=0) # Index名で検索