【Python入門】表形式のデータをクリップボードから読み込む方法

clipboard pandas

表形式のデータをクリップボードから読み込む方法です。
ExcelやWebページから手軽に表形式のデータを読み込むことができます。

pandasライブラリを利用します。

表形式のデータ

  • Webページ
  • 表計算ソフトのシート(Excel)
  • CSVファイル

WebページやExcelのデータを、Pythonで加工することはよくあります。
seabornでグラフにすると、見栄えがグンと上がりますよね。

ただ、Webページのデータを使う前処理が、データのコピー、メモ帳に張り付け、名前を決める、保存する、ファイルを読み込む。とすると、6工程もあり大変です。

CSVファイルがファイルを読み込む1工程だけで簡単なように、クリップボードにコピーしたデータを直接読み込めば、かなり楽になります。

CSVファイルを読み込む方法は、下記に書いています。
>>【Python入門】CSVファイルをコード1行で読み込む方法

データの特徴

WebページやExcelからコピーしたデータの特徴は、データが空白で区切られていることです。
次の表組されたデータを、メモ帳にコピペしてみます。

左上の「材料」から右下の「40g」までを選択して、コピーします。

材料数量
男爵いも2個
玉ねぎ1/4個
にんじん1/4本
リンゴ1/4個
干しぶどう40g

メモ帳を開き、貼り付けてみます。

空白区切り
図1: メモ帳

コピペしたデータは、確かに空白で区切られています。
文字コードは、UTF-8です。

クリップボードから読み込む方法(read_clipboard)

データをコピーすると、一時的にデータを保存できる場所(クリップボード)に保存されます。
ペースト(貼り付け)は、クリップボードに保存されたデータが張り付けられます。

pandasは、クリップボードからデータを読み込むことができますので、クリップボードにデータをコピーしてから、下記のコードを実行します。

pandas
In [1]:    import pandas as pd
In [2]:    df_web = pd.read_clipboard()
In [3]:    df_web
Out[3]:        材料	      数量
           0   男爵いも       2個
           1   玉ねぎ         1/4個
           2   にんじん       1/4本
           3   リンゴ         1/4個
           4   干しぶどう     40g

In [1]: pandasが使えるようにする(ライブラリの読み込み)。
In [2]: df_webに、クリップボードに保存されたデータを読み込む
In [3]: df_webを表示する。
Out[3]: df_webの内容

pandasのDataFrameにデータが読み込めています。

あとは、pandasの機能を利用して、自由にデータを扱うことができます。

read_clipboardは、クリップボードからテキストを読み取り、read_csvに渡しているので、read_csvのパラメーターが使用できます

read_csvの使い方は、下記で解説しましたので是非ご覧ください。
>>【Python入門】CSVファイルをコード1行で読み込む方法

パラメーター

read_clipboardは、初期値設定(デフォルト)の区切り文字が空白です。

sep 使用する区切り文字 デフォルト: ‘\s+’‘ (空白)

CSVファイルのように、カンマ(,)が区切り文字のときは、sepを設定します。

df_web = pd.read_clipboard(sep=',')

実習: 気象庁のWebページからデータを読み込む

気象庁のWebページから「アメダス(表形式)」のデータを読み込んでみます。
>>気象庁のWebページ: 宗谷岬(ソウヤミサキ) (新しいタブで開きます)

1時間ごとにアメダスが観測したデータが公開されています。

気象庁
図2: 気象庁Webページ

表の左上「時刻」から右下まで選択して、コピーします。

pandasで読み込んでみましょう。

pandas
In [1]:    df_web = pd.read_clipboard()
In [2]:    df_web
Out[2]:    	時刻	気温	降水量	風向	風速	日照時間
         0	時	℃	mm	16方位	m/s	h
         1	1	8.9	0.0	北西	9.0	
         2	2	8.8	0.0	北西	9.6	
         3	3	8.9	0.0	北西	8.5	
         4	4	8.9	0.0	北西	8.5	0.0
         5	5	8.7	0.0	北西	8.5	0.0	
         6	6	8.4	0.0	北西	7.9	0.0

pandasに読み込むことができました。

ただ、0行目の「単位」は必要ないですね。
このようなときは、パラメーターを設定して、0行目をスキップします。

パラメーター「skiprows」は、列名(時刻~日照時間)を0行目とするため、1行目をスキップします。

パラメーター「skiprows」の解説は、以下をご覧ください。
>>【Python入門】CSVファイルをコード1行で読み込む方法

df_web = pd.read_clipboard(skiprows=1)

0行目の列名「時刻」が1になっており、「単位」をスキップできていることを確認してください。

まとめ

  • 表形式のデータをクリップボードから読み込む方法がわかりました
  • read_clipboardは、read_csv のパラメーターが使えました

関連情報

タイトルとURLをコピーしました