ケガの功名でExcelへ

いまExcelをやっている。

Excelにたどり着くまで、長い道のりだった。

げんざい、Appleは時価総額世界一になっている。

僕たち、というか、グラフィック・デザイナーがMacに憧れていたころ、Appleは、げんざいと比較にならないほど小さく、それどころか、倒産寸前だった。

AppleStoreなどあるはずもなく、たしか、キャノン販売が販売代理店やっていたんじゃないかなぁ。

さらに、それよりも前、Macはデザイン会社が経費で無理して購入するレベルだった。数百万円もした。マニュアルは英文だった。

話は前後するけれど、Appleが倒産しかけたころ、ようやくフリーのグラフィック・デザイナーが(個人が)手の届くか、届かないかくらいの価格になっていた。

なぜデザイナーがMacなのかというと、とうじ、IllustratorやPhotoshopといったグラフィック用のソフトウェアは、Mac版しかなかったからだ。

ぼくたち周辺はMacだったけれど、パソコン全体から見れば極めて少数派だった。Windowsがほぼ全体を占めていた。

ま、そういうこともあり、Windowsではお馴染みのExcelとは縁遠かったわけ。

数年前からプログラミングを始めている。

まずJavaScriptをやり、げんざいはPythonをやっている。

Pythonにはデータを加工したり、データをグラフ化するライブラリが充実している。

なので、この種の作業はPythonでやってきた。

相変わらず、Excelに触れる機会はなかった。

きっかけは、MacのOSのアップデートだった。

アップデートした際に、いちおう入れていたExcelは古すぎて、使えなくなってしまった。

そこで、1ヵ月無料のWindows365のExcelを試用してみた。

やってみると、Pythonでは、いままでコードを書いていた作業が、Excelなら該当するボタンをクリックするだけで出来てしまうという。

いやになるほどカンタンなんだわ。

分からないところはMicrosoftがサポートしてくれるし。

結論としては、PythonやRは、機械学習やデータサイエンスといった専門的な事がらに適していて、その流れで(とうぜん同じプログラム言語で通した方が自然なので)データの整形やグラフの描写も、PythonやRのライブラリを使ってやることになる、といった感じ。

ぼくの場合、データの整形やグラフ描写の作業だけ切り取って、わざわざPythonでやっていたという…専門の職種でなければ、Excelで充分だ。

DataFrameの列の抽出

PandasのDataFrameより、列を抽出する方法は2種類ある。

import pandas as pd
import numpy as np

# 任意のDataFramを作る
df=pd.DataFrame(
{‘name1’:[‘a’,’b’,’c’,’d’,’e’],
‘name2′[‘one’,’two’,’three’,’for’,’five’],
‘data1’:np.random.randn(5),
‘data2’:np.random.randn(5)}
)

df


#抽出方法、その1
df1=df[[‘name1′,’data1’]]
df1

#抽出方法、その2
df2=pd.DataFrame(df,columns=[‘name1′,’data1’])
df2

#その1、その2ともに同じアウトプットとなる

スクレイピングについて

Excelは便利だけれど、たぶん、スクレイピングができないのよね〜
Mac版はスクレイピングができない。

もし、ウェッブ上の情報を読み込むのなら、いったん、そのウェブページをローカルに保存し、そのうえで、「データ」 > 「HTML」により読み込むことになる。

Pythonには、スクレイピングのライブラリがたくさん用意されているようだ。

「Pthonには、巷にあるれるHTML/XML形式のデータの読み書き用のライブラリがたくさんあります。代表的なものとしては、lxml、Beautiful Soup、html5libがあげられます。これらの中では通常、lxmlがはるかに高速ですが、規格に従っていないXMLファイルを取り扱うには、lxml、Beautiful Soup、html5libの方が便利です」(「pythonによるデータ分析入門」/Wes Mckinney)

Pythonのライブラリ・Pandasには、read_htmlというモジュール(あるいはパッケージかも知れない)が用意されている。

同書によると、read_htmlを利用するには、Beautiful Soup、html5libといった外部ライブラリーをインストールしておくことが条件となる。

◎その際には、パッケージのインストール管理するためのcondaあるいは、pipを利用する。

conda install lxml Beautiful Souphtml5lib

あるいは、

pip install lxml Beautiful Souphtml5lib

◎インストールの確認

pip freeze | grep -e request -e lxml -e beautiful

beautifulsoup4==4.8.2
lxml==4.5.0
requests==2.22.0
Note: you may need to restart the kernel to use updated packages.

◎実例
import pandas as pd

url = ‘https://xn--vckya7nx51ik9ay55a3l3a.com/analyses/number_of_companies’

pd.read_html(url)[0]

◎文字化けする場合 => 当該ウェブページのエンコーディングをチェックし、第2引数で、そのエンコーディングを指定する。

import pandas as pd

url = ‘https://xn--vckya7nx51ik9ay55a3l3a.com/analyses/number_of_companies’

df = pd.read_html(url, encoding=’utf-8′)[0]