こんにちは、JS2IIUです。
Pandasには、クリップボードから直接データを読み込み、DataFrameに変換する機能が備わっています。この機能を使えば、エクセルやウェブページからコピーしたデータを簡単にDataFrameとして取得でき、データ分析の効率が向上します。本記事では、クリップボードのデータをDataFrameに変換する方法を、データクレンジング(データの整形)も含めて詳しく解説します。
クリップボードからのデータ読み込みとは?
クリップボードは、一時的にコピーされたテキストやデータが保存される領域です。Pandasのread_clipboard()関数を使うと、クリップボードにある表形式のデータをDataFrameに変換できます。この機能は、エクセルで作成したデータをPandasに取り込みたい時や、ウェブページの表データをそのまま利用したい場合に便利です。以下のようなデータ形式が対応可能です:
- エクセルのセル範囲:複数のセルを選択してコピーし、Pandasで直接読み込み
- ウェブページ上のテーブル:ブラウザ上でコピーしたテーブルデータをそのままDataFrameとして取り込み
- タブやカンマ区切りのテキスト:テキストデータが区切られた形式であれば自動的に判別
基本サンプルコード:クリップボードからDataFrameを作成
まず、クリップボードのデータをDataFrameに変換する基本的なサンプルコードを見ていきましょう。この例では、エクセルからコピーしたデータがクリップボードにあると仮定します。

import pandas as pd
# クリップボードの内容をDataFrameに読み込む
df = pd.read_clipboard()
# DataFrameの内容を表示
print(df)
出力は次のようになります。
名前 年齢 国籍
0 Alice 24 USA
1 Bob 30 Canada
2 Carol 27 UK
解説:
pd.read_clipboard():この関数は、クリップボードにある表形式のデータを自動的に読み込みます。データがタブ区切りまたはカンマ区切りであれば適切に処理されます。- データ確認:読み込んだDataFrameを
print(df)で表示し、意図した通りにデータが読み込まれているか確認します。
クリップボードデータのクレンジング例
時には、クリップボードにコピーされたデータに余計なヘッダー行やフッター行、空白行などが含まれていることがあります。こうした不要なデータを取り除き、きれいなDataFrameにする方法を紹介します。
例:余計なヘッダー行や空白行の除去
例えば、クリップボードのデータが以下のような構造になっているとします:
--------------------
| 本日の日付: 2024年11月13日 |
--------------------
| 名前 | 年齢 | 国籍 |
--------------------
| Alice | 24 | USA |
| Bob | 30 | Canada |
| Carol | 27 | UK |
--------------------

上記のようなデータには不要な行が含まれているため、read_clipboard()で読み込んだ後にクレンジングが必要です。以下のコードで、不要な行を削除し、空白セルがあれば取り除く方法を示します。
import pandas as pd
# クリップボードからデータを読み込む
df = pd.read_clipboard()
# 比較のために読み込んだままの状態を表示
print(df)
# 余計なヘッダー行や空白行を削除する
# 例えば、最初の2行が不要な場合
df = df.drop([0]) # インデックス0の行を削除
df.columns = ["Name", "Age", "Country"] # カラム名を手動で設定
# 空白行が残っている場合は削除
df = df.dropna(how='all') # 全ての列がNaNの行を削除
# インデックスをリセット
df = df.reset_index(drop=True)
print(df)
コード解説:
df.drop([0]):最初の1行に不要なヘッダーやメタ情報が含まれているため、drop()で削除しています。df.columns = [...]:カラム名を手動で設定しています。元のデータにカラム名がない場合に便利です。df.dropna(how='all'):データの整形時、全ての列がNaN(空白)の行を削除します。df.reset_index(drop=True):削除後にインデックスをリセットし、DataFrameをきれいな形に整えます。
コードの実行結果は以下のとおりです。想定通り、不要な部分の削除とカラム名の変更ができています。
本日の日付:2024年11月13日 Unnamed: 1 Unnamed: 2
0 名前 年齢 国籍
1 Alice 24 USA
2 Bob 30 Canada
3 Carol 27 UK
Name Age Country
0 Alice 24 USA
1 Bob 30 Canada
2 Carol 27 UK
まとめ
Pandasのread_clipboard()は、クリップボードにコピーしたデータを直接DataFrameに変換する便利な方法です。ただし、データに不要な行が含まれることがあるため、読み込み後にデータクレンジングを行うと良いでしょう。上記の方法を参考にして、データを整形した上で利用することで、効率よくデータ分析を進めることが可能です。
参考リンク
- Pandas Official Documentation – read_clipboard
- Pandas Official Documentation – DataFrame
- Pandas Official Documentation – dropna
- Pandas Official Documentation – reset_index
少しだけPRです。
Pandasについて詳しく知りたいかた、もっと使いこなしたい方におすすめの本です。数年前に購入しましたが、今も手元に置いて時々見返しています。「pandasクックブック Pythonによるデータ処理のレシピ」Theodore Petrou著、黒川利明訳。
最後まで読んでいただきありがとうございました。73


コメント