• 検索結果がありません。

経済学のための実践的データ分析 6. データを解析するまでに行うWeb スクレイピングとかデータの作成やデータベース設計などの話

N/A
N/A
Protected

Academic year: 2021

シェア "経済学のための実践的データ分析 6. データを解析するまでに行うWeb スクレイピングとかデータの作成やデータベース設計などの話"

Copied!
92
0
0

読み込み中.... (全文を見る)

全文

(1)

経済学のための実践的データ分析 6. データを解析するまでに必要な Web スクレイピングやデータの作成 やデータベース設計などの話 28教室 経済学研究科 原泰史 yasushi.hara@r.hit-u.ac.jp

(2)

確認事項

(3)

今日の内容 (人力や Web スクレイピングや

RPA で)データを集めてきて処理をするまでの

長く険しい道 [座学、実習]

• データといっても、そのほとんどは実のところ定型化されてい ません。Web サイトや書籍や国会図書館から手作業でひとつひ とつ入力し、あるいは、Web スクレイピングやRPA を用いて, Web から取得する必要があります。 • データ分析は、こうした事前の作業が作業全体の60-70パーセ ントを占めています。 • こうした手続きの具体例について、座学を用いて紹介した後、 雑誌や Web に掲載されたデータを取得する手法についてご紹 介します。

(4)

今日の内容

(105分)

1: データを作るまでの話

2: 実際にデータを作ってみよう

(5)
(6)

今日までの講義で使ったデータ

• ランダム作成した行列データ (@Jupyter Notebook) • FIFA 19 データベース (Kaggle) • 落合博満の打率と年俸データ (プロ野球) • 特許データベース (IIP パテントデータベース) → すでにデータが整備されており, あとは解析すれば何かしらの アウトプットが作成できるもの. しかし, 現実にはデータセット は自分で用意する必要がある

(7)

データ分析の流れ

なんのデータを 使うか考える 先行研究・事例 を探す データの取得方 法を確認する データをデータ ベース or 手入力 or 図書館 or 口 コミ or Web ア ンケートで入手 する 入手したデータ の妥当性を確認 する データを統計ソ フト and/or Python and/or SQL で処理する データに統計処 理を行う データに関する 解釈を行う 解釈されたデー タと、その解釈 を Word か Jupyter Notebook か Tex でテキス ティングする レポートとして 先生に送る/上司 に提出する/学術 誌に投稿する 今日メインに取り上げる内容 前回/前々回で 取り上げた内容 レポートでやって いただく内容 入手したデータに不足があれば, 別のデータソース を参照し, その入手可能性や妥当性を確認し, データ の入手作業を改めて行う

(8)

データセッ

トを用意す

る方法

図書館や国会図書館で入手する データの提供元から入手する API で取得する Web アンケートで集める Web スクレイピングする/RPA で処理する 手入力で作成する

(9)

1. 図書館や国会図書館で入手する

• 一橋大学図書館 • および, 日経BPデータベースなど, 大学が契約しているデータベース • 国会図書館 as known as日本最強の図書館 • デジタルデータベース • http://dl.ndl.go.jp/ • リサーチ・ナビ • https://rnavi.ndl.go.jp/rnavi/ • なにか信頼性の高いデータが必要になったら, 永田町に行けば だいたい見つかります (税金を払っている甲斐があります)

(10)

2. データの提供元から入手する

• データベースを提供する会社から入手する

• JSON (グッドデザイン賞) や XML (Web of Science) など, その ままだと解析をそのまま行うには複雑過ぎるデータ形式で提供 される場合もあるので, 必要に応じてデータの parse 処理を行 う。

• 具体例;

(11)

2. データの提供元から入手する

• (a.) Parsing the bibliographic data from XML to SQL of WoS

- Pick up sufficient data to analyze

- Which tag is needed? - Title?

- Names Count? (as known as scientific ordering)

- Publisher?

- Fund information?

- Name? First name? Last Name?

(12)

2. データの提供元から入手する

• データを parse して, XML からSQL に変換 する • 正規化する • MySQL 上でデータを処 理可能にする

(13)

2. データの提供元から入手する

• WoS データのSQL 化の場合

• ecrypt data from *.zip to *.gz format

• Take 3 mins for 8.16GB

• Decrypt data from *.gz to *.zip format

• Take 30 mins for 20GB

• Decrypt data from *.zip to *.xml format

• Take 1.2 hours for 10GB

• Parsing xml data into (my)sql format

• Take 5.5 hours for 40.5GB

• Binding separated *.sql format data into one single file for each year

• Take 35 mins

• Importing *sql format data into MySQL Server

• Take 120 hours for 49.8GB

ZIP -> GZ GZ -> ZIP ZIP -> XML XML -> SQL SQL -> SQL Server Accessin g from SQL client Finally you could get the data! Stata?R? Analyze Submissi on Revise Publis h

(14)

Parsing XML-based

Data to (My)SQL

• Using python to parse XML data to SQL format.

• Using generic_paser.py which distributed in Github.

• https://github.com/titipata/wos_pars er

• Takes 5.5 hours to parse XML data in 40.5GB into SQL format.

• Then import to SQL server, it takes 1.5-3 days with 2 million entries per year.

(15)

Creating Database Tables.

• Write Down “Create Table” and define database structure.

CREATE TABLE raw_data.wos_summary ( id varchar(200) NOT NULL, file_number integer NOT NULL, coll_id varchar(200), pubyear varchar(200), season varchar(200), pubmonth varchar(200), pubday varchar(200), coverdate varchar(200), edate varchar(200), vol varchar(200), issue varchar(200), voliss varchar(200), supplement varchar(200), special_issue varchar(200), part_no varchar(200), pubtype varchar(200), medium varchar(200), model varchar(200), indicator varchar(200), inpi varchar(200), is_archive varchar(200), city varchar(200), country varchar(200), has_abstract varchar(200), sortdate varchar(200), title_count varchar(200), name_count varchar(200), doctype_count varchar(200), conference_count varchar(200), language_count varchar(200), normalized_language_count varchar(200), normalized_doctype_count varchar(200), descriptive_ref_count varchar(200), reference_count varchar(200), address_count varchar(200), headings_count varchar(200), subheadings_count varchar(200), subjects_count varchar(200), fund_ack varchar(200), grants_count varchar(200), grants_complete varchar(200), keyword_count varchar(200), abstract_count varchar(200), item_coll_id varchar(200), item_ids varchar(200), item_ids_avail varchar(200), bib_id varchar(200), bib_pagecount varchar(200), bib_pagecount_type varchar(200), reviewed_language_count varchar(200), reviewed_author_count varchar(200), reviewed_year varchar(200), keywords_plus_count varchar(200), book_chapters varchar(200), book_pages varchar(200), book_notes_count varchar(200), chapterlist_count varchar(200), contributor_count varchar(200), PRIMARY KEY(`id`) );

CREATE TABLE raw_data.wos_page (

id varchar(200) NOT NULL, page_id integer NOT NULL, page_value varchar(200), page_begin varchar(200), page_end varchar(200), page_count varchar(200) );

CREATE TABLE raw_data.wos_titles ( id varchar(200) NOT NULL, title_id integer NOT NULL, title varchar(200), title_type varchar(200), lang_id varchar(200), translated varchar(200), non_english varchar(200) );

CREATE TABLE raw_data.wos_summary_names ( id varchar(200) NOT NULL, name_id integer NOT NULL, role varchar(200) NOT NULL, seq_no varchar(200), addr_no_raw varchar(200), reprint varchar(200), lang_id varchar(200), r_id varchar(200), r_id_tr varchar(200), orcid_id varchar(200), orcid_id_tr varchar(200), dais_id varchar(200), display varchar(200), display_name varchar(200), full_name varchar(200), wos_standard varchar(200), prefix varchar(200), first_name varchar(200), middle_name varchar(200), initials varchar(200), last_name varchar(200), suffix varchar(200) );

(16)

3. API で取得する

• Application Programming Interface

• アプリケーション同士を接合するための仕組み • 汎用的な機能を提供する.

• API を経由して機能を呼び出す形でプログラムを構成することにより, 同 じAPI が実装されていれば, 別のソフトウェア上でそのまま動作できる. • データ形式にXML や JSON を利用する Web API も普及

(17)

3. API で取得する

• Crossref (学術論文の DOI 情報サイト) から, 原講師の出版物の情報を 取得する • DOI; コンテンツのディジ タルオブジェクト識別子. インターネット上のド キュメントに恒久的に与 えられる. • URLを指定し, 取得する DOI を設定する

(18)

3. API で取得する

(19)

3. API で取得する

• Orcid から特定の研究者の情 報をAPI 経由で取得する

• 今回は ORCID ID 0000-0001-9500-1150

• Orcid Public API の Client ID や Cilient secret, token を取 得し, API 経由で 原講師の最 近の論文情報を取得する

(20)

3. API で接続する

(21)

3. API で接続する

• 参考文献 • https://github.com/ORCID/python-orcid • https://support.orcid.org/hc/en-us/articles/360006897174 • https://members.orcid.org/api/about-public-api • https://members.orcid.org/api/tutorial/read-orcid-records

(22)

4. Web アンケートで集める

• アンケートを Google Docs などを使って, 集める • 卒論やMBA ペーパーでも見 かけがち • 母集団がとても曖昧になりが ち • 注.まどかマギカネタは古典

(23)

4. Web アンケートで集める

(24)

4. Web アンケートでデータを集める

• 懸念点1. データの母集団が, データの収集者の想定とは異 なる可能性がある • ユースケース: 「女性の大学生 の買うコスメの情報を集める」, 「起業への選好を調査する」 調査者が想定している母集団= ○○大学の女性の大学1-4年生

(25)

4. Web アンケートでデータを集める

• 懸念点1. データの母集団が, データの収集者の想定とは異 なる可能性がある • アンケートのTOPページに「こ のアンケートは女性の大学生限 定です」と書いても, 回答者が それを守る保証はどこにもない • 記名の場合も, アンケートサイ トにBASIC なパスワードを掛 ける場合にも同様 実際のデータ集計結果= ○○大学の女性の大学1-4年生+α

(26)

4. Web アンケートでデータを集める

• 懸念点2. アンケート調査の段階で適切な質問票を設計出来ていな いと、分析にあたって必要な情報を入手できない可能性がある • 質問表の設計に不備があると, 質問者が欲しい結果に回答者を誘導してし まう可能性 • 足りないデータをあとからアンケート調査しても, 調査時期が異なるので 統計的に正しい解析とは言えなくなる • 質問表の設計手法の参考文献 • 『質問紙デザインの技法[第2版]』 • 『図解 アンケート調査と統計解析がわかる本[新版]』

(27)

• 「国立のおいしいも のアンケート」の ツッコミポイント 1. Q1. の解答欄が複数 選択可能である 2. Q1. の選択肢の単位 が絶妙に違う (“ザイ カレー”と”すた丼” と”つり舟”) 3. Q2. および Q3. は必 須回答であるか否か 明記されていない 4. 誰が対象のアンケー トか明記されていな い。 あとは?

(28)

5. Web スクレイピングする, RPA で処理

する

• Web スクレイピング

• Python etc… でコーディングすることで, Web ページ上から必要な情 報を取ってくる • よくある例; Yahoo! ニュースやYahoo! ファイナンス, データを集約し ているサイトからデータを取得し, 例えば口コミ解析や時系列分析に利 用する • よく考えてみると • 株価データなどは, 実は大学図書館から「オフィシャルに」ダウンロードしてこ れる例が多い • 経済学部の卒論/修論では実はあんまり出番がない(こともないかもしれない)

(29)

5. Web スクレイピングする, RPA で処理

する

• その1; Web スクレイピン グの事例; 阪大Web サイト (http://stips.jp/) のタイト ルを取得する • 右図の○の部分を取ってく る https://qiita.com/Azunyan1111/items/9b3d16428d2bcc7c9406

(30)

5. Web スクレイピングする, RPA で処理

する

https://qiita.com/Azunyan1111/items/9b3d16428d2bcc7c9406 ・元のサイトの場合 python2.x 系でコーディ ングしていたため, Python3 系に書き換えて います

(31)

5. Web スクレイピングする

• その2; Panda の機能を用いて Web サイト上の表を取得する #女性アイドルのキャパ数 url = ‘https://wasteofpops.hatenablog.com/entry/2019/05/01/000000' dfs3 = pd.read_html(url) print(dfs3) URLを指定する Web ページ上のテーブルを取得する

(32)

5. Web スクレイピングする

(33)

★山本彩 乃木坂46 sherbet ★渡辺美優紀 ★高橋みなみ BABYMETAL 仮面女子 ★日向坂46 Perfume でんぱ組.inc 真野恵里菜 モーニング娘。 AKB48(グループ) 篠崎愛 鈴木愛理 BiSH私立恵比寿中学 ★有安杏果 ももいろクローバーZ 欅坂46 吉田凜音 椎名ぴかりん フェアリーズアンジュルムJuice=Juice 夢みるアドレセンス カントリー・ガールズ

小池美由スリジエ柊木りお i☆Ris TEAM SHACHI(A.K.A.チームしゃちほこ)★=LOVE BiS【新】こぶしファクトリー

バンドじゃないもん!MAXX NAKAYOSHI たこやきレインボー風男塾 つばきファクトリー 寺嶋由芙 東京女子流

ゆるめるモ!LADYBABY ▲(活動停止)9nine

ベッド・イン PassCodeさくら学院 まねきケチャGANG PARADE(活動停止)ベイビーレイズJAPANときめき宣伝部(活動停止)PASSPO☆ラストアイドル(ファミリー) KissBeeばってん少女隊

武藤彩未 EMPiRE

ぜんぶ君のせいだ。 虹のコンキスタドール

眉村ちあきCY8ER神宿 わーすたQ'ulle▲(活動停止)妄想キャリブレーション2o Love to Sweet Bullet吉川友Negicco▲(活動停止)THE HOOPERS純情のアフィリアSUPER☆GiRLS アップアップガールズ(仮) predia

Maison book girl BILLIE IDLE A応P

アイドル教室sora tob sakananotall マジカル・パンチラインアキシブproject▲(活動停止)つりビット(活動停止)Cheeky Parade Dorothy Little HappyLinQ 東京パフォーマンスドール Task have Funフィロソフィーのダンス

PINK CRES. Party Rockets GT★J☆Dee'Zlyrical school▲(活動停止)ロッカジャポニカ じゅじゅ

演歌女子ルピナス組 Dancing Dolls あゆみくりかまきFES☆TIVE 天晴れ!原宿さんみゅ~ アンダービースティー 劇場版ゴキゲン帝国hy4_4yh (活動停止)バニラビーンズ神使轟く、激情の如く。

里咲りさAphroditeおやすみホログラムヤなことそっとミュート絶叫する60度CHERRSEE★なんきんペッパーゆくえしれずつれづれRYUTist 伊藤桃RHYMEBERRYRun Girls, Run!uijinハコイリムスメなんキニ!絶対直球女子!プレイボールズ病ンドルONEPIXCELBitter & SweetCROWN POPANNA☆S大阪☆春夏秋冬Pimm'sひめキュンフルーツ缶ミライスカートmonogatari(A.K.A.原宿物語)(活動停止)ベボガ!kolme(A.K.A.callme)煌めき☆アンフォレントアイドルカレッジLuce Twinkle Wink☆はちみつロケット▲(活動停止)X21ナナランド愛乙女☆DOLL転校少女*(A.K.A.転校少女歌撃団)放課後プリンセス(活動停止)チャオ ベッラ チンクエッティOS☆U 柳田絵美花はちきんガールズ amiinANECRONOMIDOL▲(活動停止)THERE THERE THEREStipToe.Broken By The Scream ▲(活動停止)CHOCO★MILQみんなのこどもちゃんクマリデパート3776▲(活動停止)・・・・・・・・・(活動停止)KNU幽世テロルArchitectキセキレイパンダみっくせのしすたぁ川崎純情小町▲(活動停止)ChubbinessDESURABBITS▲(活動停止)ハッピーくるくるMIGMA SHELTERフルーレットミルクス本物いちごみるく色に染まりたい。▲(活動停止)S☆スパイシー上月せれなDevil ANTHEM.NEO JAPONISMKus Kus(活動停止)少女隊TEARS-ティアーズ-Yamakatsu(A.K.A.山口活性学園)KOTOぴゅあ娘 リローデッド Jewel☆Neigeパクスプエラ(活動停止)CupitronSTARMARIEFullfull Pocket平成琴姫桃色革命▲(活動休止)東京CLEAR'S真っ白なキャンバスSIRWHY@DOLLピュアリーモンスターイケてるハーツワンダーウィードさくらシンデレラREADY TO KISSChu-ZChu☆Oh!DollyAnge☆ReveSAY-LAバクステ外神田一丁目

avandoned(A.K.A.あヴぁんだんど)キャンディzooはっぴっぴステーション♪あかぎ団まじばんch(A.K.A.Magical Ban☆Bang)ヲルタナティヴエルフロート愛夢GLTOKYOサクヤコノハナ(活動停止)MAPLEZCYNHNDEAR KISS (活動停止)ハニーゴーランPiXMiX▲(活動停止)きみがわたしだけのおうじ(活動停止)リナチックステイトHAMIDASYSTEMSPARK SPEAKERグーグールルFLOWLIGHT★星歴13夜SO.ON projectTOY SMILEYエレクトリックリボンあっとせぶんてぃーん(活動停止)アモレカリーナ東京TAKENOKO▲全力少女RTokyo Rockets蜂蜜★皇帝アイドル諜報機関LEVEL7シンセカイセンとちおとめ25Star☆TCoverGirls(活動停止)フラップガールズスクールKOBerrieS81moment▲(活動停止)さきどり発進局(活動停止)PREDIANNAHIGHSPIRITS青SHUN学園赤マルダッシュ☆★つぼみ大革命東京CuteCuteP.IDLDREAMING MONSTERまなみのりさNゼロStella☆Beatsエラバレシ

さまだったらi*chip_memoryきゃわふるTORNADOシブヤDOMINION★三代目 KONAMON (活動停止)HR Malcolm Mask McLaren(活動停止)PrincessGarden-姫庭-RY'S(A.K.A.アイドルオーケストラRY'S)ROSARIO+CROSSPLCd-girls(活動停止)DISDOL(活動停止)WenDee

AH(嗚呼)きゅい~ん'ズ▲(活動停止)恥じらいレスキューJPN(活動停止)on and Go!eyesDDプリンセス(活動停止)Sola Sound閃光プラネタゲートヤンチャン学園音楽部われらがプワプワプーワプワ(活動停止)ダイヤモンドルフィー手羽先センセーション▲(活動停止)JK21 ★HIROSHIMA GO!GO!少女交響曲~GirlsSymphony~IVOLVE ▲(活動停止)ユメオイ少女Needs ★Jewel☆Ciel

Q-pitchワガママきいて??★綺星★フィオレナード校庭カメラガールドライカラフルスクリーム▲(活動停止)月と太陽QUEENS(活動停止)WiLL★MONSTER GIRLFRIENDexpieceSplash!

★143∞★ティーンズ☆ヘブン(活動停止)東京イルミナティNEO BREAK HAPPY ANNIVERSARY

ULTRA BUZZ ▲(活動停止)Dear L mana パステル☆ジョーカー 東京23区ガールズ (活動停止)カプ式会社ハイパーモチベー ション 狂い咲けセンターロード (活動停止)アリスインアリス ZOMBIE POWDER

▲(活動停止)なめんなよ原宿G-COMPLEx ▲(活動停止)渡良瀬橋43CANDY GO!GO! Shine Fine Movement gra-DOLL

(活動停止)ULTRAFRUITPOCHETTE ★Fragrant Drive 女子独身倶楽部 100 1000 10000 100000 1000000 10000000 100 1000 10000 100000 1000000 10000000

(34)

import seaborn as sns sns.jointplot(followers,cd)

sns.jointplot(followers, cd, xlim=(0,10000), ylim=(0,10000), kind="scatter")

(35)

equation_df=pd.concat([cd, followers], axis=1) sns.heatmap(equation_df, vmax=5000)

filtered = cd[(cd >= 0) & (cd < 10000)] ax = sns.distplot(filtered, kde=False);

(36)

import seaborn as sns import matplotlib.pyplot as plt import pandas as pd %matplotlib inline df_iris=input_sheet_df #print(df_iris)

ax = sns.lmplot('Followers', # Horizontal axis 'CD_SALES', # Vertical axis

data=df_iris, # Data source

fit_reg=False, # Don't fix a regression line size = 10,

aspect =2 ) # size and dimension

plt.title('CD Sales and Followers') # Set x-axis label

plt.xlabel('Followers') # Set y-axis label plt.ylabel('CD Sales')

def label_point(x, y, val, ax):

a = pd.concat({'x': x, 'y': y, 'val': val}, axis=1) for i, point in a.iterrows():

ax.text(point['x']+.02, point['y'], str(point['val']))

label_point(df_iris.CD_SALES, df_iris.Followers, df_iris.IDOL_NAME, plt.gca())

(37)

5. Web スクレイピングする

• その3. 食べログの レビュー情報を取 得して, 東京の ラーメン店/フレ ンチレストランな ランキングを作成 する 引用; https://qiita.com/toshiyuki_tsutsui/items/f143946944a428ed105b?fbclid=IwAR1xYwmpS0xGbmbyAz7SVlETwhyguMFEYsgdg-Niap27Mj3XurUHjJoG-Bk

(38)

5. Web スクレイピングする

• 取ってきたいデータ • 店舗名:store_name • 食べログ点数:score • 口コミ件数:review_cnt • 口コミ文章:review

(39)

5. Web スクレイピングする

(40)

5. Web スクレイピングする

• 引数として, self, list_url, mode を指定 する • requests.get で当該URL からデータが 取得できるか確認する • BeautifulSoup を用い, html の parse を行う. • soup_a_list で店名のリストを一括して 取得する • A タグの list-rst__rst-name-target 部 分からデータを取得する

(41)

5. Web スクレイピングする

• (Google Chromeの場合) F12 を押して, ソースコードを参照する

(42)

5. Web スクレイピングする

店舗名称の部分のソースコードを確認し, store_name_tag に, データの取得範囲を指定し, store_name で span内のstring を取 得することを指定する

(43)

5. Web スクレイピングする

(44)

5. Web スクレイピングする

• 評価点数の部分のソースコードを確認し, rating_score_tag に, データの取得範囲を指定 (bタグの, c-rating_val クラスから取 得する) し, rating_score で span内のstring を取得することを 指定する

(45)

5. Web スクレイピングする

(46)

5. Web スクレイピングする

3.65 3.7 3.75 3.8 3.85 3.9 3.95 4 4.05 4.1 4.15 中華そば しば田 麺尊 RAGE 饗 くろ喜 ラーメン屋 トイ・ボックス ほっこり中華そば もつけ らーめん改 中華ソバ 伊吹 八雲 真鯛らーめん 麺魚 本店 Japanese Soba Noodles 蔦 麺 みつヰ 純手打ち だるま らぁ麺やまぐち 麺屋吉左右 中華そば屋 伊藤 中華蕎麦 蘭鋳 中華蕎麦にし乃 MENSHO 迂直 煮干鰮らーめん 圓 はつね 中華そば 満鶏軒 町田汁場 しおらーめん進化 町田駅前店 麺処 びぎ屋 らぁ麺やまぐち 辣式

(47)
(48)

5. Web スクレイピングする

(49)

5. Web スクレイピングする

• Web スクレイピングの注意 • データをダウンロードするとき • 目的は下記のものに限る。 • * 個人や家族間で使用する * Web検索サービスを提供する * 情報解析をする ※参考:著作権法第30条・著作権法第 47条(6,7) • 対象コンテンツは下記のものに限る。 • * 文章(データベースのコンテンツの場 合はコンテンツの一部のみに留めてお く) * 画像(同上) * 音声(パブリックドメイン等のオープ ンなライセンスの物に限る) * 映像(同上) ※参考:著作権法第30条・著作権法第 47条(7) • Webサイトへアクセスする時は下記 の制限を守る。 • * robots.txt/robotsメタタグのアクセ ス制限内容を守る。 * robots.txtがない場合でも、サーバ アクセスの間隔を1秒以上空けるように する。 * Pragma:No-cacheメタタグが設定 されているページはダウンロードしな い。 * rel=”nofollow”が設定されているリ ンクはクローラーで辿らない。 * 会員のみが閲覧できるページの場合 は利用規約を守る。 * 情報収集を禁止する措置(ex.アク セス制限)がクローリング時に取られ ていた場合は、既に取得していた情報 を含めて削除する。 ※参考:著作権法第47条(6) https://qiita.com/nezuq/items/c5e827e1827e7cb29011

(50)

5-2. RPA で処理する

• RPA(Robotics Process Automation; ロボティクスプロセス

オートメーション)とは、現代のホワイトカラーの主要業務であ る定型的パソコン作業の効率化を図る、ルールエンジンを活用 したソフトウェアロボットである。作業時間を圧倒的に短縮す ることができ、作業ミス無しで連続稼働が可能であるため、オ ペレーションプロセスの限界費用を低下させることができる。 • RPAはソフトウェアロボットの特徴を最大限に発揮するもので、 具体的には、定型化された表計算ソフト間のデータのやりとり、 メールのやりとり、ウェブ情報のリアルタイム収集や確認作業、 そして、それら各作業間の連携などを、プログラミングする必 要もなくマクロを作成し実行することができる. http://www.jsse.jp/~kenkyu/201631/04/20163104_115-118.pdf

(51)

5-2. RPA で処理する

• “人力で1件約5分かかっていた作業が、ロボットなら1分30秒で 処理できる • 2017年12月にBizRobo!を導入し、データ管理チームの江川氏と田坂氏 の2名の担当者が1カ月間の研修を受けた後、ロボット開発を進めて いった。まず、Web経由で申し込みのあった顧客情報をSalesforceに 登録する「顧客登録」と、セミナーへ申し込みのあった顧客情報を同 じくSalesforceにセミナー参加者情報として登録する「参加登録」を RPA化した。その導入効果は目を見張るものがあった。 • 「顧客登録は従来、人力で1件当たり約5分かかっていましたが、ロ ボットなら1分30秒で処理できるようになりました。今では全件数の うち約60%をロボットが処理しています。参加登録は人力で1件当た り約3分かかっていたものが、ロボットなら約30秒で処理でき、全体 の99%以上をロボットが担っています」(江川氏)” ソース; https://rpa-technologies.com/case/case011/

(52)

6. 手入力で作成する

• 人力で、雑誌や本からデータセットを作成する

• 古いデータ (1980年以前) だとこの手法がどうしても中心に

• 一橋大学経済研究所にはデータベース化されたデータもかなり存在

(53)

2. ということで、実際にデータ

を作ってみよう

(54)

今回作るデータセット

• dancyu 3月号 • 日本酒の酒蔵に関するアンケート調 査の Raw Data が掲載 • きっかけ; 入山章栄さん (早稲田 ビジネススクール教授; aka 妻の 指導教官) のフェイスブック投稿

(55)

日本酒の分析でわかりそうなこと;

リサーチクエスチョン

• 世界的な認知が進む(進みつつある)日本酒を供給するサイドの 蔵元が, どのように形成されているか? • クラスターは, 伝統産業でどのように形成されているか? • なぜ伝統的な杜氏と蔵元システムが継続されているのか?大規 模生産システムは成立しないのか?規模の経済性は成り立たな いのか?

(56)

データの中身

• 代表銘柄 • お酒の名前 • 酒造名 • 会社名 • 所在地 • 都道府県名 • 郡名+市町村名 • 創業年 • 元号年 • 西暦年 • 石高 • 一石=一升瓶100本 • 蔵元の名前 • 年齢 • 杜氏または製造責任者 • 年齢 • 造りに関わる人数 • 蔵の考えるスタンダード商品 • 具体的な種類

(57)

データの中身(cont.)

• 杜氏 • “日本酒の醸造工程を行う職人集団、すなわち蔵人 の監督者であり、なおかつ酒蔵の最高製造責任者 をいう” • 杜氏になるには、飯焚(かしき / ままたき / めし たき)から始め、全工程に習熟するまで数十年を 要したが、その仕事の内容にふさわしい敬意を払 われ、収入面でも恵まれ、「杜氏になれば御殿が 建つ」などと言われたものだから、戦前の貧しい 農漁村では青少年たちは競って杜氏を志した。手 がけた酒の評判が高まれば、どんどん恵まれた環 境への引き抜きがあるが、失敗すれば翌年の契約 はされないという厳しい実力主義の世界であった。 ちょうど現代のベンチャー起業家のような側面を 持っていたといえる。 • 日本酒の長期的な消費低迷により、杜氏の数も劇 的に減少したが、1980年代以降、若者であらため て日本酒文化を見直し杜氏になろうとする人が増 えてきている。また流派ごとに専門学校や訓練所 を創設したり、石川県菊姫合資会社による酒マイ スター制度のように、蔵単位で後継者の育成に励 んでいるところもある。 • 蔵元 • “酒・醤油・味噌・酢などの醸造元をいい、オー ナー家を指す総称” • 蔵元の主業は蔵物の委託販売である。蔵元は初め 諸藩の米穀を引受け、これを取り扱う蔵役人の称 呼で、藩吏がこれに当たっていたが彼等の無能な ことから、寛文年間(1661年-1673年)の頃より 蔵元の職を藩邸に出入りする町人に委ね、別に留 守居役を定詰または年番として蔵元および掛屋を 監督させた。 • 江戸時代初期は、各藩から派遣された武士の蔵元 が多かったが、寛永年間(1624年-1644年)以降、 しだいに町人蔵元が主流となり、寛文年間以降、 一般的なものとなった。初期の町人蔵元は、大名 や旗本など諸領主が主要都市の大阪・大津・堺な どに置いた年貢米の販売業者であった。 Source: https://ja.wikipedia.org/wiki/%E8% 94%B5%E5%85%83 Source: https://ja.wikipedia.org/wiki/ %E6%9D%9C%E6%B0%8F

(58)

データの中身

• 杜氏 • “酒造りの最高責任者である杜氏は、蔵内の 管理はもちろん、原料の扱いから、酒しぼ り、貯蔵、熟成まで、全ての工程に目を 配っています。杜氏のもとで酒造りに携わ る蔵人は10名ほどで、作業別に役職が決め られています。杜氏の補佐役となる頭(か しら)は、実際の作業の指揮をとり、人員 の配置を担当します。麹造りの責任者は代 師(だいし)、酒母製造工程の責任者は、 もと廻り、もと屋と呼ばれます。この杜 氏・頭・代師、あるいは頭・代師・もと廻 りの3人を三役と呼んでいます。 • 三役以下の役人(やくびと)としては、米 を洗ってから蒸すまでの作業を担当する釜 屋(かまや)、出来上がったモロミをしぼ る係を船頭(せんどう)、炊事の担当者は 広敷番、飯屋(ままや)と呼ばれます。酒 蔵に入りたての蔵人は炊事の仕事などから はじめ、厳しい作業に耐えながら仕事を一 つひとつ覚えていったのです。” http://www.gekkeikan.co.jp/enjoy/sake/industry/industry03.html

(59)

分析出来そうなこと

• このデータのみで出来そうな こと • 石高の分布 • 地域ごとの生産量の累計 • 都道府県ごとの特性の解析 • 酒造ごとの特性 (テキスト分析) • ひとりあたりの生産量 • 蔵元と杜氏の関係性 • 親子関係や兄弟関係の有無 (Family Firm か否か) • 年齢の差分 • このデータと他のデータを組 み合わせることで出来そうな こと • 杜氏の特性が石高に与える影響 • 杜氏組合 • 地域特性が酒造りに与える影響 • RESAS • 他の産業との関係性の分析

(60)

データベース化の手法

• Web スクレイピング • 紙/雑誌ベースなので難しい • RPA • 紙/雑誌ベースなので難しい • OCR • もしかしたら出来るかもしれない • 手入力 • 出来ればやりたくないけど、確実

(61)

いつでも探しているよ、どっかに dancyu の姿を

• 3/31 の日本帰国後, 以下の本屋で探してみる • 愛知 • 国立 • 吉祥寺 • 羽田 • みつからない • たぶん、dancyu のバックナンバーが売っている本屋ではない と見つからない

(62)
(63)

結果、みつかりました

(64)
(65)

データセットを実際に

確認する

実際のデータを観るとわかること • 表形式になっていない • 途中で改行されている • 空欄のデータが存在する • 表記ゆれが存在する

(66)

そこで

• OCR で文字を認識できるように、コピーしてスキャナで取り込 めるようにする

(67)

スキャナーを使って、PDFにする

(as known as 「自炊する」)

• スキャンしようとすると、紙が詰まっ たりする

(68)

スキャンしたデータをとりあえず, フォ

ント埋め込み型のPDF にする

(69)

PDF をテキストデータにする

(70)

PDF をテキストデータにする

文字は取り出せたが, かなり歪んでいる このまま利用するのはかなり難しい → そこで, 手打ちで入力することに

(71)
(72)

みんなでデータ入力を (20分)

• https://docs.google.com/spreadsheets/d/1BkgknWKHeQqW nqCs1uaca7ZFvoBF8x44MWr2EuCclnQ/edit?fbclid=IwAR1q6 UynBqICJxbcHaOJ7Cj7RfN_KNGkyK1G3xDfwGb9ThRxwcIZc MKHXT4 にアクセスしてください (一橋IDを利用してログインしてくださ い) • 紙に記載された, 以下の情報を入力しましょう • 代表銘柄, 酒造名, 所在地, モットー, 創業年, 石高, 蔵元の名前, 杜氏, 造 りに関わる人数, 蔵の考えるスタンダード商品

(73)

担当の割り振り

スクリーン 岩手, 秋田, 宮城, 福島, 茨城, 栃木担当 (5-6人) 群馬,千葉東京, 神奈川, 長野, 新潟担当 (5-6人) 富山, 石川, 福井, 静岡, 愛知, 岐阜,三重担当 (5-6人) 滋賀, 京都, 大阪, 兵庫, 奈良, 和歌山担当 (5-6人) 岡山, 広島, 鳥取, 島根, 山口担当 (5-6人) 徳島, 香川, 愛媛, 高知, 福岡, 佐賀, 長 崎, 熊本, 大分担当 (5-6人)

(74)
(75)

Tips

• 役割分担は即席グループ内で適宜調整を • 打ち込む順番などを考えると楽です

(76)
(77)

とりあえず現時点のデータセットを確認

• 分布や基礎統計は, Google Docs の機能で確認可能

(78)

いざ入力すると気づくこと

• 例外的な表記が, 定型なデータになっているはずなのに, とても たくさんある • 長い社訓の表記 • 抜けている情報をどう表記するか • 「主な商品」のカッコ内をどう処理するか • 名前の姓と名の間の空白は全角にすべきか、半角にすべきか • 難しい名前をどう処理するか • 元号はデータとして起こしたほうがよいか? • 打ち込んだデータが正しく入力されているかのダブルチェック が必要

(79)

データベース設計の重要性

• データをどういった形式で, どう分割して保存するか • SQL の場合; データの形式を細かく指定 (前回講義参照) • 文字起こしの場合も, スクレイピングやRPA でデータを取得す る場合も, • 1. 元データからどのデータを取得するか • 2. 取得する場合, どういった形式でデータを取得するか • 3. 例外的なデータ/データが入力されていない場合, どう処理するか それぞれ検討する必要がある

(80)

dancyu データセットと組み合わせられる

データセット

• a.) 杜氏連合データ • 下野杜氏会 • 長野県醸友会 • 新潟酒造技術研究会 • 丹波杜氏組合 • 但馬杜氏組合 • 南但杜氏組合 • 大和杜氏会 • 南部杜氏協会 • 会津杜氏組合 • 山内杜氏組合 • 能登杜氏組合 • 富山県杜氏会 • 広島杜氏組合 • 大津杜氏組合 • 備中杜氏組合 • 出雲杜氏組合 • 石見杜氏組合 • 高知県杜氏組合 • 九州酒造杜氏組合 • b.) 杜氏の叙勲褒章者リスト • https://nittoren.com/pdf/02_01_190215.pdf

(81)

Dancyu データセットと組み合わせられ

るデータセット (cont.)

• c.) 醸いいかも! • http://www.jozo.or.jp/iikamo/%E6%B5%85%E8%88 %9E%E9%85%92%E9%80%A0%E6%A0%AA%E5%BC %8F%E4%BC%9A%E7%A4%BE%E6%A3%AE%E8%B0 %B7%E5%BA%B7%E5%B8%82

(82)

Dancyu データセットと組み合わせられ

るデータセット (cont.)

• c-2.) 蔵元紀行 • https://www.kuramotokai.com /kikou/ • 蔵主紹介や歴史背景などのテキ ストデータを, Dancyu データ セットと接合して, 企業の特性 を解析可能

(83)

Dancyu データセットと組み合わせられ

るデータセット (cont.)

• d.) RESAS • 地域経済分析システム • https://resas.go.jp/#/13/1310 1 • データのダウンロードが可能 • 利用方法は後の講義で解説予定

(84)

Dancyu データセットと組み合わせられ

るデータセット (cont.)

• e.) 特許データベース • 酒蔵の研究開発が石高や売上に影響を与えているか • f.) 企業データベース (DBJ やTDB データベースなど) • 倒産した酒蔵との比較 (サバイバル分析; TDB データベース) • 酒蔵の売上や資本回転率, ROA やROI など

(85)

今日のまとめ:

データ分析はデータ設計・収

集までの作業で70-80%

(86)
(87)

成績評価(1)

• 平常レポート (40パーセント; 必須) • 講義計画に示したように、複数の回で学生にはレポートを課します。 レポートは Word/PowerPoint形式のメールあるいは, github 経由で の提出が求められます(どの方法を採用するかは、初回の講義で決定し ます)。 • レポートには、(A.) 利用したデータセットとその内容, (B.) 分析の問 い, (C.) 分析手法, (D.) 分析結果 を明記する必要があります。ページ 数や文字数は問いませんが, これらの内容が含まれており, 講義中にア ナウンスする評価手法を満たす場合, 高い得点を得ることが出来ます。 • 平常点 (10パーセント) • 本講義は実習が多く含まれており, また取り扱うデータセットや内容も 多彩です。そのため、受講者同士が協力する必要があります。こうし た受講者の態度を評価するために、平常点を設けます。

(88)

成績評価(2)

• 最終レポート (40パーセント; 必須) • 講義の最終回では最終レポートの報告会を行います。受講者は3名から4名か ら構成されるグループで、最終レポートの報告を行う必要があります(人数は 受講者の人数により変更される可能性があります)。最終レポートでは、プレ ゼンテーションの方法を学生は自由に選ぶことが出来ます。PowerPoint 以 外にも、Prezi などのアクティブプレゼンテーションツールや、他のプレゼ ンテーション手法を用いることが出来ます(プレゼンテーションツールについ ては、必要であれば講義内で説明する機会を設けます)。最終レポートでは、 以下の点について評価を行います。 (A.) グループ内の役割分担 (B.) データセットのユニークさおよび、それが適切に処理されているか (C.) 分析手法のユニークさおよび、それが適切に解析されているか (D.) プレゼンテーションのユニークさ (E.) 質疑応答にうまくリプライすることが出来ているか • 最終レポートの360°グループ評価 (10パーセント) • 3. の最終レポートについて、グループの自己評価および他のグループからの 評価を行います。3. で挙げた評価ポイントに基づき、グループメンバーおよ び他のグループは評価を行います。

(89)

次回: データベースを用いた分析(2) 論文

データベース [座学、実習]

• Clarivate Analytics 社が提供する Web of Science

(https://clarivate.com/products/web-of-science/) では、 論文の書誌情報を取得することが出来ます。 • こうしたデータを用いることで、例えば、「日本の大学で最も 年ごとの論文数が多いのは何処か?」、「(指導教官の)○○先 生が書いた論文はt年にx本で、その論文は累計 y 回引用され た」などの情報を取得することが出来ます。 • 前回と同様、学生は問いを立てた上で、データベースから必要 な情報を取得し解析を行い、レポートに取りまとめる必要があ ります。

(90)

論文データでわかること

• 1905年にアインシュタインが出した論文が、誰にどのくらい引 用されているのか? • 企業が基礎研究にどのくらい注力しているのか? • 大学はどのくらい論文を生産しているのか? • 「△△学部の○○先生」はy年にx個論文を出していて、それがt 回引用されているか? • Web of Science; • 一橋学部生/院生は学内ネットワークよりアクセス可能

(91)

Schumpeter 1947 の後方引用数推移(Web

of knowledge)

(92)

THANKS

参照

関連したドキュメント

• パフォーマンス向上コーディネーター( PICO )を発電所各部に 配置した。 PICO は、⽇々の不適合/改善に関するデータのスク

最終的な認定データおよび特性データは最終製品 / プロセス変更通知 (FPCN) に含まれます。この IPCN は、変 更実施から少なくとも 90

核種分析等によりデータの蓄積を行うが、 HP5-1

また、各メーカへのヒアリングによ って各機器から発生する低周波音 の基礎データ (評価書案 p.272 の表 8.3-33

基準地震動 Ss-1~7 の全てについて、許容変位を上回る結果を得た 西山層以深の地盤データは近接する1号炉原子炉建屋下のデータであった 2014 年 11

算定手法 算定式 有効 桁数 把握するデータ項目 番号.

1.6.1-3 に⽰すように、ハルモニタリング、データ同化、健全性評価の⼀連のフローからなる

データ取得 系統運⽤・需給運⽤ 分析・解析