データ分析

【Pythonで不動産データ分析!】SUUMOをスクレイピングして情報収集!理想の賃貸物件を探してみた!

2020年3月29日

【Pythonで不動産データ分析!】SUUMOをスクレイピングして情報収集!理想の賃貸物件を探してみた! ということで、久々のデータ分析関連記事です。

突然ですが、みなさんは賃貸物件を探す時ってどうやって探すでしょうか?

基本的には不動産屋さんにいったり、賃貸情報がまとめられているアプリとかウェブサイトですよね。

SUUMOとかホームズとかが有名です。

こういうサービスはもちろんとても便利なのですが、場合によっては探すことにすごい時間がかかることもあります。

住みたい最寄駅とかがしっかりと定まっていれば、その周辺物件を探せばいいのですが、条件が全然定まっていないときはなかなか絞り込みが難しいですよね。

地域別で調べて、そこから駅を絞り込もうとしても、各駅ごとのデータが一覧で見ることができないというのも、データ分析の仕事をしている者としては非常に不便に感じます(笑)

ということで、Pythonを使って自分で情報収集しましたw

SUUMOから東京23区内の賃貸物件を収集して、そのデータから自分の条件にあった物件を探してみることにしました。

各駅ごとや沿線ごとのデータを一覧で見ることができたり、条件を指定すればマッチする物件を瞬時に表示できるので、かなり効率が良いです。

ここでは、Pythonによる情報収集の方法や実際に賃貸物件を探した流れについてご紹介します。

【Pythonで不動産データ分析!】SUUMOをスクレイピングして情報収集!理想の賃貸物件を探してみた!

【Pythonで不動産データ分析!】SUUMOをスクレイピングして情報収集!理想の賃貸物件を探してみた!

1. まずはPythonでSUUMOから情報収集!

まずは分析するために必要な情報収集です。

情報収集にはスクレイピングという技術を使います。

スクレイピングとは、ざっくりいうとWeb上からの情報を集めることを言います。

そしてPythonを使うと非常にシンプルなコードで簡単にスクレイピングすることができます。

今回の対象データは東京23区としました。

SUUMOでURLを確認してプログラムにセットしてあげたら準備完了です。

頑張ればプログラムでURLを自動取得することもできますが、めんどかったので自分で用意することにしましたw

まずはSUUMOのページから東京23区を指定します。

こんな感じで地域ごとの条件を決められるので、23区全てにチェックします。

【Pythonでデータ分析!】SUUMOから情報収集して理想の賃貸物件を効率的に探してみた!

この条件で検索すると635,695件のデータが見つかりました!

ただしこれには重複データも含まれているので実際のデータ数はこれよりも少ないです。

ちなみにここでは取得するページ数を減らすために表示件数をデフォルトの30件から50件に変更しました。

一番下までスクロールすると全部で1697ページあることがわかります。

【Pythonでデータ分析!】SUUMOから情報収集して理想の賃貸物件を効率的に探してみた!

次にURLの構造を確認するために次にページにいきます。

2ページ目のURLを確認すると次のようになっていました。

https://suumo.jp/jj/chintai/ichiran/FR301FC001/?ar=030&bs=040&ta=13&sc=13101&sc=13102&sc=13103&sc=13104&sc=13105&sc=13113&sc=13106&sc=13107&sc=13108&sc=13118&sc=13121&sc=13122&sc=13123&sc=13109&sc=13110&sc=13111&sc=13112&sc=13114&sc=13115&sc=13120&sc=13116&sc=13117&sc=13119&cb=0.0&ct=9999999&mb=0&mt=9999999&et=9999999&cn=9999999&shkr1=03&shkr2=03&shkr3=03&shkr4=03&sngz=&po1=25&pc=50&page=2

なんとなく、pcが表示件数、scのそれぞれが区を示していることなどが想像できますね。

そしてここで大事なのは、page=2となっていることです。

つまりこの数字を切り替えることでページを切り替えることができると推測できます。

これを1から1697ページまで変化させて各ページのデータを収集すればOKです。

各ページはこんな感じで賃貸物件が表示されています。

基本的にはここにある情報ほぼ全てを取得します。

取得しなかったのは画像くらいです。

また駅が複数ある場合は別の行にしてデータを収集します。

これを全てのページで繰り返すことでデータを収集できます。

そして収集したデータがこちらです。

【Pythonでデータ分析!】SUUMOから情報収集して理想の賃貸物件を効率的に探してみた!

いい感じに取れていますね。

ちなみにこの時点でデータは441,543行ありました。

【コード解説】PythonでSUUMOの賃貸物件情報をスクレイピングする【requests, BeautifulSoup, pandas等】

2. 取得したデータをきれいに加工します!

さて、これでデータを収集することはできましたが、このままでは分析することはできません。

データ分析するためには、収集したデータをきれいに加工する必要があります。

ここが一番めんどくさい部分です。

今回したことは次の通りです。

  • 「家賃」「管理費」「敷金」「礼金」「面積」「築年数」を数値データへ変換(さらに「管理費」は単位を万円へ変換)
  • 「アドレス」から「区」を抽出
  • 「アクセス」から「沿線」「駅」「徒歩」を抽出(さらに「徒歩」は数値データに変換)
  • 「アクセス」が駅でないデータ(バスとか)は除外
  • 徒歩圏内でないでデータ(車で3分とか)は除外
  • "URL", "アクセス"をキーにして重複データを除外

「階数」についても数値データに変換しようと思ったのですが、B3階とか4−5階とか変換しづらいものが結構あったので省略しましたw

重複データはこれでは完全には除外することはできないと思いますが、大部分はこれで排除できるのでこちらを採用します。

ここまでしてようやく分析する準備が整います。

ちなみにこれらの加工はapply関数やreモジュールを利用すると便利です。

加工して出来上がったデータはこんな感じです。

【Pythonでデータ分析!】SUUMOから情報収集して理想の賃貸物件を効率的に探してみた!

諸々を数値データに変換して、「沿線」とか「区」とかのカラムが追加されました。

これでようやくデータ分析の準備完了です。

ちなみに加工後はデータ数は274,275行になりました。

特に重複データが多いですね。SUUMOはここをもうちょっとしっかり管理するべきですw

何がともあれ、重複データだいぶデータは減ってしまいましたが、とりあえずこれで分析する準備ができました。

【コード解説】データ分析のためにSUUMOの賃貸物件情報を整形する!【re, pandas, apply, lambda等】

3. 区・駅・沿線ごとにデータを一瞬で表示!

データ分析の準備が完了したらあとは早いです。

まずは全体像を見るために区ごとでデータを見てみます。

全ての間取りを表示するとどえらいことになるので、ここではワンルームに絞ります。

まずは区ごとのデータです。

まあ予想通りですが、一番高いのは港区です。

一番安いのは葛飾区です。

可視化すれば一瞬でデータを把握できるのでとても便利です。

さらに沿線ごとのデータなんかも一瞬で表示できます。

トップに来るのは東京メトロ銀座線です。

半蔵門線や日比谷線も高いですね。

一番安いのは京成金町線です。

全体的に京成線は安いですね。

さらにここから分解して沿線の各駅ごとのデータも一瞬で見ることができます。

例えば、ワンルーム+東京メトロ銀座線で見てみましょう。

【Pythonでデータ分析!】SUUMOから情報収集して理想の賃貸物件を効率的に探してみた!

もっとも高いのは「京橋駅」ですね。

ワンルームで17.5万越えって頭おかしいですよねw

ここには住めません(笑)

反対に一番安いのは意外にも「銀座駅」でした。

そもそも物件数が少なく、かつ古い物件しかないというのも平均価格を押し下げる要因となっているようです。

「浅草駅」も同じくらいの価格ですね。

それにしても半数以上の駅で家賃が10万円超えているのですから恐ろしいですね。

4. 【おまけ】賃貸物件が安い・高い駅ランキングトップ20!

次におまけとして家賃が安い/高い駅トップ20をご紹介したいと思います。

SUUMOで、東京23区内にある物件すべてが対象です。

まずは高い駅トップ20です。

【Pythonでデータ分析!】SUUMOから情報収集して理想の賃貸物件を効率的に探してみた!

やはり銀座線の駅が多いですね。

さらには「六本木一丁目駅」や「明治神宮前」などの高級エリアも名を連ねています。

お次に安い駅トップ20です。

家賃を抑えたいけど、東京23区の住所が欲しい」という方はここから探してみてはいかがでしょうか。

【Pythonでデータ分析!】SUUMOから情報収集して理想の賃貸物件を効率的に探してみた!

ダントツで1位は「宮ノ前駅」です。

「どこやねんw」と思いましたが、荒川区みたいです。

結構聞いたことのない駅が多いですね。

ちなみに「舞浜駅」とか23区に入っていない駅もありますが、これは「駅は23区外だけど物件の住所は23区内にあるため」です。

個人的には「金町駅」とかいい感じの下町感があっていいと思いますね!

ここでついでに2番目に高い「表参道駅」と1番安い「宮ノ前駅」で間取りごとの平均価格と比べてみましょう。

1位の「京橋駅」は1SLDK以上の間取りがなかったので2位の「表参道駅」を選びました。

どえらい差が出ましたw

まずは「表参道駅」です。

【Pythonでデータ分析!】SUUMOから情報収集して理想の賃貸物件を効率的に探してみた!

はい、とんでもない価格でました。

なぜかワンルームが1Kとかよりも高いっていう面白い結果ですね。

そしてもっとも間取りの広い4LDKは家賃100万円超えですw

表参道駅周辺には一生住めそうにありません・・・

次に1番安い「宮ノ前駅」をみてみましょう。

圧倒的な差ですw

あまり大きな間取りはないですね。

どんなに大きな間取りでも平均家賃で見ると15万円未満です。

同じ東京23区内でもこれだけの差があるのはすごいですね。

5. 条件から理想の物件を効率的に探してみる!

さて、ここまではデータの全体像についてみてきましたが、いよいよここから当初の目的であった「理想の物件を探す」ことに挑戦します。

まあなんとなく始めた感じなのでそこまでしっかりした条件はないのですが、とりあえずパッと僕が思う条件はこちらです。

  • 間取り:2LDK
  • 築年数:15年以内
  • 駅徒歩:7分以内
  • 面積:50㎡以上
  • カテゴリー:賃貸マンション

こちらの条件で調べてみると、2559件見つかりました。

ちなみに僕は、現在は東京都中央区の1LDKの賃貸マンションに住んでいます。(さすがに駅名までは言えませんw)

まずは全体的な雰囲気を確認するために区ごとのデータをみてみます。

【Pythonでデータ分析!】SUUMOから情報収集して理想の賃貸物件を効率的に探してみた!

はい、港区とか渋谷区は40万超え、さらに千代田区や目黒区などは30万超えです。

無理ですw

そして今住んでる中央区だと20万超えは避けられそうにありません。

一方、江戸川区や足立区では15万円を下回ります。

さらにこれでは平均しか見ていないので、最安や最高などの情報も見てみます。

minは最安値、meanは平均、maxは最高値、countは物件数です。

港区、渋谷区、千代田区は最低価格でも20万円を超えていますね。

とりあえずここからはエリアを絞ります。

通勤の都合上、なるべく都心がいいので「中央区、新宿区、渋谷区、品川区、墨田区、江東区、目黒区」に絞ります。

これは結構適当に選んでいますw

この条件でさらに絞り込むと1,529件になりました。

とりあえず家賃が安いのをみてみます。

まだ重複データがありますね。2行目と3行目は同じデータですよね。

同じ物件でも別のURLで登録されてしまっています。

本当はこの辺りもデータをきれいにしないといけないのですが、めんどいのでスルーしますw

ここで一番安いのは「セレッソI」であることが確認できます。

家賃11.4万円で、東部伊勢崎線の東向島駅から徒歩6分です。

こちらです。結構いい感じじゃないですか。

【Pythonでデータ分析!】SUUMOから情報収集して理想の賃貸物件を効率的に探してみた!

次に現在住んでいる東京都中央区からも探してみます。

探し方については無限にあるので、これで最後にしますねw

まずは中央区で条件にマッチする最安値を見てみます。

【Pythonでデータ分析!】SUUMOから情報収集して理想の賃貸物件を効率的に探してみた!

めっちゃデータ重複してますが、とりあえず最安値は勝どきにある「コスモグラン勝どき」で、家賃は19万円です。

物件としてはかなりいい感じですが、やはり高い・・・

【Pythonでデータ分析!】SUUMOから情報収集して理想の賃貸物件を効率的に探してみた!

次に中央区の駅ごとのデータを見てみます。

平均価格の安い順に表示してます。

【Pythonでデータ分析!】SUUMOから情報収集して理想の賃貸物件を効率的に探してみた!

最安値で見ると勝どきが安かったのですが、平均で見ると、「馬喰横山駅」や「馬喰町駅」が安いですね。

問屋街なので、中央区の中でも安いのかもしれません。

とりあえず「馬喰横山駅」でみてみます。

この辺は複数の駅が密集しているので便利な場所ではあります。

ただしおっきなスーパーとかはありません。

結果としては3件しかありません。

一番安いものは家賃19.4万円です。馬喰横山駅から徒歩4分の物件です。

こちらを見てみます。

これもかなり良さそうです。

ちなみにですが、一番下にあるカスタリア東日本橋はいいですよ。

カスタリアは高級賃貸物件シリーズで設備が充実していて結構いいんですよね。

出た瞬間基本的には誰かに取られますw

このように収集したデータを駆使すれば効率的に自分の条件にマッチした物件を見つけ出すことができます。

アプリやウェブサイトではできないような検索方法もできるので、このデータを使って住みたい駅を絞り込んでからSUUMOのサイトとかで細かい条件を指定して探すといったこともありですね。

6. やっぱりデータ分析にはPythonです。

さて、ここまでSUUMOから収集したデータの分析についてご紹介してきましたが、ここでは情報の収集からデータの加工や分析を全てPythonを用いて行いました。

Pythonは非常にシンプルなコードでプログラミングができるのでオススメです。

特にデータ分析ではとても人気のあるプログラミング言語です。

最近話題のデータサイエンスではPythonを用いる場合が多いです。

そしてPythonは誰でも習得がしやすいというのも大きな特徴です。

実際に僕自身もPythonは全て独学で学び、今では仕事でもPythonをメインに使っています。

Pythonについてはこちらの記事でも詳しく書いていますので、もしご興味があればご覧ください。

【いますぐ始められます】データ分析をするならPythonが最適です。【学習方法もご紹介します!】

ちなみにですが、僕はこのPythonを独学することで転職にも成功しました!!!

【副業は神です】2度の転職において副業が内定の決め手になったお話。

Pythonは本当に色々なことに利用できるのでオススメです。

僕が運営しているもう一つのサイトである「投資でニート生活」もPythonメインで自作しています!

まとめ

いかがでしたでしょうか。

ここではSUUMOから情報収集して理想の賃貸物件を効率的に探してみました。

SUUMOとかホームズももちろん便利なのですが、場合によっては探すことにすごい時間がかかることもあります。

住みたい最寄駅とかがしっかりと定まっていれば、その周辺物件を探せばいいのですが、条件が全然定まっていないときはなかなか絞り込みが難しいですよね。

地域別で調べて、そこから駅を絞り込もうとしても、各駅ごとのデータが一覧で見ることができないというのも、データ分析の仕事をしている者としては非常に不便に感じます(笑)

こういった理由からPythonを使って自分で情報収集して分析してみました。

最終的にはいい感じの物件を見つけることができました。

今回作成したプログラムはいつでも走らせて最新のデータを取得できるので今後も使い続けていこうと思います!

また、こちらの記事を読んで「Pythonについて学びたい」と思ってくださった方はこちらの記事をご参考ください。

【いますぐ始められます】データ分析をするならPythonが最適です。【学習方法もご紹介します!】
【副業は神です】2度の転職において副業が内定の決め手になったお話。

【2020/06/19追記】

ここから進化して、SUUMOの賃貸情報から機械学習モデルを作成してお得物件を探してみました。

【Pythonで不動産データ分析!】機械学習(ランダムフォレスト)を用いてSUUMOからお得物件を探してみた!
【Pythonで不動産データ分析!】機械学習(ランダムフォレスト)を用いてSUUMOからお得物件を探してみた!

おすすめPython学習法

Udemy:セール中なら90%オフで購入可能。豊富なコースから選べる!

データミックス:Pythonとビジネスについて学べる!起業したい方にもおすすめ!

SAMURAI TERAKOYA:月額2,980円〜利用できるコスパ最強スクール!

 

-データ分析
-, ,

© 2023 気ままなブログ