Python:国籍別に在留外国人数の多い市町村を抽出する

国籍別・市町村別の在留外国人数を調べてみたいと思います。このサイトによると、平成30年末の在留外国人数は273万1093人、国籍別では、中国76万4720人、韓国44万9634人、ベトナム33万835人、フィリピン27万1289人となっています。アジア系が圧倒的に多いようですが、インドが少ないことが気になると言えば気になります。というのも、家の近所がインドカレー屋だらけなので、インド人がもっといるのかと思ったからです。

スポンサーリンク

データの下準備

先ず、このサイトから必要なデータをダウンロードします。

import pandas as pd

df = pd.read_excel('foreignerpopu.xlsx',encoding='cp932',skiprows=3)
#df.drop(['団体コード'],axis=1,inplace=True)
df.head(2)
市 区 町 村 Unnamed: 1 Unnamed: 2 総数 中国 韓国 ベトナム フィリピン ブラジル ネパール 台湾 米国 その他
0 北海道 札幌市 NaN 13053.0 4380.0 2478.0 967.0 441.0 80.0 255.0 497.0 634.0 3321.0
1 NaN NaN 中央区 2581.0 755.0 559.0 173.0 76.0 15.0 51.0 141.0 170.0 641.0

Unnamed: 2が邪魔臭いと思った場合、以下のようにすればいいでしょう。

df.dropna(subset=['Unnamed: 1']).head(2)
市 区 町 村 Unnamed: 1 Unnamed: 2 総数 中国 韓国 ベトナム フィリピン ブラジル ネパール 台湾 米国 その他
0 北海道 札幌市 NaN 13053.0 4380.0 2478.0 967.0 441.0 80.0 255.0 497.0 634.0 3321.0
11 NaN 函館市 NaN 943.0 245.0 150.0 203.0 52.0 2.0 45.0 28.0 31.0 187.0
スポンサーリンク

外国人の多い市町村を人種別に抽出する

先ずは中国人の多い市町村を抽出します。予想では中華街のある横浜市と神戸市のような気がします。

df.sort_values(by='中国',ascending=False).head(10)
市 区 町 村 Unnamed: 1 Unnamed: 2 総数 中国 韓国 ベトナム フィリピン ブラジル ネパール 台湾 米国 その他
813 東京都 特別区 NaN 468279.0 179882.0 80573.0 30000.0 24981.0 2429.0 24471.0 16972.0 15962.0 93009.0
876 神奈川県 横浜市 NaN 97315.0 39285.0 13187.0 6413.0 8292.0 2647.0 3406.0 2885.0 2651.0 18549.0
1457 大阪府 大阪市 NaN 136925.0 33758.0 65090.0 12304.0 3808.0 1000.0 1774.0 5052.0 1591.0 12548.0
1279 愛知県 名古屋市 NaN 83225.0 23429.0 15843.0 8534.0 9378.0 4511.0 5992.0 1183.0 1789.0 12566.0
679 NaN 川口市 NaN 34905.0 20448.0 2815.0 3076.0 2499.0 278.0 848.0 481.0 178.0 4282.0
836 NaN NaN 江戸川区 35648.0 15225.0 4508.0 2473.0 2826.0 187.0 1149.0 765.0 381.0 8134.0
895 NaN 川崎市 NaN 41905.0 15087.0 7761.0 3112.0 4345.0 830.0 1181.0 1121.0 983.0 7485.0
821 NaN NaN 江東区 29629.0 14590.0 4651.0 1076.0 1560.0 97.0 593.0 712.0 483.0 5867.0
817 NaN NaN 新宿区 44652.0 14115.0 10530.0 3857.0 851.0 147.0 3811.0 1932.0 1105.0 8304.0
832 NaN NaN 板橋区 26009.0 13684.0 3190.0 1547.0 1502.0 116.0 1128.0 957.0 333.0 3552.0

横浜市は当たっていましたが、神戸市は誤りだったようです。意外だったのは、埼玉県川口市が人口の割に中国人が多いことです。調べてみると、西川口がチャイナタウン化しているようです。次に韓国人の多い市町村を抽出してみたいと思います。

city=df[(df['総数'] < 450000 )]
city.sort_values(by='韓国',ascending=False).head(10)
市 区 町 村 Unnamed: 1 Unnamed: 2 総数 中国 韓国 ベトナム フィリピン ブラジル ネパール 台湾 米国 その他
1457 大阪府 大阪市 NaN 136925.0 33758.0 65090.0 12304.0 3808.0 1000.0 1774.0 5052.0 1591.0 12548.0
1469 NaN NaN 生野区 28067.0 2427.0 21512.0 1945.0 126.0 23.0 131.0 367.0 82.0 1454.0
1414 京都府 京都市 NaN 45752.0 11670.0 19720.0 2021.0 1142.0 155.0 557.0 1550.0 1269.0 7668.0
1536 兵庫県 神戸市 NaN 48612.0 13516.0 16336.0 6815.0 1260.0 419.0 848.0 1368.0 1228.0 6822.0
1279 愛知県 名古屋市 NaN 83225.0 23429.0 15843.0 8534.0 9378.0 4511.0 5992.0 1183.0 1789.0 12566.0
876 神奈川県 横浜市 NaN 97315.0 39285.0 13187.0 6413.0 8292.0 2647.0 3406.0 2885.0 2651.0 18549.0
817 NaN NaN 新宿区 44652.0 14115.0 10530.0 3857.0 851.0 147.0 3811.0 1932.0 1105.0 8304.0
1515 NaN 東大阪市 NaN 17873.0 3821.0 9894.0 1705.0 509.0 153.0 114.0 207.0 127.0 1343.0
895 NaN 川崎市 NaN 41905.0 15087.0 7761.0 3112.0 4345.0 830.0 1181.0 1121.0 983.0 7485.0
834 NaN NaN 足立区 31539.0 13545.0 7578.0 1532.0 3708.0 170.0 466.0 633.0 285.0 3622.0

大阪、京都、神戸の、いわゆる三都に多いことが見て取れます。大阪市生野区が対日本人人口比で圧倒的に韓国人比が多いようです。今度はベトナム人が多く住む市町村を抽出してみます。

city=df[(df['総数'] < 450000 )]
city.sort_values(by='ベトナム',ascending=False).head(10)
市 区 町 村 Unnamed: 1 Unnamed: 2 総数 中国 韓国 ベトナム フィリピン ブラジル ネパール 台湾 米国 その他
1457 大阪府 大阪市 NaN 136925.0 33758.0 65090.0 12304.0 3808.0 1000.0 1774.0 5052.0 1591.0 12548.0
1279 愛知県 名古屋市 NaN 83225.0 23429.0 15843.0 8534.0 9378.0 4511.0 5992.0 1183.0 1789.0 12566.0
1536 兵庫県 神戸市 NaN 48612.0 13516.0 16336.0 6815.0 1260.0 419.0 848.0 1368.0 1228.0 6822.0
876 神奈川県 横浜市 NaN 97315.0 39285.0 13187.0 6413.0 8292.0 2647.0 3406.0 2885.0 2651.0 18549.0
1952 NaN 福岡市 NaN 36729.0 12149.0 6417.0 5621.0 1204.0 94.0 4168.0 743.0 868.0 5465.0
817 NaN NaN 新宿区 44652.0 14115.0 10530.0 3857.0 851.0 147.0 3811.0 1932.0 1105.0 8304.0
829 NaN NaN 豊島区 30672.0 12780.0 2593.0 3815.0 513.0 84.0 3653.0 1313.0 457.0 5464.0
756 NaN 船橋市 NaN 18065.0 7372.0 1586.0 3140.0 1247.0 403.0 1268.0 335.0 236.0 2478.0
895 NaN 川崎市 NaN 41905.0 15087.0 7761.0 3112.0 4345.0 830.0 1181.0 1121.0 983.0 7485.0
679 NaN 川口市 NaN 34905.0 20448.0 2815.0 3076.0 2499.0 278.0 848.0 481.0 178.0 4282.0

船橋市の人口は川崎市の半分以下、さらに、外国人人口自体が川崎市の半分以下にもかかわらず、ベトナム人とネパール人人口が川崎市よりも多いというのが面白いと言えば面白いと言えるのではないでしょうか。そういった意味では、人口が船橋市以下の川口市にも同じことが言えます。

スポンサーリンク

北海道勇払郡占冠村の謎

占冠村の外国人率が異常に高かったので、どの国籍が多いのか抽出してみることにします。

df[df['Unnamed: 2']=='占冠村']
市 区 町 村 Unnamed: 1 Unnamed: 2 総数 中国 韓国 ベトナム フィリピン ブラジル ネパール 台湾 米国 その他
135 NaN NaN 占冠村 295.0 24.0 36.0 0.0 14.0 1.0 28.0 94.0 4.0 94.0

このデータ(2018年6月)では295人となっているのですが、前回のデータ(2018年1月)では329人となっています。このサイトの最新データでは、占冠(しむかっぷ)村は人口1,241人(-186)、※うち外国人数131人(-186)※( )内は前月末との差となっています。現在の外国人比率は1割まで下がっていることになります。年度末で一気に外国人が転出しているので、農業や酪農の実習生なのかと思ったのですが、このサイトによると、トマム地区の星野リゾート施設で働く外国人労働者達で、彼等は観光期のみ占冠村に滞在して就労しているようです。完全なmigrant worker (季節労働者、出稼ぎ労働者)ということのようです。こういったリゾート地も、いまや、外国人労働者なしには成り立たなくなっているようで、このことは、日本の未来を暗示しているのではないでしょうか。

1947年〜2018年の出生数と婚姻・離婚件数の推移をプロット
1950年〜2017年の日本人女性の年代別出産数推移をグラフ化
1908年〜2017年の平均婚姻年齢(初婚・全婚姻)をグラフ化
若年・中年・高年・超高年層死亡数推移(1950年〜2017年)
日本の右肩下がりの出生数と右肩上がりの死亡者数をグラフ化する
日本の交通事故死亡者数の推移を性別・年齢別に棒グラフ化する
過去38年間の10カ国の国民一人当たりGDP推移をグラフ化する
Python:在留外国人の詳細を円グラフで表示する
Python:在留外国人比率の高い市町村を条件別に抽出する
Python:年齢別交通事故死亡数を死亡割合に変換する
Python:日本人の年代別・性別死亡数を視覚化して考察する
Python:日本人の年齢別死亡者数の推移をプロットして考察する
Python:1950年〜2017年の年齢別自殺数推移を棒グラフ化する
Python:結婚適齢期女性が最も余っている都市を探し出す

スポンサーリンク
スポンサーリンク