pandas で標準入力からデータ読み込む方法


pandas で標準入力 (STDIN) から `read_csv` のように読み込むこと可能でしょうか？

STDIN を変数に入れて、それを stringIO
にして読み込むのは可能なのですが、もっとスマートにやる方法はないでしょうか？理想としては、jupyter
環境でストリーム（標準出力など）を設定して、次に、そのストリームをpandas で読み込むようなことをしたいです。




`何らかの PG | python readcsv.py`  
のように起動するのなら次のようにするとよいです

[code]

    import sys
    import pandas as pd
    
    df = pd.read_csv(sys.stdin)
    print(df)
    
[/code]

jupyterで入力する場合ならこんな風にできます

[code]

    import pandas as pd
    
    stdin = input()
    df = pd.read_csv(stdin)
    print(df)
    
[/code]

* * *

### 追記

Jupyterで sub-process走らせて結果を取り込むのは次のようにできます

[code]

    変数 = !何らかのコマンド
    
[/code]

なので, CSVや JSONは次のようにできます (UNIX系の場合)

[code]

    out = !echo -e "A,B,C\n10,20,30\n40,50,60"
    outj = !ip -j addr
    import pandas as pd
    import io
    display(pd.read_csv(io.StringIO(out.n)))
    display(pd.read_json(io.StringIO(outj.n)))
    
[/code]

他に, 対象のセルをキャプチャーする方法 (`%%capture result`) もあるけど `StringIO`使うところは同じ

### 更に追加

PIPE使って sub-processなら, 代入の手間は必要ないが, コードが必要

[code]

    from subprocess import Popen, PIPE
    cmd = 'ip -j addr'.split(' ')
    with Popen(cmd, stdout=PIPE, stderr=PIPE, text=True) as proc:
        df = pd.read_json(proc.stdout)
    display(df)
    
[/code]

