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章 アプリの利用者を予測するには

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

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

観測できない要因の影響を予想するには?

 観測されていないが予測値に影響を与えている要因があったとしても回帰モデルでは観測される要因に対して正しい判定をしてしまうことがある。回帰モデルに正しく要因を導入するとよりよい結果が得られる。