pandasまとめ
はじめに
- pandasの基礎
データ(データフレーム)を作る
- 基本
- |pd.DataFrame|
- pandas:【基本】データフレーム作成
- Pythonデータから
- |pd.DataFrame|
- NumPy配列から
- |pd.DataFrame|列名:columns=[xx,xx]|
- CSVデータから
- |pd.read_csv|pd.read_csv|
データ抽出方法あれこれ
【仕組みを覚える】
- 「列」指定方法(列名、列のインデックス番号)
- |df['a’]|df[['b’,’c’]]|df.a|
- 「列」指定方法(列番号指定)
- |df[df.columns[[0,2]]]|
- pandas:【サンプルコード】列の範囲指定
- 「行」指定方法(行のインデックス番号)
- |df[0:2]|df[:]|
- 条件付き行データ抽出の基本(処理が高速)
- |df[df.index==0]|df[df.a==12]|df[df['a’]==24]|
【便利な機能】
- 高度なデータ抽出方法
- |df.loc|df.iloc|
- 条件付きで複数データ抽出
- |df.q.isin([12,17])|NaNデータ:df.a.isnull()|
- 条件の否定(~以外、~でない、~を含まない)
- |df[df['p’] != 63]|df[~(df['q’] == 25)]|df[~(df['r’].isin([20,77,96]))]|
- pandas:【~(チルダ)】否定条件での行抽出
- 件数集計、ソート、先頭(行頭)、末尾
- |value_counts|sort_values|head|tail|
- 集計(sum,max,min,mean,…)
- |aggregate(agg)|
- pandas:【集計】sum,max/min,mean
- こんなことできる?(SQLのSELECT文を例にして)
- |GROUP BY:df.unique|部分一致(正規表現利用):str.contains('^a’)|
- pandas:【SQL文で例える】データ抽出方法
データ更新
- 行データ更新、列データ更新、セル更新、行追加
- |代入:対象選択=xx|df.update|追加:更新処理の延長|
- pandas:データ更新【UPDATE,INSERT】方法
- 行データ削除
- |df.drop|
- pandas:データ削除【DELETE】方法
- 列データ一括更新
- |置換文字列格納:ディクショナリ|置換文字列作成:マージ(**記号)|置換:lambda|
データフレーム操作(DDL)
- 列追加、列削除、列名変更、インデックス列指定、応用:ラベルエンコーディング
- |df.rename(columns={'a’:’b’})|set_index|sklearn,LabelEncoder|
- データフレームの結合(縦方向、横方向)、インデックス番号のリセット
- |pd.concat|reset_index|
- マージ(共通の列を使って2つのデータフレームを結合)
- |pd.merge|
- データフレームをクラス列で分割する
- |.groupby|
その他
【データフレーム情報取得】
- インデックス列、行数、列名、データタイプ/種類
- |df.index|shape|columns|unique|
- pandas:【列名リスト】【行数】【タイプ】
【データ変換】
- Numpy配列変換、行のインデックス番号リセット、関数一括変換、文字列→リスト
- |df.values|df.reset_index|df.apply|df.literal_eval|lambda|
- pandas:様々な【データ変換】方法
【ループ処理】
- 様々な取り出し方→NumPy配列、pandasデータ、インデックス番号付与
- for … in|df.values:|df.iloc:|s.items():|df.iterrows():|
- pandas:データ取り出し【ループ処理】記述例