LoginSignup
6
6

More than 3 years have passed since last update.

[Python] VScodeのデバッグコンソールでデータフレームを表示

Posted at

課題

  • データフレームをいじくり回す処理のデバッグをサクサクやりたい
  • pdbデバッグもいいけど、ソースを編集するのが嫌

前提

VScodeが好き

解決方法概要(目次)

VScodeにて
1. ブレークポイントを置いて
2. デバッグモードで実行し
3. デバッグコンソールを使う
4. データフレームを表示させるために、launch.jsonに一行追記

解決方法詳細

ブレークポイントを置く

行番号の左にマウスカーソルを持っていき、クリックして赤丸をつける
image.png

デバッグモードで実行

  1. 虫っぽいマークをクリックしてデバッグ画面にいき
  2. デバッグ用の実行ボタンをクリック image.png

デバッグコンソールを使う

デバッグコンソール画面に移動し、変数名を入れてエンターキー押したりして、色々確認する
image.png
データフレームが上手く表示されなくて困る

データフレームを表示させるために、launch.jsonに一行追記

cmd + shift + Pを押してコマンドパレットを開き、
「launch」と入力し、
launch.jsonを開くをクリック
image.png

「"redirectOutput": true」を追記して上書き保存(直前行の最後に「,」も忘れず)
image.png

一度デバッグを終了して再度デバッグを開始。
デバッグコンソールでprint(df)をやってみる
image.png
データフレームが見やすく整列して表示された

※なぜこれで上手くいくのかは分かってない。ググって↓に辿り着いて真似た。
https://github.com/microsoft/ptvsd/issues/2036#issuecomment-573343490

おまけ)デバッグコンソールで複数行の処理

sht+Enterで複数行の処理も書ける
image.png


実行結果
image.png

補足

動作環境: Mac、Python3.7

デバッグ対象としたサンプルコード:

# create test data
a = 15

import pandas as pd
df = pd.DataFrame(
    columns = ['name', 'gender', 'age'], 
    data = [
        ['john', 'man', 25],
        ['yoko', 'woman', 28],
        ['kevin', 'man', 45]
    ]
)

# processing
a = a - 1
df['age'] = df['age'] - 10

おまけのデバッグコンソールで使ったコード:

for age_hosei in [10, -10]:
    print('--------------------------')
    print('age_hosei', age_hosei)

    tmp = df.copy()
    print('tmp:\n', tmp)

    tmp['age'] = tmp['age'] + age_hosei
    result = tmp.groupby('gender')['age'].sum()
    print('result:\n', result)
6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6