Pythonによる経済経営分析のデータサイエンス

Column EDINETからデータを取得する

金融庁が運営しているシステムでedinet-pythonでアクセスできる
DLした有価証券報告書のPDF
f:id:bitop:20210303060210p:plain

XBRLファイルをパースしたもの
【経営方針、経営環境及び対処すべき課題等】

(Value: 1 【経営方針、経営環境及び対処すべき課題等】文中の将来に関する事項は、当連結会計年度末現在において、当社グループが判断したものであります。 (1)会社の経営の基本方針当社グループは、IoT/ビッグデータ/人工知能(AI)関連市場が拡大する中、本市場を新たに注力する事業領域と位置付け、事業の選択と集中を行っております。 従来から提供しているデータセンター、クラウド・ソリューション、データ・ソリューションを中心とする既存事業については事業基盤を強化し、AI等の新規事業については新サービスを創出、育成し、社会全体で生成される情報の収集と発信の仕組みを提供する企業へと進化してまいります。 具体的には、当社の主力事業であるデータセンターについては、新たなデータセンターモデルへの展開として、2018年8月に開設した新データセンターの第2期工事を2019年9月に完了させ、製造業等新たな顧客層も開拓しております。また、連結子会社が行っている人工知能技術を活用したAI事業については、必要な技術を開発しながらサービスの拡充、顧客数の増加に繋げてまいります。 今後も事業ポートフォリオの入れ替え、他の企業とのコラボレーションを実施しながら、既存事業の強化、新規事業の育成を図り、グループ全体のバリューチェーンを進化させてまいります。 (2)目標とする経営指標当社グループでは、売上高成長率、営業利益率等、持続的成長性及び収益性に関する財務的指標の向上を目指した事業運営を推進しております。 (3)中長期的な会社の経営戦略ソフトウェア・ハードウェア技術の進化、IoT/ビッグデータ/人工知能(AI)市場の拡大等、当社の事業を取り巻く環境は急速に変化しており、成長機会を逃さないためにも、環境の変化に対応した事業運営を行ってまいります。日本初の専業インターネット・データセンター会社(当時の商号はグローバルセンター・ジャパン株式会社)として設立された当社は、インターネット・テクノロジー・トレンドを主導するインターネット・データセンター事業者の草分けとして、大きな技術革新のフェーズを迎えたことを認識し、既存事業を更に強化するべく5G(第5世代移動通信システム)に対応した新データセンターを2018年8月に開設し、新規事業としてAI事業等を推進しております。 インターネットを用いた第1フェーズのビジネスモデルは、ポータル(玄関口)サービスモデルで、ニュース等のコンテンツ提供、検索エンジン、ショッピングモール、株式売買等、サービス事業者が集中的に情報提供を行うモデルでした。当社は、このポータルサービス事業者のコンピュータ資源を預かるインターネット・データセンター事業者の草分けとして成長してきました。第2フェーズのビジネスモデルは、ソーシャル・メディアサービスモデルで、サービス利用者が情報を書き込む利用者参加型のモデルで、ソーシャル・メディアサービス事業者は、コンピュータ資源を自社のデータセンター内に構築する傾向にあり、外部のデータセンターを利用せずに内製化しています。第3フェーズのビジネスモデルは、インターネット接続機器が、PC、タブレットスマートフォンのような人間が扱う端末ではなく、監視カメラ、各種センサーや各種機器等あらゆる自動計測・自動制御機器となるIoT時代を意味しています。IoTに関連してビッグデータ、AI等も急速に普及する中、サービスに必要なシステムの構築、要素技術の開発、技術提携、資本提携等、他の企業とコラボレーションを推進し、自然言語解析技術をはじめとした人工知能技術の開発やサービス化を加速させ、事業を拡大してまいります。 (4)会社の対処すべき課題IoT/ビッグデータ/人工知能(AI)等の市場が拡大する中、これらのビジネス領域を成長機会と捉え、自然言語解析技術をはじめとするAI技術を活用したAIサービス等の新規事業を創出、育成してまいりました。新規事業の創出、育成には資金、時間等を要しますが、当社グループが培った事業基盤、知見、専門性を活用し、必要な技術を開発しながら基盤整備や実証実験等を行ってまいりました。業績につきましては、連結経常損失を2018年6月期、2018年12月期、2019年12月期と3期連続して計上しましたが、主な要因は、2018年に大手町に開設した新データセンターの投資と回収のタイムラグ、新規事業を立ち上げてから黒字基調にするまでのタイムラグであります。このような経営環境の中、財務基盤の強化が必要であります。本体事業では、当社の主力事業であるデータセンターにおいて、新データセンターの開設を機に新規顧客獲得に向けた受注活動を行うとともに、既存顧客との関係強化による取引拡大にも努め、データセンター企業の先駆者として、競争に勝ち残るためにも、多様化する顧客ニーズに対応したデータセンターサービスを今後も提供してまいります。また、クラウド・ソリューション、データ・ソリューション等のサービスについても、サービスラインアップの拡充、サービス品質の維持・向上等により、顧客ニーズに対応してまいります。子会社の事業については、各子会社を取り巻く事業環境の変化に対応した必要な投資、開発等を行うとともに、シナジー効果を発揮できるように連携を深めてまいります。 なお、企業価値を向上させる取組みとして、コンプライアンスを始めとする社員教育の充実を通じて組織力を強化すると共に、引き続き、内部統制システムの構築および運用にも力を入れ、企業の社会的責任を果たすべく取り組んでまいります。
以下略

【研究開発活動】
(Value: 5 【研究開発活動】当連結会計年度における当社グループの研究開発費の総額は130百万円であり、主にコンピュータプラットフォームセグメントに係るものであります。コンピュータプラットフォームセグメントでは、当社内に設置したCloud&SDN研究所において、SDN(Software Defined Networking)技術を応用したInternet eXchange(IX)の研究及び実証実験を進め、IXとクラウド間を相互接続するサービスを提供するとともに、更なる高度化にも取り組んでおります。仮想化技術については、ネットワーク機能を汎用サーバ上で実現するNFV(Network Functions Virtualization)の検証を進め、また、データセンター間接続の伝送技術については、実施に向け準備を進めております。加えて、ホワイトボックススイッチとネットワークOSの技術、コンテナ技術等にも着目し、研究を進めております。また、株式会社ティエスエスリンクでは情報漏洩対策ソフトの開発を行っております。
以下略

Pythonによる経済経営分析のデータサイエンス

3.4 データを「つかう」(2) Linked Open Data

DBpedia.orgから日本のコンピュータゲームメーカーの情報について取得

{'head': {'link': [], 'vars': ['name', 'abstract']},
 'results': {'distinct': False,
  'ordered': True,
  'bindings': [{'name': {'type': 'literal',
     'xml:lang': 'ja',
     'value': 'パンサーソフトウェア'},
    'abstract': {'type': 'literal',
     'xml:lang': 'ja',
     'value': 'パンサーソフトウェア(Panther Software)は、株式会社パンサーソフトウェアのゲームブランド名である。
     恋愛シミュレーションゲームの制作が多い。旧雄図グループ。1987年:有限会社スタジオパンサー設立1991年:株式会社に改組、
     社名をパンサーソフトウェアに変更1999年:韓国パンサーソフトウェア、Interlex(アメリカ現地法人)を設立2000年:
     インターレックス株式会社に社名変更(パンサーソフトウェアの名称はブランド名として存続)2005年:
     インターレックスがゲーム部門を売却、株式会社パンサーソフトウェアとして独立'}},

上記のようなjson形式のデータが取得できる。

Linked Open Dataはコンピュータが理解しやすいデータのネットワークを構築する目的で作られている

ja.wikipedia.org

RDF形式はデータを記述するためのフレームでそのひとつとしてLinked Open Dataがある。

Pythonによる経済経営分析のデータサイエンス

column 法人番号で宮城県の企業の数をカウントしてみる

データの入手先

https://www.houjin-bangou.nta.go.jp/download/zenken/
csvを読み込むときUnicodeErrorがでるのでエンコードを指定する

data = pd.read_csv('04_miyagi_all_20210226.csv',sep=',',encoding='sjis')  

f:id:bitop:20210228181111p:plain

企業数のカウント
f:id:bitop:20210228181256p:plain

Pythonによる経済経営分析のデータサイエンス

3.3 データを「つかう」(1)政府統計データ

全国の市町村コードを取得する
f:id:bitop:20210228092325p:plain
総務省が制定している都道府県コードとは仕様が異なるようです。

全国の年単位の企業数をRESAS APIから取得する
f:id:bitop:20210228125600p:plain

これをcsv形式でファイルに出力させタブロー(public)で棒グラフにする
f:id:bitop:20210228130348p:plain

Pythonによる経済経営分析のデータサイエンス

1章 経済・経営分析のためのデータサイエンス

 省略

2章 初めの一歩、Pythonを使ってみよう

 省略

3章 Pythonを使ってデータを集めよう

3.1 データを「つくる」 Webスクレイピング

3.1.2 COVID-19に関する支援状況を把握する

f:id:bitop:20210227090415p:plain

3.2 データで「まなぶ」 Kaggleとデータセット

 省略

3.3 データを「使う」(1) 政府統計データ

 RESASのサイトにいってAPIを取得(無料)、取得したAPIapi_key.jsonファイルに保存しjupyter notebookのあるフォルダにおいておく。
 P63からP66にかけてのスクリプトを実行するとC:\Users\joshua\anaconda3\lib\site-packages\ipykernel_launcher.py:24: FutureWarning: pandas.io.json.json_normalize is deprecated, use pandas.json_normalize insteadが表示される。
これはpandas 1.0.0からjson_normalizeメソッドの位置がpandas.io.json.json_normalize()からpandas.json_normalize()に変更されているため まだpandas.io.json.json_normalizeは使えるが非推奨になっている。
参照URL:
note.nkmk.me

つづいてTypeError: {'prefCode': 13, 'prefName': '東京都', 'cityCode': '13101', 'cityName': '千代田区', 'data': [{'year': '2001~2004年', 'value': 8.58}, {'year': '2004~2006年', 'value': 9.59}, {'year': '2006~2009年', 'value': 3.69}, {'year': '2009~2012年', 'value': 2.7}, {'year': '2012~2014年', 'value': 11.18}, {'year': '2014~2016年', 'value': 6.58}]} has non iterable value 13 for path ['prefCode']. Must be iterable or null.がでる。 prefCodeがよくないとでるのでprefCodeだけはずすと実行できる
f:id:bitop:20210227110558p:plain

pandas.io.json.json_normalize()json形式をDataFrame形式に変換するメソッド
たとえば下記のようなjsonがあれば

{'message': None, 'result': [
{'prefCode': 13, 'cityCode': '13101', 'cityName': '千代田区', 'bigCityFlag': '3'}, 
{'prefCode': 13, 'cityCode': '13102', 'cityName': '中央区', 'bigCityFlag': '3'}, 
{'prefCode': 13, 'cityCode': '13103', 'cityName': '港区', 'bigCityFlag': '3'}, 
{'prefCode': 13, 'cityCode': '13104', 'cityName': '新宿区', 'bigCityFlag': '3'}, 
{'prefCode': 13, 'cityCode': '13105', 'cityName': '文京区', 'bigCityFlag': '3'}, 
{'prefCode': 13, 'cityCode': '13106', 'cityName': '台東区', 'bigCityFlag': '3'}, 
{'prefCode': 13, 'cityCode': '13107', 'cityName': '墨田区', 'bigCityFlag': '3'}, 
{'prefCode': 13, 'cityCode': '13108', 'cityName': '江東区', 'bigCityFlag': '3'}, 
{'prefCode': 13, 'cityCode': '13109', 'cityName': '品川区', 'bigCityFlag': '3'}, 
{'prefCode': 13, 'cityCode': '13110', 'cityName': '目黒区', 'bigCityFlag': '3'}, 
{'prefCode': 13, 'cityCode': '13111', 'cityName': '大田区', 'bigCityFlag': '3'}, 
{'prefCode': 13, 'cityCode': '13112', 'cityName': '世田谷区', 'bigCityFlag': '3'}, 
...
{'prefCode': 13, 'cityCode': '13421', 'cityName': '小笠原村', 'bigCityFlag': '0'}
]}

このようにDataFrameにしてくれる
f:id:bitop:20210227111135p:plain

その問題、やっぱり数理モデルが解決します

13章 アプリの利用者を予測するには

 最初は単純な微分法方程式を立ててモデルをつくる。それでは現実に合わないのでアプリ利用者に上限があるモデルを作り直す。