Upgrade to Pro — share decks privately, control downloads, hide ads and more …

#経済学のための実践的データ分析 3.1 データを取得する6くらいの方法

yasushihara
September 24, 2019

#経済学のための実践的データ分析 3.1 データを取得する6くらいの方法

一橋大学経済学研究科 38番教室

主な内容;
- Panda によるデータ取得
- Web スクレイピング
- Web アンケート
- データベースの設計

yasushihara

September 24, 2019
Tweet

More Decks by yasushihara

Other Decks in Education

Transcript

  1. 今日の内容 (人力や Web スクレイピングや RPA で)データを集めてきて処理をするまでの 長く険しい道 [座学、実習] • データといっても、そのほとんどは実のところ定型化されてい

    ません。Web サイトや書籍や国会図書館から手作業でひとつひ とつ入力し、あるいは、Web スクレイピングやRPA を用いて, Web から取得する必要があります。 • データ分析は、こうした事前の作業が作業全体の60-70パーセ ントを占めています。 • こうした手続きの具体例について、座学を用いて紹介した後、 雑誌や Web に掲載されたデータを取得する手法についてご紹 介します。
  2. レポートの内容 • 概要 • 指定された3つのデータセット (フットボール, バーベキュー, Airbnb) からひとつを選び、 Jupyter

    Notebook 上で解析し, 重回帰分析を行う • レポートでは • (1) 被説明変数と説明変数の関係性 • (2) R二乗項の値 • (3) VIF 値による, 多重共線性のチェック などを報告した上で, 構築したモデルについて考察を行うこと • 提出期間: - 2019/10/4 13:15:00 (JST) • 提出方法: • Slack のDM で送信すること
  3. データセット (その1) • FIFA19 Datasets; クロスセクションデータ • https://www.kaggle.com/karangadiya/fifa19 FIFA 19

    に収録されている フットボールプレイヤー選手 の能力値や市場価値をまとめたデータ
  4. データセット(その3) • Columns • Id; listing ID • Name; name

    of the listing • host_id; host ID • host_name; name of the host • neighbourhood_grouplocation • neighbourhoodarea • Latitude; latitude coordinates • Longitude; longitude coordinates • room_type; listing space type • Price; price in dollars • minimum_nights; amount of nights minimum • number_of_reviews; number of reviews • last_review; latest review • reviews_per_month; number of reviews per month • calculated_host_listings_count; amount of listing per host • availability_365; number of days when listing is available for booking
  5. FIFA19 データの場合, 考えうる仮説 • 選手の加齢は市場価値を押し下げる • クラブの移籍は選手のサラリーを押し上げる • 国際的な認知度は選手の市場価値を押し上げる •

    現在の契約終了年までの期間が短いほど、市場価値を上げる • 南米出身の選手は、欧州出身の選手に比べサラリーの水準が低 い • Etc…
  6. Notebook の解説 • データを取り込み, 重回帰分析まで行った結果を Jupyter Notebook に記述して, Manaba にアップロードしました

    • 被説明変数と説明変数を入れ替えれば, ご自身のレポートにお 使い頂けます
  7. Notebook の解説 やっていること ・Excel にしたデータをJupyter Notebook に取り込む (同じディレクトリにデータを 入れておくこと) ・シートの1枚目

    (0番目) を input_sheet_df にインポートする ・input_sheet_df.head(10) で, データの 10番目までを表示する Messi や Ronaldo, Suarez などのデータ が表示されていることが確認できる
  8. Notebook の解説 やっていること ・説明変数と被説明変数をそれぞれの列か ら取り出す (.iloc [行, 列]で, 行を指定せず 列のみを指定する)

    ・scipy.stats.lingress(説明変数, 被説明変 数) で単回帰を回す ・散布図および, 単回帰分析の結果をアウ トプットする
  9. Notebook の解説 sm.OLS(被説明変数, 定数項+説明変数) で回帰分析 を行い, 結果を表として出力する 被説明変数; overall (ゲーム上での総合評価)

    説明変数; age (年齢) 定数項および説明変数はそれぞれプラスに有意だが, R修正項は高くない。
  10. Notebook の解説 sm.OLS(被説明変数, 定数項+説明変数) で回帰分析 を行い, 結果を表として出力する 被説明変数; wage (年俸)

    説明変数; age (年齢) 定数項はマイナス, 説明変数はプラスに有意だが, R修正項はかなり高くない。
  11. Notebook の解説 • plt.scatter パッケージを用い, wage (年俸)とage(年齢) をプ ロットする •

    30歳までは年俸は上昇してい くが, その後下方トレンドが あることが確認できる • いくつか外れ値があることが 確認できる
  12. Notebook の解説 • Seaborn パッケージで, ヒス トグラムと散布図を同時にプ ロットする • 年齢はF分布,

    年俸はべき乗分 布に近いことが確認できる • 外れ値はメッシやクリスティ アーノロナウドなど.
  13. Notebook の解説 • 同様に, 重回帰分析を sm.OLS パッケージを用いて 行う • 説明変数が空の行を削除する

    (x_list.drop… 以下) • 年齢とレピュテーション, 契 約満期までの残り年数および 評価値はプラスに有意, 定数 項はマイナスに有意, 利き足 ダミーは有意であるとはいえ ないことが確認できる
  14. みなさんにレポートでやって頂きたいこ と • Python + Jupyter Notebook に慣れていただく • 被説明変数と説明変数の組み合わせを考えてみる

    • 変数を自分で作り出す • 与えられている変数から, 自分で変数を作成する • ある程度説明力 (ここではとりあえずR修正2乗値) の高い誘導 形 (reduced form) のモデルを作り出す
  15. レポートの評価方法 • Excellent • データおよび適切な分析手法に基づき、独自の視点で十分に考察がなされている • Good • データおよび適切な分析手法に基づき、独自の視点で考察がなされている •

    Fair • データに対して分析が行われているが、一般的な範囲での考察にとどまる • Bad • 考察がなされていない,あるいはデータの解析が十分に行われていない • Failed • 断りなく他者の見解を引用している,その他不正行為に相当する
  16. 今日までの講義で使ったデータ • ランダム作成した行列データ (@Jupyter Notebook) • FIFA 19, Airbnb, BBQ

    データベース (Kaggle) すでにデータが整備されており, あとは解析すれば何かしらのア ウトプットが作成できるもの. しかし, 現実にはデータセットは自分で用意する必要がある
  17. データ分析の流れ なんのデータを 使うか考える 先行研究・事例 を探す データの取得方 法を確認する データをデータ ベース or

    手入力 or 図書館 or 口 コミ or Web ア ンケートで入手 する 入手したデータ の妥当性を確認 する データを統計ソ フト and/or Python and/or SQL で処理する データに統計処 理を行う データに関する 解釈を行う 解釈されたデー タと、その解釈 を Word か Jupyter Notebook か Tex でテキス ティングする レポートとして 先生に送る/上司 に提出する/学術 誌に投稿する 今日メインに取り上げる内容 前回/前々回で 取り上げた内容 レポートでやって いただく内容 入手したデータに不足があれば, 別のデータソース を参照し, その入手可能性や妥当性を確認し, データ の入手作業を改めて行う
  18. 1. 図書館や国会図書館で入手する • 一橋大学図書館 • および, 日経BPデータベースなど, 大学が契約しているデータベース • 国会図書館

    as known as日本最強の図書館 • デジタルデータベース • http://dl.ndl.go.jp/ • リサーチ・ナビ • https://rnavi.ndl.go.jp/rnavi/ • なにか信頼性の高いデータが必要になったら, 永田町に行けば だいたい見つかります (税金を払っている甲斐があります)
  19. 2. データの提供元から入手する • データベースを提供する会社から入手する • JSON (グッドデザイン賞) や XML (Web

    of Science) など, その ままだと解析をそのまま行うには複雑過ぎるデータ形式で提供 される場合もあるので, 必要に応じてデータの parse 処理を行 う。 • 具体例; • Web of Science のXML データをparse してSQL にした話
  20. 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? - ID?
  21. 2. データの提供元から入手する • データを parse して, XML からSQL に変換 する

    • 正規化する • MySQL 上でデータを処 理可能にする
  22. 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
  23. 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.
  24. 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) );
  25. 3. API で取得する • Application Programming Interface • アプリケーション同士を接合するための仕組み •

    汎用的な機能を提供する. • API を経由して機能を呼び出す形でプログラムを構成することにより, 同 じAPI が実装されていれば, 別のソフトウェア上でそのまま動作できる. • データ形式にXML や JSON を利用する Web API も普及 http://e-words.jp/w/API.html
  26. 3. API で取得する • Crossref (学術論文の DOI 情報サイト) から, 原講師の出版物の情報を

    取得する • DOI; コンテンツのディジ タルオブジェクト識別子. インターネット上のド キュメントに恒久的に与 えられる. • URLを指定し, 取得する DOI を設定する
  27. 3. API で取得する • Orcid から特定の研究者の情 報をAPI 経由で取得する • 今回は

    ORCID ID 0000-0001- 9500-1150 • Orcid Public API の Client ID や Cilient secret, token を取 得し, API 経由で 原講師の最 近の論文情報を取得する
  28. 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
  29. 4. Web アンケートで集める • アンケートを Google Docs などを使って, 集める •

    卒論やMBA ペーパーでも見 かけがち • 母集団がとても曖昧になりが ち • 注.まどかマギカネタは古典
  30. 4. Web アンケートでデータを集める • 懸念点1. データの母集団が, データの収集者の想定とは異 なる可能性がある • ユースケース:

    「女性の大学生 の買うコスメの情報を集める」, 「起業への選好を調査する」 調査者が想定している母集団= ◦◦大学の女性の大学1-4年生
  31. 4. Web アンケートでデータを集める • 懸念点1. データの母集団が, データの収集者の想定とは異 なる可能性がある • アンケートのTOPページに「こ

    のアンケートは女性の大学生限 定です」と書いても, 回答者が それを守る保証はどこにもない • 記名の場合も, アンケートサイ トにBASIC なパスワードを掛 ける場合にも同様 実際のデータ集計結果= ◦◦大学の女性の大学1-4年生+α
  32. • 「国立のおいしいも のアンケート」の ツッコミポイント 1. Q1. の解答欄が複数 選択可能である 2. Q1.

    の選択肢の単位 が絶妙に違う (“ザイ カレー”と”すた丼” と”つり舟”) 3. Q2. および Q3. は必 須回答であるか否か 明記されていない 4. 誰が対象のアンケー トか明記されていな い。 あとは?
  33. 4. Web アンケートでデータを集める • 懸念点2. アンケート調査の段階で適切な質問票を設計出来ていな いと、分析にあたって必要な情報を入手できない可能性がある • 質問表の設計に不備があると, 質問者が欲しい結果に回答者を誘導してし

    まう可能性 • 足りないデータをあとからアンケート調査しても, 調査時期が異なるので 統計的に正しい解析とは言えなくなる • 質問表の設計手法の参考文献 • 『質問紙デザインの技法[第2版]』 • 『図解 アンケート調査と統計解析がわかる本[新版]』
  34. 5. Web スクレイピングする, RPA で処理 する • Web スクレイピング •

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

    グの事例; 阪大Web サイト (http://stips.jp/) のタイト ルを取得する • 右図の◦の部分を取ってく る https://qiita.com/Azunyan1111/items/9b3d16428d2bcc7c9406
  36. 5. Web スクレイピングする • その2; Panda の機能を用いて Web サイト上の表を取得する #女性アイドルのキャパ数

    url = ‘https://wasteofpops.hatenablog.com/entry/2019/05/01/000000' dfs3 = pd.read_html(url) print(dfs3) URLを指定する Web ページ上のテーブルを取得する
  37. ★山本彩 乃木坂46 sherbet ★渡辺美優紀 ★高橋みなみ BABYMETAL 仮面女子 ★日向坂46 Perfume でんぱ組.inc

    真野恵里菜 モーニング娘。 AKB48(グループ) 篠崎愛 私立恵比寿中学 鈴木愛理 BiSH ★有安杏果 ももいろクローバーZ 欅坂46 吉田凜音 椎名ぴかりん アンジュルム フェアリーズ Juice=Juice 夢みるアドレセンス カントリー・ガールズ 小池美由 TEAM SHACHI(A.K.A.チームしゃちほこ) スリジエ ★=LOVE i☆Ris 柊木りお BiS【新】 こぶしファクトリー バンドじゃないもん!MAXX NAKAYOSHI たこやきレインボー つばきファクトリー 風男塾 寺嶋由芙 東京女子流 ゆるめるモ! LADYBABY ▲(活動停止)9nine ベッド・イン まねきケチャ さくら学院 ラストアイドル(ファミリー) PassCode GANG PARADE (活動停止)ベイビーレイズJAPAN ときめき宣伝部 (活動停止)PASSPO☆ KissBee ばってん少女隊 武藤彩未 EMPiRE ぜんぶ君のせいだ。 虹のコンキスタドール 眉村ちあき ▲(活動停止)妄想キャリブレーション Negicco 2o Love to Sweet Bullet ▲(活動停止)THE HOOPERS CY8ER 吉川友 神宿 わーすた Q'ulle SUPER☆GiRLS 純情のアフィリア アップアップガールズ(仮) predia Maison book girl A応P BILLIE IDLE アイドル教室 sora tob sakana マジカル・パンチライン ▲(活動停止)つりビット アキシブproject notall (活動停止)Cheeky Parade Dorothy Little Happy 東京パフォーマンスドール LinQ Task have Funフィロソフィーのダンス PINK CRES. ★J☆Dee'Z lyrical school Party Rockets GT ▲(活動停止)ロッカジャポニカ じゅじゅ 演歌女子ルピナス組 FES☆TIVE あゆみくりかまき Dancing Dolls 天晴れ!原宿 さんみゅ~ アンダービースティー 劇場版ゴキゲン帝国 hy4_4yh (活動停止)バニラビーンズ 神使轟く、激情の如く。 里咲りさ Run Girls, Run! 伊藤桃 ★なんきんペッパー ▲(活動停止)X21 絶叫する60度 kolme(A.K.A.callme) OS☆U RHYMEBERRY なんキニ! Bitter & Sweet uijin 転校少女*(A.K.A.転校少女歌撃団) ヤなことそっとミュート Luce Twinkle Wink☆ CHERRSEE おやすみホログラム ナナランド ミライスカート ONEPIXCEL 絶対直球女子!プレイボールズ ひめキュンフルーツ缶 放課後プリンセス はちみつロケット Pimm's CROWN POP RYUTist ゆくえしれずつれづれ ハコイリムスメ Aphrodite 大阪☆春夏秋冬 煌めき☆アンフォレント 愛乙女☆DOLL (活動停止)チャオ ベッラ チンクエッティ ANNA☆S アイドルカレッジ monogatari(A.K.A.原宿物語) 病ンドル (活動停止)ベボガ! 柳田絵美花 パクスプエラ 上月せれな MIGMA SHELTER (活動停止)Cupitron せのしすたぁ DESURABBITS いちごみるく色に染まりたい。 STARMARIE ▲(活動停止)ハッピーくるくる NEO JAPONISM Kus Kus Chu-Z バクステ外神田一丁目 READY TO KISS 真っ白なキャンバス ▲(活動停止)THERE THERE THERES Devil ANTHEM. さくらシンデレラ NECRONOMIDOL 3776 ワンダーウィード Ange☆Reve WHY@DOLL Chu☆Oh!Dolly みんなのこどもちゃん クマリデパート ▲(活動停止)Chubbiness ▲(活動停止)S☆スパイシー ▲(活動休止)東京CLEAR'S Broken By The Scream ▲(活動停止)CHOCO★MILQ キセキレイ Fullfull Pocket SIR 幽世テロルArchitect はちきんガールズ amiinA SAY-LA フルーレット イケてるハーツ (活動停止)少女隊 平成琴姫 川崎純情小町 TEARS-ティアーズ- Yamakatsu(A.K.A.山口活性学園) tipToe. ▲(活動停止)・・・・・・・・・(活動停止)KNU KOTO ぴゅあ娘 リローデッド Jewel☆Neige ミルクス本物 ピュアリーモンスター 桃色革命 パンダみっく avandoned(A.K.A.あヴぁんだんど) サクヤコノハナ CYNHN ヲルタナティヴエルフロート はっぴっぴ ステーション♪ あかぎ団 キャンディzoo (活動停止)MAPLEZ 愛夢GLTOKYO DEAR KISS まじばんch(A.K.A.Magical Ban☆Bang) (活動停止)ハニーゴーラン とちおとめ25 TAKENOKO▲ エレクトリックリボン ★つぼみ大革命 ★星歴13夜 ▲(活動停止)さきどり発進局 あっとせぶんてぃーん (活動停止)アモレカリーナ東京 全力少女R P.IDL DREAMING MONSTER HAMIDASYSTEM Star☆T Tokyo Rockets Stella☆Beats KOBerrieS アイドル諜報機関LEVEL7 SPARK SPEAKER 青SHUN学園 81moment (活動停止)リナチックステイト まなみのりさ エラバレシ CoverGirls (活動停止)フラップガールズスクール シンセカイセン 蜂蜜★皇帝 TOY SMILEY (活動停止)PREDIANNA Nゼロ SO.ON project グーグールル 赤マルダッシュ☆ FLOWLIGHT 東京CuteCute HIGHSPIRITS PiXMiX ▲(活動停止)きみがわたしだけのおうじ さまだったら (活動停止)HR きゃわふるTORNADO ★三代目 KONAMON シブヤDOMINION i*chip_memory Malcolm Mask McLaren ROSARIO+CROSS d-girls (活動停止)DISDOL PLC (活動停止)WenDee (活動停止)PrincessGarden-姫庭- RY'S(A.K.A.アイドルオーケストラRY'S) AH(嗚呼) 閃光プラネタゲート ヤンチャン学園音楽部 きゅい~ん'ズ 手羽先センセーション DDプリンセス eyes われらがプワプワプーワプワ ▲(活動停止)恥じらいレスキューJPN ▲(活動停止)JK21 (活動停止)ダイヤモンドルフィー (活動停止)Sola Sound (活動停止)on and Go! ★HIROSHIMA GO!GO! ★Jewel☆Ciel ▲(活動停止)ユメオイ少女 Needs 少女交響曲~GirlsSymphony~ IVOLVE Q-pitch カラフルスクリーム 校庭カメラガールドライ ▲(活動停止)月と太陽 ★MONSTER GIRLFRIEND ★綺星★フィオレナード Splash! ワガママきいて?? QUEENS expiece (活動停止)WiLL ★143∞ ★ティーンズ☆ヘブン (活動停止)東京イルミナティ NEO BREAK HAPPY ANNIVERSARY ULTRA BUZZ ▲(活動停止)Dear L mana パステル☆ジョーカー 東京23区ガールズ (活動停止)カプ式会社ハイパーモチベー ション 狂い咲けセンターロード (活動停止)アリスインアリス ZOMBIE POWDER ▲(活動停止)なめんなよ原宿 G-COMPLEx ▲(活動停止)渡良瀬橋43 CANDY GO!GO! Shine Fine Movement gra-DOLL (活動停止)ULTRA FRUITPOCHETTE ★Fragrant Drive 女子独身倶楽部 100 1000 10000 100000 1000000 10000000 100 1000 10000 100000 1000000 10000000
  38. 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()) https://codeday.me/jp/qa/20190326/481623.html
  39. 5. Web スクレイピングする • その3. 食べログの レビュー情報を取 得して, 東京の ラーメン店/フレ

    ンチレストランな ランキングを作成 する 引用; https://qiita.com/toshiyuki_tsutsui/items/f143946944a428ed105b?fbclid=IwAR1xYwmpS0xGbmbyAz7SVlETwhyguMFEYsgdg- Niap27Mj3XurUHjJoG-Bk
  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 スクレイピングする 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 迂直 煮干鰮らーめん 圓 はつね 中華そば 満鶏軒 町田汁場 しおらーめん進化 町田駅前店 麺処 びぎ屋 らぁ麺やまぐち 辣式
  42. 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
  43. 5-2. RPA で処理する • RPA(Robotics Process Automation; ロボティクスプロセス オートメーション)とは、現代のホワイトカラーの主要業務であ る定型的パソコン作業の効率化を図る、ルールエンジンを活用

    したソフトウェアロボットである。作業時間を圧倒的に短縮す ることができ、作業ミス無しで連続稼働が可能であるため、オ ペレーションプロセスの限界費用を低下させることができる。 • RPAはソフトウェアロボットの特徴を最大限に発揮するもので、 具体的には、定型化された表計算ソフト間のデータのやりとり、 メールのやりとり、ウェブ情報のリアルタイム収集や確認作業、 そして、それら各作業間の連携などを、プログラミングする必 要もなくマクロを作成し実行することができる. http://www.jsse.jp/~kenkyu/201631/04/20163104_115-118.pdf
  44. 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/
  45. 今回作るデータセット • dancyu 3月号 • 日本酒の酒蔵に関するアンケート調 査の Raw Data が掲載

    • きっかけ; 入山章栄さん (早稲田 ビジネススクール教授; aka 妻の 指導教官) のフェイスブック投稿
  46. データの中身 • 代表銘柄 • お酒の名前 • 酒造名 • 会社名 •

    所在地 • 都道府県名 • 郡名+市町村名 • 創業年 • 元号年 • 西暦年 • 石高 • 一石=一升瓶100本 • 蔵元の名前 • 年齢 • 杜氏または製造責任者 • 年齢 • 造りに関わる人数 • 蔵の考えるスタンダード商品 • 具体的な種類
  47. データの中身(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
  48. データの中身 • 杜氏 • “酒造りの最高責任者である杜氏は、蔵内の 管理はもちろん、原料の扱いから、酒しぼ り、貯蔵、熟成まで、全ての工程に目を 配っています。杜氏のもとで酒造りに携わ る蔵人は10名ほどで、作業別に役職が決め られています。杜氏の補佐役となる頭(か

    しら)は、実際の作業の指揮をとり、人員 の配置を担当します。麹造りの責任者は代 師(だいし)、酒母製造工程の責任者は、 もと廻り、もと屋と呼ばれます。この杜 氏・頭・代師、あるいは頭・代師・もと廻 りの3人を三役と呼んでいます。 • 三役以下の役人(やくびと)としては、米 を洗ってから蒸すまでの作業を担当する釜 屋(かまや)、出来上がったモロミをしぼ る係を船頭(せんどう)、炊事の担当者は 広敷番、飯屋(ままや)と呼ばれます。酒 蔵に入りたての蔵人は炊事の仕事などから はじめ、厳しい作業に耐えながら仕事を一 つひとつ覚えていったのです。” http://www.gekkeikan.co.jp/enjoy/sake/industry/industry03.html
  49. 分析出来そうなこと • このデータのみで出来そうな こと • 石高の分布 • 地域ごとの生産量の累計 • 都道府県ごとの特性の解析

    • 酒造ごとの特性 (テキスト分析) • ひとりあたりの生産量 • 蔵元と杜氏の関係性 • 親子関係や兄弟関係の有無 (Family Firm か否か) • 年齢の差分 • このデータと他のデータを組 み合わせることで出来そうな こと • 杜氏の特性が石高に与える影響 • 杜氏組合 • 地域特性が酒造りに与える影響 • RESAS • 他の産業との関係性の分析
  50. データベース化の手法 • Web スクレイピング • 紙/雑誌ベースなので難しい • RPA • 紙/雑誌ベースなので難しい

    • OCR • もしかしたら出来るかもしれない • 手入力 • 出来ればやりたくないけど、確実
  51. いつでも探しているよ、どっかに dancyu の姿を • 2019/3/31 の日本帰国後, 以下の本屋で探してみる • 愛知 •

    国立 • 吉祥寺 • 羽田 • みつからない • たぶん、dancyu のバックナンバーが売っている本屋ではない と見つからない
  52. みんなでデータ入力を (20分) • https://docs.google.com/spreadsheets/d/1BkgknWKHeQqW nqCs1uaca7ZFvoBF8x44MWr2EuCclnQ/edit?fbclid=IwAR1q6 UynBqICJxbcHaOJ7Cj7RfN_KNGkyK1G3xDfwGb9ThRxwcIZc MKHXT4 にアクセスしてください • 紙に記載された,

    以下の情報を入力しましょう • 代表銘柄, 酒造名, 所在地, モットー, 創業年, 石高, 蔵元の名前, 杜氏, 造 りに関わる人数, 蔵の考えるスタンダード商品
  53. 担当の割り振り スクリーン 岩手, 秋田, 宮城, 福島, 茨城, 栃木担当 (5-6人) 群馬,千葉東京,

    神奈川, 長野, 新潟担当 (5-6人) 富山, 石川, 福井, 静岡, 愛知, 岐阜,三重担当 (5-6人) 滋賀, 京都, 大阪, 兵庫, 奈良, 和歌山担当 (5-6人) 岡山, 広島, 鳥取, 島根, 山口担当 (5-6人) 徳島, 香川, 愛媛, 高知, 福岡, 佐賀, 長 崎, 熊本, 大分担当 (5-6人)
  54. いざ入力すると気づくこと • 例外的な表記が, 定型なデータになっているはずなのに, とても たくさんある • 長い社訓の表記 • 抜けている情報をどう表記するか

    • 「主な商品」のカッコ内をどう処理するか • 名前の姓と名の間の空白は全角にすべきか、半角にすべきか • 難しい名前をどう処理するか • 元号はデータとして起こしたほうがよいか? • 打ち込んだデータが正しく入力されているかのダブルチェック が必要
  55. データベース設計の重要性 • データをどういった形式で, どう分割して保存するか • SQL の場合; データの形式を細かく指定 (前回講義参照) •

    文字起こしの場合も, スクレイピングやRPA でデータを取得す る場合も, • 1. 元データからどのデータを取得するか • 2. 取得する場合, どういった形式でデータを取得するか • 3. 例外的なデータ/データが入力されていない場合, どう処理するか それぞれ検討する必要がある
  56. dancyu データセットと組み合わせられる データセット • a.) 杜氏連合データ • 下野杜氏会 • 長野県醸友会

    • 新潟酒造技術研究会 • 丹波杜氏組合 • 但馬杜氏組合 • 南但杜氏組合 • 大和杜氏会 • 南部杜氏協会 • 会津杜氏組合 • 山内杜氏組合 • 能登杜氏組合 • 富山県杜氏会 • 広島杜氏組合 • 大津杜氏組合 • 備中杜氏組合 • 出雲杜氏組合 • 石見杜氏組合 • 高知県杜氏組合 • 九州酒造杜氏組合 • b.) 杜氏の叙勲褒章者リスト • https://nittoren.com/pdf/02_01_190215.pdf
  57. Dancyu データセットと組み合わせられ るデータセット (cont.) • c-2.) 蔵元紀行 • https://www.kuramotokai.com /kikou/

    • 蔵主紹介や歴史背景などのテキ ストデータを, Dancyu データ セットと接合して, 企業の特性 を解析可能
  58. Dancyu データセットと組み合わせられ るデータセット (cont.) • d.) RESAS • 地域経済分析システム •

    https://resas.go.jp/#/13/1310 1 • データのダウンロードが可能 • 利用方法は後の講義で解説予定
  59. Dancyu データセットと組み合わせられ るデータセット (cont.) • e.) 特許データベース • 酒蔵の研究開発が石高や売上に影響を与えているか •

    f.) 企業データベース (DBJ やTDB データベースなど) • 倒産した酒蔵との比較 (サバイバル分析; TDB データベース) • 酒蔵の売上や資本回転率, ROA やROI など
  60. 成績評価(1) • 平常レポート (40パーセント; 必須) • 講義計画に示したように、複数の回で学生にはレポートを課します。 レポートは Word/PowerPoint形式のメールあるいは, github

    経由で の提出が求められます(どの方法を採用するかは、初回の講義で決定し ます)。 • レポートには、(A.) 利用したデータセットとその内容, (B.) 分析の問 い, (C.) 分析手法, (D.) 分析結果 を明記する必要があります。ページ 数や文字数は問いませんが, これらの内容が含まれており, 講義中にア ナウンスする評価手法を満たす場合, 高い得点を得ることが出来ます。 • 平常点 (10パーセント) • 本講義は実習が多く含まれており, また取り扱うデータセットや内容も 多彩です。そのため、受講者同士が協力する必要があります。こうし た受講者の態度を評価するために、平常点を設けます。
  61. 成績評価(2) • 最終レポート (40パーセント; 必須) • 講義の最終回では最終レポートの報告会を行います。受講者は3名から4名か ら構成されるグループで、最終レポートの報告を行う必要があります(人数は 受講者の人数により変更される可能性があります)。最終レポートでは、プレ ゼンテーションの方法を学生は自由に選ぶことが出来ます。PowerPoint

    以 外にも、Prezi などのアクティブプレゼンテーションツールや、他のプレゼ ンテーション手法を用いることが出来ます(プレゼンテーションツールについ ては、必要であれば講義内で説明する機会を設けます)。最終レポートでは、 以下の点について評価を行います。 (A.) グループ内の役割分担 (B.) データセットのユニークさおよび、それが適切に処理されているか (C.) 分析手法のユニークさおよび、それが適切に解析されているか (D.) プレゼンテーションのユニークさ (E.) 質疑応答にうまくリプライすることが出来ているか • 最終レポートの360°グループ評価 (10パーセント) • 3. の最終レポートについて、グループの自己評価および他のグループからの 評価を行います。3. で挙げた評価ポイントに基づき、グループメンバーおよ び他のグループは評価を行います。
  62. リレーショナル・データベース • Excel のようにひとつのテーブルですべてのデータを管理する のではなく, キーを介して複数のテーブルから構成されるデー タベース 9/23/2019 119 中間試験の成績

    ・学籍番号 ・問1の得点 ・問nの得点 期末試験の成績 ・学籍番号 ・問1の得点 ・問nの得点 平常点の成績 ・学籍番号 ・出席点 ・小テストの得点 総合成績 ・学籍番号 ・総合得点(=中間試 験+期末試験+平常点) ・最終成績