前回のおさらい。今回したいこと。
前回はスクリーニング結果をスクレイピングによって取得するところまで行ないました(スクレイピング編)。しかし、このままでは必要なデータと不要なデータが同じセルにはいっていたりとデータを上手に扱うことが出来ません。そこで、pandasの基本的な機能を使いながらデータの整形を行ないます。
必要な要素の確認
1 |
df = raw_data[1] |
まず、取得したデータにはいくつかのデータフレームがはいっていますが、目的のデータは2つ目にはいっているので、その部分を取り出します。
中身を見てみると、
連番 | 銘柄 | 現在値 | |
0 | 1 | *東16773パイオニア | 174 15:00+2.0 (+1.16%) |
上記のようなデータになっていると思います。銘柄には取引市場と銘柄コード、銘柄名が一緒に入ってしまっています。また、現在地の部分には、現在地の他に取得時間と騰落率がはいっています。実際にスクリーニング結果にもこれらの要素は同一セルにはいっているため、分離する必要があります。
銘柄コードと銘柄名の取り出し
銘柄コードと銘柄名を取り出していきます。取引市場はすべて*〇〇の形式で表示されており、東証一部なら*東1、JASDAQなら*JQといった具合になっています。
1 2 3 4 5 6 |
number = df[1].str[3:7] name = df[1].str[7:] price = df[2].str.split(' ', expand=True) df2 = pd.concat([number, name, price[0]], axis=1) df2.columns = ["number", "name", "price"] |
そこで、まず銘柄コードはセル内の4文字目から7文字目に表示される部分であることが分かるので、その部分をnumberとして取り出します。次に7文字目以降の文字列が銘柄名になっているため、nameとして取り出します。また、現在値のセルはそれぞれスペースによっと区切られているため、スペースで別々のセルに区切ります。 最後にそれらをあわせて一つのデータフレームとし、それぞれの列に名前をつけると自分がスクリーニングをかけた株の銘柄コードと名前、現在値のはいったデータフレームを得ることができます。