pandas関連記事まとめ
目次
環境情報・設定
DataFrame, Seriesの基本
- pandas.DataFrameの構造とその作成方法
- 行数、列数、全要素数(サイズ)を取得
- pandasのデータ型dtype一覧とastypeによる変換(キャスト)
- pandas.DataFrameとSeriesを相互に変換
- pandas.DataFrameにおけるビューとコピー
- pandas.DataFrame, Seriesが空か判定するempty
ファイル入出力
CSV
Excel(xls, xlsx)
JSON
- JSON文字列・ファイルを読み込み(read_json)
- pandas.DataFrameをJSON文字列・ファイルに変換・保存(to_json)
- 辞書のリストをDataFrameに変換(json_normalize)
pickle
スクレイピング(Webから情報取得)
他の型(ndarray, list, dict)との変換
グラフ作成
- plotメソッドでグラフを作成しデータを可視化
- pandas, seabornでヒートマップを作成
- pandas, seabornでペアプロット図(散布図行列)を作成
- pandas, Matplotlib(mplfinance)でローソク足チャートを作成
行・列・要素の選択・抽出
行名・列名、行番号・列番号で選択
条件で抽出
- 行を条件で抽出するquery
- 複数条件のAND, OR, NOTから行を抽出(選択)
- 特定の文字列を含む行を抽出(完全一致、部分一致)
- 重複した行を抽出・削除
- 特定の型dtypeの列を抽出(選択)
- 条件を満たす行名・列名の行・列を抽出(選択)
ランダムサンプリング
要素の置換
行・列の追加・連結・結合
- 列・行を追加(assign, appendなど)
- pandas.DataFrame, Seriesを連結するconcat
- pandas.DataFrameを結合するmerge, join(列・インデックス基準)
行・列の削除
行・列・要素に関数適用・ループ処理
行・列の入れ替え・並べ替え(ソート)・整形
- pandas.DataFrameの行と列を入れ替える(転置)
- sort_values, sort_indexでソート
- ランダムに並べ替え(シャッフル)
- stack, unstack, pivotを使ってデータを整形
文字列の処理
- 文字列を区切り文字や正規表現で複数の列に分割
- 複数の列の文字列を結合して新たな列を生成
- 文字列の置換や空白削除など
- 文字列から正規表現で抽出して新たな列を生成
- 文字列と数値を相互変換、書式変更
- 文字列にスライスを適用して任意の位置・長さの部分を抽出
数値の処理
欠損値NaNの処理
- pandasにおける欠損値(nan, None, pd.NA)
- 欠損値NaNを削除(除外)するdropna
- 欠損値NaNを置換(穴埋め)するfillna
- 欠損値NaNを含む行・列を抽出
- 欠損値NaNが含まれているか判定、個数をカウント
- 欠損値NaNを前後の値から補間するinterpolate
インデックス(行見出し・列見出し)の処理
- 行名・列名の変更
- 列をインデックス(行名)に割り当てるset_index
- インデックスを振り直すreset_index
- 行・列を任意の順に並べ替えるreindex
- pandas.Seriesのインデックスと値を入れ替え(スワップ)
データ前処理
データ分析
- describeで各列の要約統計量(平均、標準偏差など)を取得
- ピボットテーブルでカテゴリ毎の統計量などを算出
- ユニークな要素の個数、頻度(出現回数)をカウント
- 特定の条件を満たす要素数をカウント(全体、行・列ごと)
- GroupByでグルーピングし統計量を算出
- agg(), aggregate()の使い方
- crosstabでクロス集計(カテゴリ毎の出現回数・頻度を算出)
- corrで各列間の相関係数を算出、ヒートマップで可視化
- modeで行・列ごとの最頻値を取得
- medianで中央値を取得
- quantileで分位数・パーセンタイルを取得
- rankで順位付け
- 累積和・累積積(cumsum, cumprod, cummax, cummin)
- idxmax, idxminで最大値・最小値の行名・列名を取得
- n個の最大値・最小値を取得(nlargest, nsmallest)
マルチインデックス(階層型インデックス)
時系列データ
- pandas.DataFrame, Seriesを時系列データとして処理
- 時系列データの曜日や月、四半期、年ごとの合計や平均を算出
- 日付・時間の列を処理(文字列変換、年月日抽出など)
- 時系列データから時刻を指定して行を抽出
- 時系列データのタイムゾーンを処理(tz_convert, tz_localize)
- 時系列データのOHLC(四本値)を算出・ダウンサンプリング
- 時系列データにおける頻度(引数freq)の指定方法
- 時系列データをリサンプリングするresample, asfreq
- 窓関数を適用するrollingを使って移動平均などを算出
- 行・列の差分・変化率を取得するdiff, pct_change
- データを行・列(縦・横)方向にずらすshift
そのほかのTips
- クリップボードの中身をDataFrameとして取得するread_clipboard
- DataFrameをクリップボードにコピーするto_clipboard
- pandasの要素としてリストを格納し処理
- pandasからNumPyの関数などを使う方法(pd.np)
- pandasのSettingWithCopyWarningの対処法
- NumPy, pandasのValueError: The truth value ... is ambiguousの対処法
- Pythonでメソッドチェーンを改行して書く