Python モジュール: pandas

  • Python のデータフレームモジュール
    • データフレームとは、複数のデータ型が入り交じるデータ集合を 1 つのデータセットでまとめたもの
      • リストやディクショナリ型でも対応は可能だが、例えば 1 原子に様々なパラメータ (座標や原子名、原子量などなど) が加わると、
        • データへのアクセスの仕方が難しくなる
        • ソートが難しい
        • プログラム言語にもよるが、リストやディクショナリでは特定の型のデータしか格納できない
        • 内部のデータを確認する際に、for 文などで取り出して整形しないと見づらい
      • データフレームでは、自動で整形やソートの際の煩雑な作業をしてくれるのでデータ処理が楽になる。

インストール

$ sudo pip3 install pandas

モジュールの読み込み

import pandas

あるいは

import pandas as pd
  • as pd によって、以降 pd で呼び出せる。
  • ここではこっちの読み込みをした場合で記述していく。

データフレームの作成

data_frame = \
pd.DataFrame([
             ["Tanaka", "Suzuki", "Yamada"],
             [59, 20, 31],
             [150, 160, 159]
]).T
 
data_frame.columns = ["Name", "Age", "Height"]
data_frame.index = [1,2,3]
  • .T: numpy の転置と同じ (pandas では、行を個々のデータ、列をデータの種類としているため、転置を使っている)
  • data_frame.columns で、各リストのデータ名 (カラム名) を上書きする
  • data_frame.index で、各リストのインデックス (シリアル ID) を上書きする
    • インデックスは数値でないといけない

データフレームへのアクセス

  • カラム、インデックスへのアクセス
    print(data_frame.columns)
    print(data_frame.index)
    • `data_frame.columns` でカラム一覧にアクセス
    • `data_frame.index` でインデックス一覧にアクセス

データの追加

値の取得・変更

  • 行ラベルと列ラベルで指定した値を取得
    DF.at[ROW_LABEL, COL_LABEL]
    • DF: データフレーム変数
    • ROW_LABEL: 行ラベル
    • COL_LABEL: 列ラベル
  • 行ラベルと列ラベルで指定した値を変更
    DF.at[ROW_LABEL, COL_LABEL] = VALUE
    • DF: データフレーム変数
    • ROW_LABEL: 行ラベル
    • COL_LABEL: 列ラベル
    • VALUE: 新しい値
  • 行番号と列番号で指定した値を取得
    DF.iat[ROW_INDEX, COL_INDEX]
    • DF: データフレーム変数
    • ROW_INDEX: 行番号
    • COL_INDEX: 列番号
  • 行番号と列番号で指定した値を変更
    DF.iat[ROW_INDEX, COL_INDEX] = VALUE
    • DF: データフレーム変数
    • ROW_INDEX: 行番号
    • COL_INDEX: 列番号
    • VALUE: 新しい値

データフレームのサイズ確認

  • 2 つの方法がある。
    • .index.columns で取得したカラム名やインデックス名のリストを len() を使って取得する。
    • DATA_FRAME.shape でインデックスとカラム数を同時に取得する。

ファイルの読み込み

  • テキストファイルの場合
    DF = pd.read_table("INPUT.txt", names = [LABEL1, LABEL2, ...])
    • DF: データフレームを格納する変数
    • INPUT.txt: 入力ファイル
    • LABEL1, LABEL2,…: カラム名

CSV ファイルの読み書き

  • 読み込み
    DF = pd.read_csv(CSV_FILE[, OPTION])
    • DF: データフレームを格納する変数
    • CSV_FILE: CSV ファイルのパス
    • OPTION: その他のオプション (任意)
    • この場合、1 行目が列ラベルとして割り当てられる。
    • 列ラベルの指定方法
      • 1 行目をラベルとして割り当てたくない場合は、OPTIONheader = None を指定する。
      • 任意の列ラベルを指定する場合は、OPTIONname = (LABEL1, LABEL2, …) を付け、LABEL1LABEL2 に列ラベルを指定していく。
      • 特定の行を列ラベルとして指定する場合は、OPTIONheader = NUMNUM に行番号 (0 から始まる) を指定する。この場合、指定した行より上の行は無視される。
    • 行ラベルの指定方法
      • 特定の列を行ラベルを指定する場合は、OPTIONindex_col = NUMNUM に列番号 (0 から始まる) を指定する。
  • 書き出し
    DF.to_csv(CSV_FILE[, OPTION])
    • DF: データフレームが格納された変数
    • CSV_FILE: 出力する CSV ファイルのパス
    • OPTION: その他のオプション (任意)
    • 特定の列のみを書き出す場合、OPTIONcolumns = [LABEL1, LABEL2, …] を追加し、LABEL1LABEL2 に書き出す列ラベルを指定していく。
    • 列ラベルや行ラベルも書き出す場合は、OPTIONheader (列ラベル) や index (行ラベル) を追加し、TRUEFALSE で ON/OFF を切り替える。デフォルトは両方 True
    • 区切り文字を指定する場合は、OPTIONsep = SEP を追加し、SEP に区切り文字を指定する。SEP\t を指定すると、TSV 形式のファイルで出力できる。
  • 参考サイト: