Pandasのメモ.

目次

  1. インポート
  2. シリーズ
    1. インデックスの取得
  3. データフレーム
    1. カラムの取得
    2. 行の取得
    3. セルの取得
  4. インポート・エクスポート
    1. CSV
    2. TSV
    3. SQL
    4. クリップボード
  5. ソート
  6. フィルタ
  7. 置換
  8. Null
    1. Null値の存在確認
    2. Null値を指定した値で置換
    3. Null値を含む行を無視する
  9. 集計
    1. 関数
    2. 集約
    3. ピボットテーブル

インポート

pip install pandas
import pandas as pd

シリーズ

行はインデックス

pd.Series(リスト, index=行名のリスト)

インデックスの取得

s = pd.Series([1, 2], index=['a', 'b'])
s.a # 1

データフレーム

行はインデックス,列はカラム.
行単位のリストから生成する場合,

pd.DataFrame([行1のリスト, 行2のリスト, …], index=行名のリスト, columns=列名のリスト)

列単位のリストから生成する場合,

data = {'列名1': 列1のリスト, '列名2': 列2のリスト}
pd.DataFrame(data, index=行名のリスト)

カラムの取得

df = pd.DataFrame([[1, -1], [2, -2], [3, -3]], index=['one', 'two', 'three'], columns=['pos', 'neg'])
df.pos # [1, 2, 3]

行の取得

df.loc[インデックス名]
df.iloc[インデックス番号]

セルの取得

df.at[インデックス名, カラム名]
df.iat[インデックス番号, カラム番号]

インポート・エクスポート

CSV

pd.read_csv(パス)
pd.to_csv(パス)

TSV

pd.read_csv(パス, sep='\t', header=None)  #ヘッダなしTSVの読み込み
pd.to_csv(パス, sep='\t', index=True, index_label='インデックスの列に与える名前') #各行にラベルのあるTSVの書き出し

SQL

pd.read_sql(sql, conn)
pd.to_sql(sql, conn)

クリップボード

pd.read_clipboard()
pd.to_clipboard()

ソート

df.sort_values(['col1_name', 'col2_name'], ascending=[True, False])

とすると,col1を昇順に並べた上で,col2を降順にする.

フィルタ

bool型シーケンスの条件で

df[条件]

とすればフィルタされる.
条件には例えばaという名前の列を持つ場合,

条件 = (df.a > 10)

条件 = df.a.str.contains('正規表現')

も指定できる.

置換

df.replace('置換前', '置換後', regex=True)

Null

Null値の存在確認

Null値の存在確認だけしたい場合は次のようにする.

pd.isnull(df).any()

Null値を指定した値で置換

Nullを0で置換するなら,

df.fillna(0)

Null値を含む行を無視する

次でNull値の存在する行以外を取り出せる.

df.dropna()

集計

関数

df.describe()

で以下の関数を集計して表示する.

  • count()
  • mean()
  • std()
  • min()
  • df.quantile(0.25)
  • df.quantile(0.50)
  • df.quantile(0.75)
  • max()

その他の関数には次のようなものがある.

  • median()
  • mode()
  • var()
  • sample(n):無作為な順でn件のデータ
  • head(n):先頭n件のデータ
  • tail(n):末尾n件のデータ

集約

df.groupby(カラムのリスト).関数

とすることで集約後に関数を適用できる.

ピボットテーブル

カラム1, 2をそれぞれ縦軸,横軸とした表を作り,カラム3のデータを指定した関数によって集計した上でセルに配置するには

df.pivot_table(index=カラム1のリスト, columns=カラム2のリスト, vaues='カラム3の名称', aggfunc=関数)

とする.