【Python】Pandasでクリップボードのデータを読み書きする方法(read_clipboard / to_clipboard)

Excelやスプレッドシート、あるいはWebサイト上の表データをPythonに取り込みたい場合、一度CSVファイルとして保存してから読み込むのは手間がかかります。Pandasの read_clipboardto_clipboard を使用すれば、コピー&ペースト(コピペ)の操作だけで、データフレームと外部アプリケーション間のデータ連携が瞬時に行えます。

本記事では、クリップボードを経由したデータの入出力方法について解説します。

目次

実行環境に関する注意点(Linuxユーザー向け)

WindowsやmacOSでは標準で動作しますが、Linux環境(WSLを含む)でこの機能を使用する場合、クリップボードを操作するための外部パッケージが必要になることがあります。エラーが出る場合は、以下のコマンドで xsel または xclip をインストールしてください。

# Linux / WSL環境の場合
sudo apt install xsel

実装サンプルコード

以下のコードでは、2つの操作を行います。

  1. 書き込み: 作成したDataFrameをクリップボードにコピーします(Excel等に貼り付け可能な状態になります)。
  2. 読み込み: 現在クリップボードにあるデータを読み込んで、新しいDataFrameを作成します。

※このコードは、ローカル環境(自身のPC)での実行を想定しています。Google Colabなどのクラウド環境ではクリップボードへのアクセスが制限されるため動作しません。

import pandas as pd

def clipboard_interaction_demo():
    """
    Pandasを用いたクリップボードへの書き込みと読み込みを実演する関数
    """
    
    # === 1. DataFrameをクリップボードへ書き込む (to_clipboard) ===
    print("=== クリップボードへの書き込み ===")
    
    # サンプルデータ: サーバーの月次稼働状況
    server_stats = {
        "Server_Name": ["Alpha_01", "Beta_02", "Gamma_03", "Delta_04"],
        "Uptime_Hours": [720, 715, 698, 720],
        "Error_Count": [0, 2, 5, 0],
        "Status": ["Stable", "Warning", "Critical", "Stable"]
    }
    
    df_source = pd.DataFrame(server_stats)
    
    print("--- コピー元のDataFrame ---")
    print(df_source)
    
    # クリップボードにコピー
    # excel=True : Excel形式でコピー(デフォルト)
    # index=False : 行番号を含めない
    try:
        df_source.to_clipboard(index=False)
        print("\n>> クリップボードにデータをコピーしました。")
        print(">> Excelやメモ帳を開いて「貼り付け」を試してみてください。\n")
    except Exception as e:
        print(f"\n[Error] クリップボードへのアクセスに失敗しました: {e}")
        return

    # === 2. クリップボードからデータを読み込む (read_clipboard) ===
    print("=== クリップボードからの読み込み ===")
    print(">> 直前にコピーされたデータを読み込みます...")
    
    # クリップボードの内容をDataFrameとして取得
    # Web上の表やExcelの範囲をコピーした状態でこれを実行すると読み込まれます
    try:
        df_pasted = pd.read_clipboard()
        
        print("--- 読み込まれたDataFrame ---")
        print(df_pasted)
        
        # データの確認
        print("\n--- データ型の確認 ---")
        print(df_pasted.dtypes)
        
    except Exception as e:
        print(f"\n[Error] 読み込みに失敗しました: {e}")

if __name__ == "__main__":
    clipboard_interaction_demo()

実行後のイメージ

コードを実行すると、コンソールには以下のように表示され、同時にOSのクリップボードにはデータが格納されます。この状態でExcelを開いて Ctrl+V を押すと、きれいな表形式でデータが貼り付けられます。

=== クリップボードへの書き込み ===
--- コピー元のDataFrame ---
  Server_Name  Uptime_Hours  Error_Count    Status
0    Alpha_01           720            0    Stable
1     Beta_02           715            2   Warning
2    Gamma_03           698            5  Critical
3    Delta_04           720            0    Stable

>> クリップボードにデータをコピーしました。
>> Excelやメモ帳を開いて「貼り付け」を試してみてください。

=== クリップボードからの読み込み ===
>> 直前にコピーされたデータを読み込みます...
--- 読み込まれたDataFrame ---
  Server_Name  Uptime_Hours  Error_Count    Status
0    Alpha_01           720            0    Stable
1     Beta_02           715            2   Warning
2    Gamma_03           698            5  Critical
3    Delta_04           720            0    Stable

解説

read_clipboard の活用シーン

pd.read_clipboard() は、引数を指定せずに実行すると、クリップボード内のテキストを自動的に解析します。デフォルトではタブ区切りやスペース区切りを賢く判別しますが、区切り文字を明示したい場合は sep 引数を使用できます。

  • Excelからの取り込み: Excelのセル範囲をコピーして pd.read_clipboard() を実行するだけでDataFrame化できます。
  • Webサイトの表: ブラウザ上で <table> タグの表を選択・コピーして読み込むことも可能です。

to_clipboard の活用シーン

  • クイックレポート: Pythonで集計した結果をExcelに貼り付けて、グラフ作成や報告書作成を行う場合に便利です。
  • CSV不要の連携: 一時的なデータ確認のためにCSVファイルを生成・保存する必要がなくなります。

この機能は、データ分析の試行錯誤の段階において、ツール間の「壁」を取り払う非常に強力なショートカットとなります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次