迷走ブログ

ファウスト的衝動を抱き、迷走している、凡人による気まぐれブログです。

【python】ハイヤー・タクシー事業者数の推移を可視化してみた

はじめに

昨今、私のiPhone等において、なぜかUber taxiの広告をやたらとチョイスされるようになりました。もしかしたら、満員電車という地獄が本格的に再開したことに心が追いついていないため、無意識にそのような乗り物の広告を見てしまっているのかも知れません。

そこで、今回はタクシー事業者数について気になったので、その推移について、調べてみました。

結論

総事業者数は、年々減っている。また内訳としては、個人事業主数が特に著しく減っている。しかしながら、法人事業者数は、緩やかに増加している模様。令和元年までのデータしかないため、コロナ関連の影響はよくからない

f:id:yktmmrmtoosa03:20211007165655j:plain

使用したデータ

国土交通省が出している「ハイヤー・タクシー事業者数の経年データ」という集計を使用しました。

ハイヤー・タクシー事業者数 - DATA GO JP

コード

データの特徴確認

df = pd.read_excel('taxi.xlsx')
df

データについては、ダウンロード時に任意のファイル名で保存し、そのファイルを読み込みました。

はじめに、データの特徴的な全体の構成を見てみました。と言っても、データの数が少ないので、これくらいであれば個別に見た方が早そうだったため、一度全てを見てみました。
色々と困った点はありましたが、特に年号と年数が別々のセル内に分けて記載されていることでした。愚痴を述べても仕方がないので、以下の流れを取りました。

  • 年号部分の穴埋め
  • 年号部分と年数を結合させる
  • カラム名の記載

年号部分の穴埋め

year_df = df['ハイヤー・タクシー事業者数'].fillna(method='ffill')
year_df = pd.Series(year_df, name = '年度')
year_df 

f:id:yktmmrmtoosa03:20211007170746j:plain
昭和のデータ集計年の始まりと平成の年号開始部分には各年号の記載がされているものの、それ以降の年度において年号は載っていませんでした。従って、fillna(method='ffill')を用いることで、前の要素である「昭和」「平成」という単語を空白部分に対して穴埋めしています。
その上で、列名を「年度」としました。

抽出した列と元データの結合

df = pd.concat([year_df,df],axis=1)
df.drop(['ハイヤー・タクシー事業者数'],axis=1,inplace=True)
df

f:id:yktmmrmtoosa03:20211007171347j:plain
上述で取り出していた年数の部分は、concat()を用いて元のデータに結合させました。
その後、drop()を用いて、結合前のデータを削除しています。

カラム名の取得

df.drop(0,axis=0,inplace=True)
df.head()

f:id:yktmmrmtoosa03:20211007172148j:plain
ここでは、0行目に位置していた行の要素を列名として取得して、0行目を無くしました。
ただし、数字部分の列名がないため、再度列名を設定しました。
(ここら辺は別の方法があるのかも知れませんが、よくわかりませんでした)

df.columns = ['年度','数字','総事業者数','法人事業者数','個人タクシー']
df.head()

f:id:yktmmrmtoosa03:20211007172503j:plain
無事、数字部分の記載が追加されたため、列名の抽出がしやすくなりました。次に「年度」と「数字」部分を結合していきます。

年号と年数部分の結合

a = df['年度'].str.cat(df['数字'].astype(str))
a = pd.Series(a,name='年')
df = pd.concat([a,df],axis=1)
df.drop(['年度','数字'],axis=1,inplace=True)
df()

f:id:yktmmrmtoosa03:20211007173038j:plain
データが整い……あれ、個人タクシーの部分に「ー」があることに気がつきました。
どうやら数字以外の部分があるようです。
ということで、そちらに対処しました。

データのない部分をどのように補うか

b = df['個人タクシー'].replace('-',0).astype(int)
b = pd.Series(b,name='個人')
df = pd.concat([df,b],axis=1)
df.drop(['個人タクシー'],axis=1,inplace=True)
df

f:id:yktmmrmtoosa03:20211007173804j:plain
さて、どのように「ー」部分を穴埋めしていこうか迷いましたが、今回は「0」に置き換えました。

理由としては、正確な数字がわからなかったためです。
また、昭和30年の次の集計が昭和40年となっており、10年もの月日が空いていることから、そちらの数字をただ単に持ってくるのも昭和30年ごろの実情と合っていないであろうと考えたからです(根拠はありませんが、python の練習なので気にしない)。

なお下記の情報によると、昭和35年頃から自動車が普及し始めたとの記載があります。そのため、昭和30年において、タクシーの個人事業主はほぼいなかったのではないでしょうか。
第1節 自家用乗用車の急速な普及

可視化

fig = px.line(df,x='年',y=['総事業者数','法人事業者数','個人'],title='ハイヤー・タクシー事業者数の推移')
fig.show()

f:id:yktmmrmtoosa03:20211007165655j:plain
ちなみに、ピーク時の総事業者数は、平成18年の57740であったようです。
それ以降は、徐々に総事業者数は減っているようです。
f:id:yktmmrmtoosa03:20211007174905j:plain

おわりに

次出勤する時、Uber taxi利用してみようかな。。。