Pythonでpadansを使ってWebページにあるテーブル(表)のデータを拾ってくる手順です。
データはDataFrameとして取得できるので、そのまま加工できて便利そうです。
まず必要なモジュールをインポートしておきます。
1 | import pandas as pd |
Webページからテーブルを拾ってくるコードは次の一行で実現できます。今回はみんかぶFXのページから拾ってみました。
1 | table_list = pd.read_html("URL") |
取得したデータはDataFrame型の配列なので
1 | table_list[0] |
という感じで各テーブルを表すDataFrameにアクセスできます。
テーブルから列番号を使って任意の列を削除する
ところで、みんかぶFXから取得した経済指標値テーブルの1列目は年のデータだったのですが、このような列を削除したい場合はdrop()を使って削除できます。引数にcolumns[列インデックス]を指定するのがコツみたいです。ちゃんと列を削除してもらえるようにaxis=1を忘れずに指定します。
DataFrame.columns[]を使って列番号から対応する列の名前を取得できます。DataFrame.dropで列を削除するには列名を指定すれば良いのでcolumns[]を渡してやれば良いみたいです。
てっきりdrop(列番号,axis=1)とすれば列を削除できると思っていたのでdrop(0,axis=1)としてしまって、しばらく詰まっていました。
番号ではなく名前で指定しないと駄目だったようです。
1 2 | values_df = table_list[0] #最初のテーブルを取得。 values_df = values_df.drop(values_df.columns[0],axis=1) #テーブルから一列目を削除。 |
テーブルのデータを一次元にしてから平均を求める
指標値すべての平均を取得してみます。まず、テーブルにあるすべての値を1次元の配列に直してから、Seriesとして作成しなおしてみました。
1 | all_data=pd.Series(values_df.values.flatten()) |
values_df.valuesでテーブルの全データをArrayとして取得して、flatten()で一次元配列にします。さらにその配列からSeriesを作成しています。
これでall_dataという名前の、指標値が格納されたSeriesを取得できました。
Seriesにしたので、後はall_data.mean()やall_data.describe()というふうに使えます。