仕事の都合で路線や駅のデータを調べる必要があり、公開されている ekidata のデータをいろいろ確認したメモです。
駅データ.jp とは
駅データ.jpとは、日本の鉄道駅の情報(駅データ)を配布するサイトです。
当サイトで提供している駅データは、法人・個人及び、商用・非商用を問わず、どなたでもご利用いただくことができます。詳細は「 利用規約 」をご覧ください。
当サイトの駅データを用いて生じたいかなる損害について弊社は責任を負いません。
という駅や路線の調査などには非常にありがたいサービスです。
前準備
駅データから各種データをダウンロードしておく。(会員登録が必要)
https://ekidata.jp/dl/
- 事業者データ
- 路線データ
- 駅データ
- 接続駅データ
各データの仕様はこちら。
https://ekidata.jp/doc/
確認は jupyter notebook で実行しています。この記事は以下の notebook で確認したことを元にしています。
https://github.com/hrkenz/jupyter-notebook/blob/main/ekidata.ipynb
上記の notebook の実行環境は以下です。
- Ubuntu 22.04
- Python 3.10
事業者データ
今回使用するのは 20230105 時点の version のデータ。
仕様はこちら。
https://ekidata.jp/doc/company.php
import pandas as pd
df_company = pd.read_csv('../files/ekidata/company20230105.csv')
df_company.head()
company_cd | rr_cd | company_name | company_name_k | company_name_h | company_name_r | company_url | company_type | e_status | e_sort | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 11 | JR北海道 | ジェイアールホッカイドウ | 北海道旅客鉄道株式会社 | JR北海道 | http://www.jrhokkaido.co.jp/ | 1 | 0 | 1 |
1 | 2 | 11 | JR東日本 | ジェイアールヒガシニホン | 東日本旅客鉄道株式会社 | JR東日本 | http://www.jreast.co.jp/ | 1 | 0 | 2 |
2 | 3 | 11 | JR東海 | ジェイアールトウカイ | 東海旅客鉄道株式会社 | JR東海 | http://jr-central.co.jp/ | 1 | 0 | 3 |
3 | 4 | 11 | JR西日本 | ジェイアールニシニホン | 西日本旅客鉄道株式会社 | JR西日本 | http://www.westjr.co.jp/ | 1 | 0 | 4 |
4 | 5 | 11 | JR四国 | ジェイアールシコク | 四国旅客鉄道株式会社 | JR四国 | http://www.jr-shikoku.co.jp/ | 1 | 0 | 5 |
df_company.shape
(171, 10)
171行あるということは、日本には鉄道事業の会社が171社もあるということになります。
廃止した事業者も含まれるかと思いますが、個人的には想像以上に多い数字です。
欠損値の確認
df_company.isna().sum().reset_index()
index | 0 | |
---|---|---|
0 | company_cd | 0 |
1 | rr_cd | 0 |
2 | company_name | 0 |
3 | company_name_k | 0 |
4 | company_name_h | 0 |
5 | company_name_r | 0 |
6 | company_url | 7 |
7 | company_type | 0 |
8 | e_status | 0 |
9 | e_sort | 0 |
compamy_url
が欠損しているものが7行。他のカラムでは欠損は無いようです。
df_company[df_company.company_url.isnull()]
company_cd | rr_cd | company_name | company_name_k | company_name_h | company_name_r | company_url | company_type | e_status | e_sort | |
---|---|---|---|---|---|---|---|---|---|---|
24 | 103 | 99 | 北海道ちほく高原鉄道 | ホッカイドウチホクコウゲンテツドウ | 北海道ちほく高原鉄道株式会社 | 北海道ちほく高原鉄道 | NaN | 0 | 2 | 103 |
35 | 113 | 99 | くりはら田園鉄道 | クリハラデンエンテツドウ | くりはら田園鉄道株式会社 | 栗原電鉄 | NaN | 0 | 2 | 113 |
83 | 161 | 99 | 神岡鉄道 | カミオカテツドウ | 神岡鉄道株式会社 | 神鉄 | NaN | 0 | 2 | 161 |
105 | 180 | 99 | 桃花台新交通 | トウカダイシンコウツウ | 桃花台新交通株式会社 | 桃花台新交通 | NaN | 0 | 2 | 178 |
115 | 247 | 99 | 四日市あすなろう鉄道 | ヨッカイチアスナロウテツドウ | 四日市あすなろう鉄道株式会社 | あすてつ | NaN | 0 | 0 | 187 |
135 | 208 | 99 | 三木鉄道 | ミキテツドウ | 三木鉄道株式会社 | 三木鉄道 | NaN | 0 | 2 | 206 |
147 | 220 | 99 | スカイレールサービス | スカイレールサービス | スカイレールサービス株式会社 | スカイレールサービス | NaN | 0 | 0 | 218 |
compamy_url
が欠損している行を確認。e_status
が2
(廃止)の事業者を除くと以下2つの事業者。
- 四日市あすなろう鉄道株式会社
- https://yar.co.jp/ だと思うが、単純な漏れかも。
- スカイレールサービス株式会社
- 探してもそれらしいものは発見できませんでした。存在しないのであれば NaN なのは妥当。
- wikipedia によると
2023年度末での運行終了
とのことなので、いずれe_status
が2
に更新されると思います。
鉄道コード rr_cd
df_company.groupby('rr_cd').size().reset_index()
rr_cd | 0 | |
---|---|---|
0 | 11 | 6 |
1 | 21 | 1 |
2 | 22 | 1 |
3 | 23 | 1 |
4 | 24 | 1 |
5 | 25 | 1 |
6 | 26 | 1 |
7 | 27 | 1 |
8 | 28 | 1 |
9 | 29 | 1 |
10 | 30 | 1 |
11 | 31 | 1 |
12 | 32 | 1 |
13 | 33 | 1 |
14 | 34 | 1 |
15 | 35 | 1 |
16 | 36 | 1 |
17 | 99 | 149 |
11
と 99
以外はすべて1行のみ。
11
も6行のみで、残りすべてが 99
ですが、仕様を見ても鉄道コードについての説明がほぼ無いため、何を表しているのかはよくわかりません。
とりあえず 11
を見てみます。
df_company[df_company.rr_cd == 11]
company_cd | rr_cd | company_name | company_name_k | company_name_h | company_name_r | company_url | company_type | e_status | e_sort | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 11 | JR北海道 | ジェイアールホッカイドウ | 北海道旅客鉄道株式会社 | JR北海道 | http://www.jrhokkaido.co.jp/ | 1 | 0 | 1 |
1 | 2 | 11 | JR東日本 | ジェイアールヒガシニホン | 東日本旅客鉄道株式会社 | JR東日本 | http://www.jreast.co.jp/ | 1 | 0 | 2 |
2 | 3 | 11 | JR東海 | ジェイアールトウカイ | 東海旅客鉄道株式会社 | JR東海 | http://jr-central.co.jp/ | 1 | 0 | 3 |
3 | 4 | 11 | JR西日本 | ジェイアールニシニホン | 西日本旅客鉄道株式会社 | JR西日本 | http://www.westjr.co.jp/ | 1 | 0 | 4 |
4 | 5 | 11 | JR四国 | ジェイアールシコク | 四国旅客鉄道株式会社 | JR四国 | http://www.jr-shikoku.co.jp/ | 1 | 0 | 5 |
5 | 6 | 11 | JR九州 | ジェイアールキュウシュウ | 九州旅客鉄道株式会社 | JR九州 | http://www.jrkyushu.co.jp/ | 1 | 0 | 6 |
11
は JR ということがわかりました。
99
は数が多いので後回しにして、11
と 99
以外を見てみます。
df_company[~df_company.rr_cd.isin([11, 99])]
company_cd | rr_cd | company_name | company_name_k | company_name_h | company_name_r | company_url | company_type | e_status | e_sort | |
---|---|---|---|---|---|---|---|---|---|---|
6 | 11 | 21 | 東武鉄道 | トウブテツドウ | 東武鉄道株式会社 | 東武 | http://www.tobu.co.jp/ | 2 | 0 | 11 |
7 | 12 | 22 | 西武鉄道 | セイブテツドウ | 西武鉄道株式会社 | 西武 | http://www.seibu-group.co.jp/railways/ | 2 | 0 | 12 |
8 | 13 | 23 | 京成電鉄 | ケイセイデンテツ | 京成電鉄株式会社 | 京成 | http://www.keisei.co.jp/ | 2 | 0 | 13 |
9 | 14 | 24 | 京王電鉄 | ケイオウデンテツ | 京王電鉄株式会社 | 京王 | http://www.keio.co.jp/ | 2 | 0 | 14 |
10 | 15 | 25 | 小田急電鉄 | オダキュウデンテツ | 小田急電鉄株式会社 | 小田急 | http://www.odakyu.jp/ | 2 | 0 | 15 |
11 | 16 | 26 | 東急電鉄 | トウキュウデンテツ | 東京急行電鉄株式会社 | 東急 | http://www.tokyu.co.jp/ | 2 | 0 | 16 |
12 | 17 | 27 | 京急電鉄 | ケイキュウデンテツ | 京浜急行電鉄株式会社 | 京急 | http://www.keikyu.co.jp/ | 2 | 0 | 17 |
13 | 18 | 28 | 東京メトロ | トウキョウメトロ | 東京地下鉄株式会社 | 東京メトロ | http://www.tokyometro.jp/ | 2 | 0 | 18 |
14 | 19 | 29 | 相模鉄道 | サガミテツドウ | 相模鉄道株式会社 | 相鉄 | http://www.sotetsu.co.jp/ | 2 | 0 | 19 |
15 | 20 | 30 | 名古屋鉄道 | ナゴヤテツドウ | 名古屋鉄道株式会社 | 名鉄 | http://www.meitetsu.co.jp/ | 2 | 0 | 20 |
16 | 21 | 31 | 近畿日本鉄道 | キンキニホンテツドウ | 近畿日本鉄道株式会社 | 近鉄 | http://www.kintetsu.co.jp/ | 2 | 0 | 21 |
17 | 22 | 32 | 南海電鉄 | ナンカイデンテツ | 南海電気鉄道株式会社 | 南海 | http://www.nankai.co.jp/ | 2 | 0 | 22 |
18 | 23 | 33 | 京阪電鉄 | ケイハンデンテツ | 京阪電気鉄道株式会社 | 京阪 | http://www.keihan.co.jp/ | 2 | 0 | 23 |
19 | 24 | 34 | 阪急電鉄 | ハンキュウデンテツ | 阪急電鉄株式会社 | 阪急 | http://rail.hankyu.co.jp/ | 2 | 0 | 24 |
20 | 25 | 35 | 阪神電鉄 | ハンシンデンテツ | 阪神電気鉄道株式会社 | 阪神 | http://rail.hanshin.co.jp/ | 2 | 0 | 25 |
21 | 26 | 36 | 西日本鉄道 | ニシニホンテツドウ | 西日本鉄道株式会社 | 西鉄 | http://www.nishitetsu.co.jp/ | 2 | 0 | 26 |
21
~36
は大手の私鉄が該当していそうです。
大手というのも曖昧な表現ですが、よく知られている比較的大きな会社が該当すると思われます。
残る99
は地方の鉄道会社など JR と大手私鉄以外のすべてでしょう。
事業者区分 company_type
仕様によると 0
:その他 1
:JR 2
:大手私鉄 3
:準大手私鉄 という定義。
df_company.groupby('company_type').size().reset_index()
company_type | 0 | |
---|---|---|
0 | 0 | 143 |
1 | 1 | 6 |
2 | 2 | 17 |
3 | 3 | 5 |
JRが 6
というのは rr_cd
の集計とも一致します。
大手私鉄は 17
なのですが、rr_cd
の集計では 16
でした。差異が気になるので調べてみます。
df_company[df_company.company_type == 2]
company_cd | rr_cd | company_name | company_name_k | company_name_h | company_name_r | company_url | company_type | e_status | e_sort | |
---|---|---|---|---|---|---|---|---|---|---|
6 | 11 | 21 | 東武鉄道 | トウブテツドウ | 東武鉄道株式会社 | 東武 | http://www.tobu.co.jp/ | 2 | 0 | 11 |
7 | 12 | 22 | 西武鉄道 | セイブテツドウ | 西武鉄道株式会社 | 西武 | http://www.seibu-group.co.jp/railways/ | 2 | 0 | 12 |
8 | 13 | 23 | 京成電鉄 | ケイセイデンテツ | 京成電鉄株式会社 | 京成 | http://www.keisei.co.jp/ | 2 | 0 | 13 |
9 | 14 | 24 | 京王電鉄 | ケイオウデンテツ | 京王電鉄株式会社 | 京王 | http://www.keio.co.jp/ | 2 | 0 | 14 |
10 | 15 | 25 | 小田急電鉄 | オダキュウデンテツ | 小田急電鉄株式会社 | 小田急 | http://www.odakyu.jp/ | 2 | 0 | 15 |
11 | 16 | 26 | 東急電鉄 | トウキュウデンテツ | 東京急行電鉄株式会社 | 東急 | http://www.tokyu.co.jp/ | 2 | 0 | 16 |
12 | 17 | 27 | 京急電鉄 | ケイキュウデンテツ | 京浜急行電鉄株式会社 | 京急 | http://www.keikyu.co.jp/ | 2 | 0 | 17 |
13 | 18 | 28 | 東京メトロ | トウキョウメトロ | 東京地下鉄株式会社 | 東京メトロ | http://www.tokyometro.jp/ | 2 | 0 | 18 |
14 | 19 | 29 | 相模鉄道 | サガミテツドウ | 相模鉄道株式会社 | 相鉄 | http://www.sotetsu.co.jp/ | 2 | 0 | 19 |
15 | 20 | 30 | 名古屋鉄道 | ナゴヤテツドウ | 名古屋鉄道株式会社 | 名鉄 | http://www.meitetsu.co.jp/ | 2 | 0 | 20 |
16 | 21 | 31 | 近畿日本鉄道 | キンキニホンテツドウ | 近畿日本鉄道株式会社 | 近鉄 | http://www.kintetsu.co.jp/ | 2 | 0 | 21 |
17 | 22 | 32 | 南海電鉄 | ナンカイデンテツ | 南海電気鉄道株式会社 | 南海 | http://www.nankai.co.jp/ | 2 | 0 | 22 |
18 | 23 | 33 | 京阪電鉄 | ケイハンデンテツ | 京阪電気鉄道株式会社 | 京阪 | http://www.keihan.co.jp/ | 2 | 0 | 23 |
19 | 24 | 34 | 阪急電鉄 | ハンキュウデンテツ | 阪急電鉄株式会社 | 阪急 | http://rail.hankyu.co.jp/ | 2 | 0 | 24 |
20 | 25 | 35 | 阪神電鉄 | ハンシンデンテツ | 阪神電気鉄道株式会社 | 阪神 | http://rail.hanshin.co.jp/ | 2 | 0 | 25 |
21 | 26 | 36 | 西日本鉄道 | ニシニホンテツドウ | 西日本鉄道株式会社 | 西鉄 | http://www.nishitetsu.co.jp/ | 2 | 0 | 26 |
126 | 249 | 99 | Osaka Metro | オオサカメトロ | 大阪市高速電気軌道株式会社 | 大阪メトロ | http://www.osakametro.co.jp | 2 | 0 | 197 |
先程の16件の事業者に加えて Osaka Metro
が大手私鉄と判定されているようです。
rr_cd
は定義がわからず、内容から 11
99
以外は大手私鉄と予想したのですが、これでさらに定義の謎が深まってしまいました。。
状態 e_status
仕様によると 0
:運用中 1
:運用前 2
:廃止 という定義。
df_company.groupby('e_status').size().reset_index()
e_status | 0 | |
---|---|---|
0 | 0 | 163 |
1 | 2 | 8 |
20230105
時点の version では 1
:運用前 という事業者は存在していないようです。
2
:廃止 の事業者を見てみます。
df_company[df_company.e_status == 2]
company_cd | rr_cd | company_name | company_name_k | company_name_h | company_name_r | company_url | company_type | e_status | e_sort | |
---|---|---|---|---|---|---|---|---|---|---|
24 | 103 | 99 | 北海道ちほく高原鉄道 | ホッカイドウチホクコウゲンテツドウ | 北海道ちほく高原鉄道株式会社 | 北海道ちほく高原鉄道 | NaN | 0 | 2 | 103 |
28 | 106 | 99 | 十和田観光電鉄 | トワダカンコウデンデツ | 十和田観光電鉄株式会社 | 十和田観光電鉄 | http://www.toutetsu.co.jp/ | 0 | 2 | 106 |
35 | 113 | 99 | くりはら田園鉄道 | クリハラデンエンテツドウ | くりはら田園鉄道株式会社 | 栗原電鉄 | NaN | 0 | 2 | 113 |
57 | 135 | 99 | 鹿島鉄道 | カシマテツドウ | 鹿島鉄道株式会社 | 鹿鉄 | http://www.kantetsu.co.jp/katetsu/ | 0 | 2 | 135 |
83 | 161 | 99 | 神岡鉄道 | カミオカテツドウ | 神岡鉄道株式会社 | 神鉄 | NaN | 0 | 2 | 161 |
105 | 180 | 99 | 桃花台新交通 | トウカダイシンコウツウ | 桃花台新交通株式会社 | 桃花台新交通 | NaN | 0 | 2 | 178 |
132 | 205 | 99 | 北神急行電鉄 | ホクシンキュウコウデンテツ | 北神急行電鉄株式会社 | 北神急行 | http://www.hokushinkyuko.co.jp/ | 0 | 2 | 203 |
135 | 208 | 99 | 三木鉄道 | ミキテツドウ | 三木鉄道株式会社 | 三木鉄道 | NaN | 0 | 2 | 206 |
どの事業者も私は知らないのですが、かつては多くの人を乗せて運行する路線を運営していたことでしょう。
路線データ
今回使用するのは 20230320 時点の version のデータ。
仕様はこちら。
https://ekidata.jp/doc/line.php
df_line = pd.read_csv('../files/ekidata/line20230320free.csv')
df_line.head()
line_cd | company_cd | line_name | line_name_k | line_name_h | line_color_c | line_color_t | line_type | lon | lat | zoom | e_status | e_sort | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1001 | 3 | 中央新幹線 | チュウオウシンカンセン | 中央新幹線 | NaN | NaN | NaN | 137.493896 | 35.411438 | 8 | 1 | 1001 |
1 | 1002 | 3 | 東海道新幹線 | トウカイドウシンカンセン | 東海道新幹線 | NaN | NaN | NaN | 137.721489 | 35.144122 | 7 | 0 | 1002 |
2 | 1003 | 4 | 山陽新幹線 | サンヨウシンカンセン | 山陽新幹線 | NaN | NaN | NaN | 133.147896 | 34.419338 | 7 | 0 | 1003 |
3 | 1004 | 2 | 東北新幹線 | トウホクシンカンセン | 東北新幹線 | NaN | NaN | NaN | 140.763192 | 38.274267 | 7 | 0 | 1004 |
4 | 1005 | 2 | 上越新幹線 | ジョウエツシンカンセン | 上越新幹線 | NaN | NaN | NaN | 139.121488 | 36.798565 | 8 | 0 | 1005 |
df_line.shape
(620, 13)
行数は 620。日本には多くの路線が走っていることがわかります。
欠損値の確認
df_line.isna().sum().reset_index()
index | 0 | |
---|---|---|
0 | line_cd | 0 |
1 | company_cd | 0 |
2 | line_name | 0 |
3 | line_name_k | 0 |
4 | line_name_h | 0 |
5 | line_color_c | 572 |
6 | line_color_t | 572 |
7 | line_type | 620 |
8 | lon | 0 |
9 | lat | 0 |
10 | zoom | 0 |
11 | e_status | 0 |
12 | e_sort | 0 |
line_color_c
line_color_t
line_type
は有料会員のみのデータになるらしく、今回使用する無料版データでは欠損しています。
他に欠損はありません。
事業者コード company_cd
先に確認した事業者データがマスターになります。
確認しやすくするために事業者データと結合し company_name
を付加、ついでに欠損値となっているカラムを削除します。
df_line2 = df_line.drop(['line_color_c', 'line_color_t', 'line_type'], axis=1) \
.merge(df_company[['company_cd', 'company_name']], how='inner')
df_line2.head()
line_cd | company_cd | line_name | line_name_k | line_name_h | lon | lat | zoom | e_status | e_sort | company_name | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1001 | 3 | 中央新幹線 | チュウオウシンカンセン | 中央新幹線 | 137.493896 | 35.411438 | 8 | 1 | 1001 | JR東海 |
1 | 1002 | 3 | 東海道新幹線 | トウカイドウシンカンセン | 東海道新幹線 | 137.721489 | 35.144122 | 7 | 0 | 1002 | JR東海 |
2 | 11402 | 3 | JR身延線 | ミノブセン | JR身延線 | 138.532397 | 35.392163 | 10 | 0 | 11402 | JR東海 |
3 | 11411 | 3 | JR中央本線(名古屋~塩尻) | チュウオウホンセン | JR中央本線(名古屋~塩尻) | 137.468492 | 35.662471 | 9 | 0 | 11411 | JR東海 |
4 | 11413 | 3 | JR飯田線(豊橋~天竜峡) | イイダセン | JR飯田線(豊橋~天竜峡) | 137.668949 | 35.125648 | 10 | 0 | 11413 | JR東海 |
df_line2.shape
(620, 11)
事業者ごとに所属する路線数を算出してみます。
df_line2.groupby(['company_cd', 'company_name']) \
.size() \
.nlargest(20) \
.reset_index(name='count')
company_cd | company_name | count | |
---|---|---|---|
0 | 2 | JR東日本 | 88 |
1 | 4 | JR西日本 | 67 |
2 | 6 | JR九州 | 30 |
3 | 21 | 近畿日本鉄道 | 25 |
4 | 20 | 名古屋鉄道 | 21 |
5 | 1 | JR北海道 | 20 |
6 | 3 | JR東海 | 17 |
7 | 11 | 東武鉄道 | 12 |
8 | 12 | 西武鉄道 | 12 |
9 | 16 | 東急電鉄 | 9 |
10 | 18 | 東京メトロ | 9 |
11 | 22 | 南海電鉄 | 9 |
12 | 24 | 阪急電鉄 | 9 |
13 | 249 | Osaka Metro | 9 |
14 | 5 | JR四国 | 8 |
15 | 23 | 京阪電鉄 | 8 |
16 | 222 | 広島電鉄 | 8 |
17 | 226 | 伊予鉄道 | 8 |
18 | 14 | 京王電鉄 | 7 |
19 | 13 | 京成電鉄 | 6 |
JRと大手私鉄が並びます。当然の結果。
状態 e_status
仕様によると事業者と同様に 0
:運用中 1
:運用前 2
:廃止 という定義。
df_line2.groupby('e_status').size().reset_index()
e_status | 0 | |
---|---|---|
0 | 0 | 600 |
1 | 1 | 1 |
2 | 2 | 19 |
1
:運用前 の路線があるので確認してみる。
df_line2[df_line2.e_status == 1]
line_cd | company_cd | line_name | line_name_k | line_name_h | lon | lat | zoom | e_status | e_sort | company_name | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1001 | 3 | 中央新幹線 | チュウオウシンカンセン | 中央新幹線 | 137.493896 | 35.411438 | 8 | 1 | 1001 | JR東海 |
中央新幹線
という聞いたことがありそうな名前の路線は、存在しているが運用前のステータス。
詳細が不明なので wikipedia を読む。
https://ja.wikipedia.org/wiki/%E4%B8%AD%E5%A4%AE%E6%96%B0%E5%B9%B9%E7%B7%9A
なんとリニアモーターカーの路線!開業は2027年予定。
緯度・経度 lat
lon
仕様によると、路線表示時の中央緯度と経度とのこと。路線表示 とはおそらく地図上に描画したときのことを指すと思われます。
folium
を使って先程の 中央新幹線
の緯度・経度をプロットしてみます。
import folium
location = df_line2[df_line2.line_cd == 1001][['lat', 'lon']].values # array
zoom = (df_line2[df_line2.line_cd == 1001]['zoom'].values)[0].item() # int
map = folium.Map(location=location,zoom_start=zoom)
folium.Marker(location=location).add_to(map)
map
なるほど?
これは路線の経路を同時にプロットしてみないとよくわからない。
駅データ
今回使用するのは 20230320 時点の version のデータ。
仕様はこちら。
https://ekidata.jp/doc/station.php
df_station = pd.read_csv('../files/ekidata/station20230320free.csv')
df_station.head()
station_cd | station_g_cd | station_name | station_name_k | station_name_r | line_cd | pref_cd | post | address | lon | lat | open_ymd | close_ymd | e_status | e_sort | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1110101 | 1110101 | 函館 | NaN | NaN | 11101 | 1 | 040-0063 | 北海道函館市若松町12-13 | 140.726413 | 41.773709 | 1902-12-10 | 0000-00-00 | 0 | 1110101 |
1 | 1110102 | 1110102 | 五稜郭 | NaN | NaN | 11101 | 1 | 041-0813 | 函館市亀田本町 | 140.733539 | 41.803557 | 0000-00-00 | 0000-00-00 | 0 | 1110102 |
2 | 1110103 | 1110103 | 桔梗 | NaN | NaN | 11101 | 1 | 041-0801 | 北海道函館市桔梗3丁目41-36 | 140.722952 | 41.846457 | 1902-12-10 | 0000-00-00 | 0 | 1110103 |
3 | 1110104 | 1110104 | 大中山 | NaN | NaN | 11101 | 1 | 041-1121 | 亀田郡七飯町大字大中山 | 140.713580 | 41.864641 | 0000-00-00 | 0000-00-00 | 0 | 1110104 |
4 | 1110105 | 1110105 | 七飯 | NaN | NaN | 11101 | 1 | 041-1111 | 亀田郡七飯町字本町 | 140.688556 | 41.886971 | 0000-00-00 | 0000-00-00 | 0 | 1110105 |
df_station.shape
(10896, 15)
駅の数は1万以上。新宿や東京などの巨大なターミナルから、あまり利用のない無人駅など、ピンキリでたくさんの駅があるのでしょう。
欠損値の確認
df_station.isna().sum().reset_index()
index | 0 | |
---|---|---|
0 | station_cd | 0 |
1 | station_g_cd | 0 |
2 | station_name | 0 |
3 | station_name_k | 10896 |
4 | station_name_r | 10896 |
5 | line_cd | 0 |
6 | pref_cd | 0 |
7 | post | 0 |
8 | address | 0 |
9 | lon | 0 |
10 | lat | 0 |
11 | open_ymd | 0 |
12 | close_ymd | 0 |
13 | e_status | 0 |
14 | e_sort | 0 |
station_name_k
station_name_r
は有料会員のみのデータのため、今回使用する無料版データでは欠損しています。
この後の確認をしやすいように欠損値のカラムを削除し、路線のデータと結合し、路線名を追加します。
df_station = df_station.drop(['station_name_k', 'station_name_r'], axis=1) \
.merge(df_line[['line_cd', 'line_name', 'company_name']], how='inner')
駅グループコード station_g_cd
仕様を見ても 整数6・7桁 という情報以外はなく、詳細はわかりません。
名前からして、複数の駅をある法則に基づいてグルーピングしていると思われます。
同じ station_g_cd
に所属する駅が多い順に並べてみます。
df_station.groupby('station_g_cd') \
.size() \
.nlargest(5) \
.reset_index(name='count')
station_g_cd | count | |
---|---|---|
0 | 1130208 | 14 |
1 | 1160214 | 13 |
2 | 1130101 | 11 |
3 | 1130105 | 11 |
4 | 1130205 | 11 |
最も所属する駅が多い station_g_cd
が 1130208
であるデータを確認します。
df_station[df_station.station_g_cd == 1130208]
station_cd | station_g_cd | station_name | line_cd | pref_cd | post | address | lon | lat | open_ymd | close_ymd | e_status | e_sort | line_name | company_name | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1293 | 1130208 | 1130208 | 新宿 | 11302 | 13 | 160-0022 | 東京都新宿区新宿三丁目38-1 | 139.700464 | 35.689729 | 1885-03-01 | 0000-00-00 | 0 | 1130208 | JR山手線 | JR東日本 |
1456 | 1131103 | 1130208 | 新宿 | 11311 | 13 | 160-0022 | 東京都新宿区新宿三丁目38-1 | 139.700464 | 35.689729 | 0000-00-00 | 0000-00-00 | 0 | 1131103 | JR中央本線(東京~塩尻) | JR東日本 |
1511 | 1131211 | 1130208 | 新宿 | 11312 | 13 | 160-0022 | 東京都新宿区新宿三丁目38-1 | 139.700464 | 35.689729 | 0000-00-00 | 0000-00-00 | 0 | 1131211 | JR中央線(快速) | JR東日本 |
1540 | 1131310 | 1130208 | 新宿 | 11313 | 13 | 160-0022 | 東京都新宿区新宿三丁目38-1 | 139.700464 | 35.689729 | 0000-00-00 | 0000-00-00 | 0 | 1131310 | JR中央・総武線 | JR東日本 |
1783 | 1132104 | 1130208 | 新宿 | 11321 | 13 | 160-0022 | 東京都新宿区新宿三丁目38-1 | 139.700464 | 35.689729 | 0000-00-00 | 0000-00-00 | 0 | 1132104 | JR埼京線 | JR東日本 |
1950 | 1132806 | 1130208 | 新宿 | 11328 | 13 | 160-0022 | 東京都新宿区新宿三丁目38-1 | 139.700464 | 35.689729 | 0000-00-00 | 0000-00-00 | 0 | 1132806 | JR成田エクスプレス | JR東日本 |
2032 | 1133304 | 1130208 | 新宿 | 11333 | 13 | 160-0022 | 東京都新宿区新宿三丁目38-1 | 139.700464 | 35.689729 | 0000-00-00 | 0000-00-00 | 0 | 1133304 | JR湘南新宿ライン | JR東日本 |
5485 | 2400101 | 1130208 | 新宿 | 24001 | 13 | 160-0023 | 東京都新宿区西新宿一丁目1-4 | 139.699187 | 35.690163 | 0000-00-00 | 0000-00-00 | 0 | 2400101 | 京王線 | 京王電鉄 |
5557 | 2400701 | 1130208 | 新線新宿 | 24007 | 13 | 160-0023 | 東京都新宿区西新宿一丁目18 | 139.698812 | 35.688690 | 0000-00-00 | 0000-00-00 | 0 | 2400701 | 京王新線 | 京王電鉄 |
5561 | 2500101 | 1130208 | 新宿 | 25001 | 13 | 160-0023 | 東京都新宿区西新宿一丁目1-3 | 139.699574 | 35.691435 | 0000-00-00 | 0000-00-00 | 0 | 2500101 | 小田急線 | 小田急電鉄 |
5863 | 2800218 | 1130208 | 新宿 | 28002 | 13 | 160-0023 | 東京都新宿区西新宿一丁目西口地下街1号 | 139.700711 | 35.692350 | 0000-00-00 | 0000-00-00 | 0 | 2800218 | 東京メトロ丸ノ内線 | 東京メトロ |
6038 | 2900303 | 1130208 | 新宿 | 29003 | 13 | 160-0022 | 東京都新宿区新宿三丁目38-1 | 139.700464 | 35.689729 | 0000-00-00 | 0000-00-00 | 0 | 2900301 | 相鉄・JR直通線 | 相模鉄道 |
7649 | 9930128 | 1130208 | 新宿 | 99301 | 13 | 151-0053 | 東京都渋谷区代々木二丁目1-1 | 139.698812 | 35.688690 | 0000-00-00 | 0000-00-00 | 0 | 9930128 | 都営大江戸線 | 東京都交通局 |
7707 | 9930401 | 1130208 | 新宿 | 99304 | 13 | 160-0023 | 東京都新宿区西新宿一丁目18 | 139.698812 | 35.688690 | 0000-00-00 | 0000-00-00 | 0 | 9930401 | 都営新宿線 | 東京都交通局 |
station_g_cd
が 1130208
であるデータはあらゆる路線の新宿駅をグルーピングしたものでした。
おそらくは1つの駅、あるいは駅同士がくっついているとか距離が近いとかで路線間の乗り換え可能な駅の集合体のように見えます。
状態 e_status
仕様によると事業者と同様に 0
:運用中 1
:運用前 2
:廃止 という定義。
df_station.groupby('e_status').size().reset_index()
e_status | 0 | |
---|---|---|
0 | 0 | 10471 |
1 | 2 | 425 |
運用前のデータは存在しません。
すでに廃止された駅が 425 もあります。
接続駅データ
今回使用するのは 20230320 時点の version のデータ。
仕様はこちら。
https://ekidata.jp/doc/join.php
接続駅というのは、定義を見る限り、路線ごとの隣り合った駅のことを指すようです。
df_join = pd.read_csv('../files/ekidata/join20230320.csv')
df_join.head()
line_cd | station_cd1 | station_cd2 | |
---|---|---|---|
0 | 1002 | 100201 | 100202 |
1 | 1002 | 100202 | 100203 |
2 | 1002 | 100203 | 100204 |
3 | 1002 | 100204 | 100205 |
4 | 1002 | 100205 | 100206 |
欠損値の確認
df_join.isna().sum().reset_index()
index | 0 | |
---|---|---|
0 | line_cd | 0 |
1 | station_cd1 | 0 |
2 | station_cd2 | 0 |
このデータの特性上、さすがに欠損値はありません。
df_join[df_join.line_cd == 1002]
line_cd | station_cd1 | station_cd2 | |
---|---|---|---|
0 | 1002 | 100201 | 100202 |
1 | 1002 | 100202 | 100203 |
2 | 1002 | 100203 | 100204 |
3 | 1002 | 100204 | 100205 |
4 | 1002 | 100205 | 100206 |
5 | 1002 | 100206 | 100207 |
6 | 1002 | 100207 | 100208 |
7 | 1002 | 100208 | 100209 |
8 | 1002 | 100209 | 100210 |
9 | 1002 | 100210 | 100211 |
10 | 1002 | 100211 | 100212 |
11 | 1002 | 100212 | 100213 |
12 | 1002 | 100213 | 100214 |
13 | 1002 | 100214 | 100215 |
14 | 1002 | 100215 | 100216 |
15 | 1002 | 100216 | 100217 |
試しに東海道新幹線(line_cd
= 1002
)を確認してみると上記の通り。
駅のデータと結合し、駅ごとの lat
lon
を使って路線図を描画することもできるかもしれません。