こんにちは。TATです。
今日は久しぶりのデータ分析記事です。
テーマは「中古車価格データを分析して一番コスパの良さそうな中古車を探す」です。
この分析をしてみようと思ったきっかけは、「そろそろ車必要かもな〜」と思い始めたためですw
と言いますのも、私事ながら、2020年夏に結婚しまして、「今後は子供欲しいな〜」と妻と話しております。
子供を育てるとなってくると、「小さいうちは車欲しいよな〜」と考えるようになってきました。
過去にこんな記事書いてたやつと同一人物とはとても思えませんwww(笑)
【本当に必要なのか?】憧れのマイカーのコストについて考えてみる
ただ、子供と移動するにはやはり車が便利ですし、妻の負担も減らしてあげたいし、何より子供を色々なところに連れていってあげたいので、こうなってくると「マイカーは負債」というよりかは、もはや家族とか子供のために車は持っていたいわけです。
僕が子供の頃には両親が車で色々なところに連れていってくれて、今となってはとても楽しい思い出なので、僕も親になったら同じようなことをしてあげたいんです。
そのためにお金が必要なら僕がしこたま稼げばいいんですw
それで全てが解決しますwww
ただ、仮に車を買うことになった場合は、新車を買うなどといったこだわりは特になくて、願わくばコスパよく実現したいと思っています(笑)
となると中古車がターゲットになってくるわけですが、実際のところどの中古車を買えば一番コスパがいいのか全くわかりません。
車好きの方なら中古車の価格とか状態を見て、価格の良し悪しがつかめるかもですが、僕みたいなペーパードライバーには見当もつきません。
「じゃあデータ集めて調べてみようぜ」ということでこの分析を始めました。
ちょっと集めたデータ量が少ないので、そこまで突っ込んだ分析はできませんでしたが、僕の記録のために記事にしておきます。
目次
【Pythonでデータ分析】中古車価格データを分析して一番コスパの良さそうな中古車を探す
今回の分析の目的
まずは、データ分析の流れをご紹介する前に、今回の分析の目的を簡単にご紹介しておきます。
僕がこの分析にどんなことを期待していたのか、ということですね。
知りたかったことはこちらです。
- リセールバリューの高い車種・タイプ・メーカー
- 中古車価格の推移
リセールバリューの高い車種・タイプ・メーカー
1つ目はリセールバリューです。
やはり車を買うとなると、売ることも考えないといけません。
なるべく高く売ったほうがお得なので、どのようなメーカー(トヨタとか日産とか)、タイプ(SUVとかミニバンとか)、車種(プリウスとか)がリセールバリューが高いのかを知りたいところです。
予想としては、メーカーによって、車種によってリセールバリューはかなり変わってくると思っています。
人気のある車種は買いたい人も多いのでリセールバリューも高いかもしれません。
逆に、売れすぎて数がたくさんあるので売却時の価値はかなり下がっているかもしれません。
ここは調べてみないと結論が出せません。
特に、僕の場合は子供のことを考えたらミニバンが有力候補になるので、このリセールバリューが気になるところです。
中古車価格の推移
2つ目が中古車価格の推移です。
例えば、年式と価格の推移を見るといろいろなことが見えてくると思っています。
様々なパターンが考えられますが、ここでは2パターンだけ出しておきます。(結果はまだわからないので想像ですw)
おそらく価格推移を見ると②みたいになるのかなと予想しています。
つまり最新の車は高く売れます。
その価値の下落は最初の数年くらいは激しくて、途中から滑らかになっていくようなイメージです。
もう一つのパターンは比例して下がっていくパターンです(①)
どちらの結果になっても構わないのですが、結果によって車の買い方は変わってきます。
Aで買ってBで売ることを想定すると、②のパターンの方が嬉しいですよね。
安く買って、そこまで下落しないで売ることができます。
①だとぼちぼちの値段で買って、しっかり下がってから売る感じです。
①だと下落率は変わらないので、許容できる範囲でできるだけ古い車を買うことになります。
②だと下落率が下がるところを見極めていきたいですね。
データ分析には目的設定が大事です
こういったことを目的に設定してデータ分析を進めていきます。
ここの設定がしっかりしていないと、どんなデータを集めればいいのか、どうやって分析・可視化していけばいいのかがわからなくなってしまいます。
よって、データ分析を行う際には目的を明確化することが大事です。
わりと多くの人が、ここを設定する前にデータの収集とか分析をはじめがちです。
こうなると、後になって使わないデータとか無駄になってしまう作業がたくさん出てきがちです。
こうした無駄を避けるためにも、目的を明確化して、ある程度の仮説を立てておくことが大事になります。
この仮説は正解している必要はなく、作業を始める道しるべとして有効です。
合っていれば、さらに深掘りできますし、もし仮説が全く異なっても、異なっていたことがわかるので、別の可能性を探ることにつながります。
何れにしても、何の目的を設定せずに適当に突き進む場合と比べて、自分が何をしているのか、どこに向かっているのかが明確になるので、迷子になりません。
データはスクレイピングで収集しました
まずはデータをどこから集めればいいのか、色々なサイトを探し回りました。
データ収集先は価格.com
結論として、価格.comにしました。
理由は以下の通りです。
- 新車価格と中古車価格がまとまっている
- サイトがまとまっている
データ収集先を選定する際のポイントはある程度決まっています。
欲しいデータが揃っていて、情報がまとまってるということです。
今回の場合は、目的に達成するために必要なデータが揃っていることが条件です。
この条件を満たすサイトが複数あった際には、データ量とかサイト構造がまとまっているかどうかとかがポイントになってきます。
結果として、価格.comにしました。
他にもネクステージとかガリバーとかも見ましたが、サイト構造的に価格.comが一番いい感じでした。
Pythonのスクレイピングでデータを収集
データ収集を行うサイトが決定したら、あとはデータを集めるだけです。
データ収集にはPythonというプログラミング言語を駆使します。
Pythonはデータ分析やデータの可視化・AIなどに強い言語です。
スクレイピングも得意で、データ分析を行う際にも便利です。
【人気上昇中】今人気のプログラミング言語「Python」は何ができるのか?できることまとめます【転職でも有利です】
【いますぐ始められます】データ分析をするならPythonが最適です。【学習方法もご紹介します!】
過去にも、PythonのスクレイピングでSUUMOの賃貸物件情報を集めて分析した記事を紹介しています。
わりと短いコードで書けるので便利です。
【Pythonで不動産データ分析!】SUUMOをスクレイピングして情報収集!理想の賃貸物件を探してみた!
【コード解説】PythonでSUUMOの賃貸物件情報をスクレイピングする【requests, BeautifulSoup, pandas等】
サイトを確認する
次にサイトの確認を行います。
対象となるサイトURLはこちらです。
https://kakaku.com/kuruma/ranking/page=1/
最後の数値データを切り替えると、ページを変更できます。
次のページがなくなるまでひたすらデータを収集します。
サイトはこんな感じです。
ここにあるメーカーや車種、新車価格、中古車価格など、もろもろの情報を収集します。
ただし、このページに1つだけ手に入らないデータがあります。
それが車種タイプです。
こちらについては詳細ページから取得します。
例として、1位のレヴォーグのページをクリックするとこちらのページに飛びます。
この右上にある「ワゴン」というのが車種タイプですね。
その他、セダンやSUVやミニバンなどがあります。
収集データの確認・整形
収集したデータを確認する
それでは収集したデータを確認しましょう。
データ収集を行ったのは2021年1月8日の19時くらいです。
全部で2003個のデータがありました。
データはこんな感じです。
コード書くときに楽なのでカラム名は英語にしました。(日本語だと入力の切り替えがだるいですw)
タイプとか車種や価格などはもちろんですが、お気に入りの数とか登録されている中古車数とかの情報も取りました。
とりあえずいい感じで取得できていることがわかります。
データを整形する
次に取得したデータを分析できるように整形していきます。
このままだと分析することはできません。
現状だと全てのデータは文字列になっているので、数値データに変換したりmodelカラムから年式を抽出したり色々な作業が必要です。
ここが一番めんどくさい作業ですが、きちんとデータ分析するために1番大事な作業です。
ゆえに時間をかけてでもここは丁寧にやっていきます。
今回行った作業は以下の通りです。
- model列から年式を抽出
- price_new列とprice_used列から、最低価格と最高価格の平均値を算出
- rankingデータは使わないので削除
- review_number列とreview_score列を数値データに変換
- price_new列とprice_used列の比を算出
- ’ー’をNaNに変換
これらの作業を行った結果がこちらです。
describe関数やinfo関数で基本的な統計情報などを確認しておきます。
外れ値を削除する
次に外れ値の削除を行っていきます。
まず、全体とヒストグラムを見てみます。
これにはseabornのpairplot関数が便利です。
カラム数が多くなると細かくなってしまいますが、全体の傾向を見るには便利です。
データを見ながら今回行った外れ値除去作業はこちらになります。
基本的に価格データをもとに外れ値を除外しました。
- price_new, price_used, price_ratioの平均値から±2σ以上離れているデータを除去
- 年式が2000年以前のデータを除去
行ったのは上記の2つです。
価格データのばらつきがすごかったので、外れ値を削除します。
さらに年式ごとのデータ数を見ると2000年以前のデータ数が少なかったので取り除くことにしました。
ちなみに年式ごとのデータ数はこちらです。
そもそも2000年以前の古い車なんて買う気もないのでここは不要ですw
この辺は、データ分析の目的がはっきりしていると除外してもいいデータの判断がクリアになります。
以上の作業を行った結果がこちらです。
ちょっとコードの書き方が雑ですがご容赦くださいw
外れ値除去後のprice_ratioのヒストグラムはこんな感じです。
正規分布からちょっと歪んでますが、まあOKでしょうw
ちなみに外れ値除去する前のprice_ratioのヒストグラムはこちらです。
ぶっ飛んだデータが除去されていることがわかります。
これでデータ分析に必要な事前作業は完了です。
そして外れ値を除去した後のpairplot図がこちらです。
データを様々な角度から可視化する
それではここからデータを見ていきます。
いろんな角度から可視化していきましょう。
メーカーごとのリセールバリューを見る
まずはメーカーごとのリセールバリューを見てみます。
ここではprice_ratioで比較します。
数字が大きいほど新車価格と中古車価格の差が小さいことを意味します。
1を超えると中古車価格の平均の方が高いことになります。
恥ずかしながら、上位にあるメーカーはテスラ以外ほとんどわかりませんw
知っている方には納得する結果になっているのでしょうか。
国産メーカーではレクサスが一番リセールバリューが高いことがわかります。
これは予想通りですね。
高級車を除くと、国産車トップはスズキですね。
僅差でホンダやダイハツが追従しています。
一番低いのは日産です。
外車で人気のBMWとかアウディなんかもリセールバリューが低いのは少し意外でした。
こうなってくると外車を買うメリットは少なくなりますね。
タイプごとのリセールバリューを見る
次にタイプごとのリセールバリューを見てみます。
まさかの軽トラックが一番っていう結果になりましたw
軽トラのリセールバリューが高いとは知りませんでした。
そのほかで見るとSUVが高いですね。
最近はSUVが伸びていますから中古車需要もかなり高いのでしょう。
僕は個人的に子供が小さい時はミニバンかな〜と思っていたのですが、ミニバンのリセールバリューはかなり低いことがわかりました(涙)
これは中古車買った方がよさそうですね。新車はコスパ悪そうです。
ちなみに「その他」ってなんやねんと思ったので確認したら、トヨタの超小型EVである「コムス」だけでしたw
これは無視していいですねw
車種ごとのリセールバリューを見る
次に車種ごとのリセールバリューを見てみます。
ここでは年式とかもまとめて車種ごとにまとめます。
数が多すぎるので、トップ30を抽出しました。
知らない車種ばかりですが、全て1越えです。
つまり新車の平均価格より中古車の平均価格の方が高いことを意味します。
ただ、ここはデータ的にも問題があります。
収集したデータは、価格の最低価格と最高価格の平均をとっています。
内訳は見てません(データ取ってないので)
よって、一つでも高額な中古車があるだけで平均価格が上がってしまいます。
実際には、内訳データを見て、中央値を使うのが理想ですが、今回は内訳データがなかったので平均値としました。
ちゃんと分析するならこのデータも収集する必要がありますね。
ちなみに上記のグラフだとよくわからない車種も多いので、国産車に絞ってトップ30を出してみました。
わりとコンパクトカーが多いような感じがしますね。
僕が買おうと思っているミニバンは皆無です・・・w
年式との相関を見る
次に年式ごとのデータを見てみます。
これまで紹介してきたものは、年式とかは無視して全てまとめたデータです。
年式ごとに分けるとさらに細かい傾向を発見できると思っています。
こちらが、全データを年式ごとにまとめたものです。
思った通り、年式が古いほどリセールバリューは低くなります。
傾きを見ると、やはり新しい方が傾きは急になり、古くなるとなだらかになっていきます。
予想通りの結果となりました。
ちなみに近似曲線も加えてみると、2次曲線でいい感じにフィットします。
古くなればなるほど下落率は下がっていくことがわかりますね。
タイプ別の年式との相関を見る
次にタイプ別で年式との相関をみていこうと思います。
先ほどの図をタイプごとにプロットする感じです。
軽トラックが異常に高いことがわかります。
年式によってばらつきはありますが、ワゴンは全体的にリセールバリューが低いように見えます。
僕が狙っているミニバンは2015年より新しいものはリセールバリューが高いですね。
それより前になると結構下がります。
買って1年前の中古車買って2年後に売る感じですかね。
スパンが短すぎて現実的ではないありませんが(笑)
そして2014年くらいから全体的に急落するように見えます。
これは車検の影響とかもあるのでしょうか。
メーカー別の年式との相関を見る
次にメーカー別でみてみます。
ここは数が多すぎるので、僕が独断と偏見で決めた有名メーカーに絞りました。
ポルシェとテスラのリセールバリューが高いですね。
国産車ではトヨタとホンダが競っています。
日産は少し低めです。
シエンタ VS フリード
ちなみに僕の場合はミニバンを買うならトヨタのシエンタかホンダのフリードあたりがいいかなと思っています。
これらを比較するとシエンタの方がリセールバリューは高そうです
レビューがフリードの方が高いのが気になりますねw
それでも価格とかみてるとシエンタの方がコスパは良さそうに感じます。
ただ、フリードであればホンダセンシングを装備できるので安全面で考えるとフリードの方が良さそうに感じます。
それでも価格データを見る限りでは、シエンタに軍配が上がりそうです。
今回利用したデータの注意点
最後に今回利用したデータの注意点について触れておきます。
まずここで収集したデータは中古車データを集計したデータです。
サイトを確認します。
ここで表示されている価格データは最低価格と最高価格のみです。
中古車も数もありますが、その内訳はわかりません。
よって、中央値を調べることは今回はしていません。
単純に最低価格と最高価格の平均で計算しています。
内訳データがあれば、中古車価格の分布がわかるので、より正確な中央値を算出することができます。
こっちのデータを使えばもっと精度の高い分析ができるはずです。
さらに各車の内訳データがあれば、中古車それぞれの走行距離とかの情報も収集することができます。
ここまで集めることができればさらに突っ込んだ分析ができるはずです。
ただ、ここについては今回は行なっていません。
よって、ここで紹介した分析結果には多少なりの偏りがあることだけはご理解くださいm(_ _)m
ここはまた気が向いたら情報収集します(たぶん向かないですw)
データ分析にはPythonが最適です。
最後に、今回の分析で用いたPythonについて紹介しておきます。
ここで紹介したデータの収集・整形・分析・可視化は全てPythonで行なっています。
Pythonはデータ分析や可視化などを得意としており、比較的学びやすい点からも人気が集まっている言語です。
僕自身も社会人になってから独学で習得できてしまったくらい初心者にも学びやすい言語なのでオススメです。
【人気上昇中】今人気のプログラミング言語「Python」は何ができるのか?できることまとめます【転職でも有利です】
【いますぐ始められます】データ分析をするならPythonが最適です。【学習方法もご紹介します!】
Pythonの学習法としては個人的にはUdemyがおすすめです。
プログラミングの独学にUdemyをおすすめする理由!【僕はPythonを独学しました】
まとめ
いかがでしたでしょうか。
今回は「中古車価格データを分析して一番コスパの良さそうな中古車を探す」というテーマで価格.comからデータを収集して分析してみました。
目的であった、リセールバリューの高い車種・タイプ・メーカーや、年代式ごとのリセールバリューの変化について一定の答えを見つけることができました。
ただ、収集したデータの精度はまだまだ粗いので、より正確で突っ込んだ分析を行うには、各中古車データを集めて分析する必要がありそうです。
それでもある程度の答えを見つけることができたので、僕としては満足です。
久しぶりにデータ分析の記事を更新しましたが、やっぱりデータを見てるのは楽しいですね。
今後もデータ分析関連の記事は増やしていきたいところです。
ここまで読んでくださってありがとうございました。
【本当に必要なのか?】憧れのマイカーのコストについて考えてみる
【Pythonで不動産データ分析!】SUUMOをスクレイピングして情報収集!理想の賃貸物件を探してみた!
【コード解説】PythonでSUUMOの賃貸物件情報をスクレイピングする【requests, BeautifulSoup, pandas等】
【人気上昇中】今人気のプログラミング言語「Python」は何ができるのか?できることまとめます【転職でも有利です】
【いますぐ始められます】データ分析をするならPythonが最適です。【学習方法もご紹介します!】
プログラミングの独学にUdemyをおすすめする理由!【僕はPythonを独学しました】