pandas

import pandas as pd

データ型

サンプルデータ

df = pd.DataFrame([
    {"column1": 1, "column2": 2},
    {"column1": 3, "column2": 4},
])

型を確認する

df.dtypes
column1    int64
column2    int64
dtype: object

結果はSeriesとなる。

型を変換する(一括)

_df = df.astype("str")
_df.dtypes
column1    object
column2    object
dtype: object

型を変換する(個別)

なお、文字列で指定しても解釈してくれる

NumPyの型も解釈可能。

置換

  • サンプルデータ

辞書型で置換可能。

Seriesに対しても可能。

カラム名を置き換える場合は、キーワード引数でcolumnsを使用する。

抽出(query)

user_idが重複しているレコードを抽出する例。

","で結合して、queryのinで抽出する。

カラムの並び替え

  • 並び変えたカラムを[]に入れるだけで良い。

group集計して統計量を計算する。

  • 既に準備されている統計計算をする場合

  • 自作でpersentileなどを計算したい場合

  • 時系列データを集計する場合

    • 時刻情報がある場合、その列をindexにすることで、resampleが使えて集計できる。

    • 購入量の時系列データのイメージで以下は'M'で月ごとの結果を集計する例。

行を挿入する。

  • seriesをappendする。

  • dictをappendする。

列毎の欠損数を求める。

applyの使用法まとめ

query記法を使った条件抽出

  • カラム名に空白のある場合はバッククォートを使う。

  • placeholderは、f-stringでもかけるが、@の方が汎用性が高い。

時刻系のデータをquery記法で処理

たとえばtimedeltaを数値として扱いたい場合などは、datetime.timedeltaと併せて使う。

read_csvで型指定

  • dictで各列の型を指定できる。

  • 日付等は以下のように後変換する。

抽出して新しい列を作る

rank: 順位を付ける

unique: 出現する種類を把握する

value_counts: 内訳を知る

その他のオプション

  • normalize=Trueで比率を計算できる。

  • bins=30で連続値も集計できる。

  • dropna=TrueでNaNを無視できる。

sort_values: 並べ替え

isnull(): 欠損値かどうかを調べる

dropna(): 欠損値を削除する

  • 通常は一つでも欠損がある場合は削除される。

  • どこかの列に基づきたい場合は、subsetで指定する。

欠損値を列毎に修正する

locとilocの違い

  • locはindex(いわゆるDataFrameのIndex), column名でアクセスする。

  • ilocは本当のindex番号で縦横ともにアクセスする。

    • なのでilocを使えば、reset_index(drop=True)しなくてもアクセスしたいものにアクセスできるかもしれない

merge: joinしたいとき

  • だいたいこんな感じの書き方におさまる。

  • 複数をキーにjoinしたい場合は、on=['column1', 'column2']とすればOK。

  • join後に重複するカラム名は、suffixes=['_left', '_right']と指定すれば末尾に目印をつけられる。

groupby + agg: 集約したいとき

  • だいたいこんな感じの書き方におさまる。

grouby + transform: 集約したものを各行に割り当てる

  • 集約となるmeanやsumは、transformにより行を元のDFに拡張することができる。

groupby + shift, rank: 集約でない場合のgroupby + 各行割り当て

  • transformとかも選択肢にでてくるけど、使わなくても行ける。

  • 集約ではなく、shiftやrankなどの場合はこの方法が使える。

idxmin: 最小値の時のPandas Indexを得る

drop_duplicates: 重複を削除する

  • 残すものをコントロールするためには、事前にsort_valuesしておく感じの使い方となる。

duplicated: 重複の判定

  • ほぼdrop_duplicatedと同じ。

  • 抽出の場合はこうする

より高度な最適化

Last updated