世界はどのくらいインターネットにアクセスできるのか

インターネットが無くてはならない存在となった現代社会において、世界中でインターネットにアクセスできる状況はどのようになっているのか。

国、地域、人口、使用率などのデータに基づいて分析を行う。

コンテンツ

  1. インターネットの使用率が最も高い上位 5 か国 (人口シェア別) はどこか
  2. 2019年にこれらの国でインターネットにアクセスできた人は何人か
  3. 次の各地域でインターネットの使用量が最も多い上位 5 か国はどこか:
    「アフリカ東部および南部」、「アフリカ西部および中部」、「ラテンアメリカおよびカリブ海」、「東アジアおよび太平洋」、「南部アジア」、「北米」、「欧州連合」
  4. これら 7 つの地域のインターネット使用状況を長期の視覚化
  5. 2020年のインターネット ユーザーが最も多い 5 か国はどこか
  6. 2019年のインターネット使用量 (人口シェア) とブロードバンド加入数との相関関係は何か
  7. 調査結果の要約

データの準備

ライブラリのインポート

from zipfile import ZipFile
from io import BytesIO
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import plotly.express as px
import japanize_matplotlib
sns.set(font='IPAexGothic')

データファイルの名前を取得

zf = ZipFile('data.zip')
zf.namelist()
['data/', 'data/internet.csv', 'data/broadband.csv', 'data/people.csv']

データフレームとして読み込む

internet = pd.read_csv(BytesIO(zf.read(zf.namelist()[1])))
broadband = pd.read_csv(BytesIO(zf.read(zf.namelist()[2])))
people = pd.read_csv(BytesIO(zf.read(zf.namelist()[3])))

1. インターネットの使用率が最も高い上位 5 か国 (人口割合による)

internet データフレームから2019年のデータを抽出
Entityでグループ化し、Internet_Usage の合計を算出
上位5カ国を表示

top_five = internet.query('Year == 2019')
top_five = top_five.groupby('Entity')['Internet_Usage'].sum()
top_five = top_five.sort_values(ascending=False).head(5)
top_five
Entity
Bahrain                 99.701504
Qatar                   99.652804
Kuwait                  99.542676
United Arab Emirates    99.149998
Denmark                 98.046435
Name: Internet_Usage, dtype: float64

2019 年にインターネットの使用率が最も多かった上位 5 か国 (人口シェア別) :

  1. バーレーン
  2. カタール
  3. クウェート
  4. アラブ首長国連邦
  5. デンマーク

2. 上位5カ国で2019 年にインターネットにアクセスできたのは何人か

people データフレームから前述5カ国のみを抽出
2019年でデータをソート
Year, Entity, Users のみにデータを限定して表示

countries_users_2019 = people[people['Entity'].isin(top_five.index)]
countries_users_2019 = countries_users_2019 [(countries_users_2019 ['Year'] == 2019)].sort_values(ascending=False, by ='Users' )
countries_users_2019 = countries_users_2019[['Year', 'Entity', 'Users' ]]
countries_users_2019
Year Entity Users
5986 2019 United Arab Emirates 9133361
1565 2019 Denmark 5682653
3091 2019 Kuwait 4420795
4728 2019 Qatar 2797495
477 2019 Bahrain 1489735

2019 年にインターネットにアクセスできた人数:

アラブ首長国連邦 9,133,361人
デンマーク 5,682,653人
クウェート 4,420,795人
カタール 2,797,495人
バーレーン 1,489,735人

3. 下記地域でインターネット使用量が最も多い上位 5 か国

  • 「アフリカ東部および南部」
  • 「アフリカ西部および中部」
  • 「ラテンアメリカおよびカリブ海」
  • 「東アジアおよび太平洋」
  • 「南部アジア」
  • 「北米」
  • 「欧州連合」

internetデータフレームからNan値を削除
World値以外で新しいデータフレームを作成
df1として外部データを取得   カラム名を変更
2つのデータをマージして新たなデータフレームを作成

new = internet.dropna(axis=0, subset=('Code', ))
new = new.query ('Entity != "World"')

df1 = pd.read_html('https://statisticstimes.com/geography/countries-by-continents.php', thousands=None, decimal=',')
may = df1[2]
may.rename (columns= {'ISO-alpha3 Code':'Code'}, inplace = True )

countries = new.merge(may, how = "left")

アフリカ東部および南部

aes = 'Eastern Africa', 'Southern Africa'
aes1 = countries[countries['Region 1'].isin(aes)]
aes1 = aes1.query('Year == 2019')

top_five_aes = aes1.groupby('Entity')['Internet_Usage'].sum().sort_values(ascending=False).head(5)
top_five_aes
Entity
Mauritius    63.999898
Kenya        22.565119
Name: Internet_Usage, dtype: float64

2019 年にアフリカ東部および南部でインターネットの使用量が最も多かった国は2カ国のみ

  1. モーリシャス
  2. ケニア

2017 年の上位 5 か国は以下

  1. セイシェル
  2. 南アフリカ
  3. モーリシャス
  4. ジブチ
  5. ボツワナ

アフリカ西部および中部

awc = 'Western Africa', 'Central Africa'
awc1 = countries[countries['Region 1'].isin(awc)]
awc1 = awc1.query('Year == 2017')
top_five_awc = awc1.groupby('Entity')['Internet_Usage'].sum().sort_values(ascending=False).head(5)
top_five_awc
Entity
Cape Verde       57.162146
Cote d'Ivoire    43.839921
Ghana            37.884153
Senegal          29.643124
Mauritania       20.800964
Name: Internet_Usage, dtype: float64

アフリカ西部および中部でインターネットの使用量が最も多かった2019年のデータはなし、2018年は1カ国のみ

  1. ギニア

2017 年にアフリカ西部および中部でインターネットの使用量が最も多かった上位 5 か国

  1. カーボベルデ
  2. コートジボワール
  3. ガーナ
  4. セネガル
  5. モーリタニア

ラテンアメリカおよびカリブ海

lac = ["Latin America and the Caribbean"]
lac1 = countries[countries['Region 2'].isin(lac)]
lac1 = lac1.query('Year == 2019')
top_five_lac = lac1.groupby('Entity')['Internet_Usage'].sum().sort_values(ascending=False).head(5)
top_five_lac
Entity
Costa Rica     81.202596
Uruguay        76.949552
Puerto Rico    70.874321
Mexico         70.069910
Paraguay       68.517628
Name: Internet_Usage, dtype: float64

2019 年にラテンアメリカおよびカリブ海地域でインターネットの使用量が最も多かった上位 5 か国

  1. コスタリカ
  2. ウルグアイ
  3. プエルトリコ
  4. メキシコ
  5. パラグアイ

東アジア および 太平洋

eap1 = countries[(countries['Region 1'] == 'Eastern Asia') | (countries['Continent'] == 'Oceania')]
eap1 = eap1.query('Year == 2018')
top_five_eap = eap1.groupby('Entity')['Internet_Usage'].sum().sort_values(ascending=False).head(5)
top_five_eap
Entity
South Korea    96.022860
Japan          91.281608
Hong Kong      90.507395
Macao          83.794090
Mongolia       47.130002
Name: Internet_Usage, dtype: float64

2018 年に東アジア太平洋地域でインターネットの使用量が最も多かった上位 5 か国

  1. 韓国
  2. 日本
  3. 香港
  4. マカオ
  5. モンゴル

南アジア

sa = ["Southern Asia"]
sa1 = countries[countries['Region 1'].isin(sa)]
sa1 = sa1.query('Year == 2017')
top_five_sa = sa1.groupby('Entity')['Internet_Usage'].sum().sort_values(ascending=False).head(5)
top_five_sa
Entity
Iran         64.043974
Maldives     63.185666
Sri Lanka    34.113348
India        32.000000
Nepal        21.403510
Name: Internet_Usage, dtype: float64

2017 年に南アジアでインターネットの使用量が最も多かった上位 5 か国

  1. イラン
  2. モルディブ
  3. スリランカ
  4. インド
  5. ネパール

北米

na = ["North America"]
na1 = countries[countries['Continent'].isin(na)]
na1 = na1.query('Year == 2019')
top_five_na = na1.groupby('Entity')['Internet_Usage'].sum().sort_values(ascending=False).head(5)
top_five_na
Entity
Costa Rica     81.202596
Puerto Rico    70.874321
Mexico         70.069910
Panama         63.628415
Cuba           61.836300
Name: Internet_Usage, dtype: float64

2019 年に北米でインターネットの使用量が最も多かった上位 5 か国

  1. コスタリカ
  2. プエルトリコ
  3. メキシコ
  4. パナマ
  5. キューバ

EU

eu =  'Austria', 'Belgium', 'Bulgaria', 'Croatia', 'Cyprus', 'Czechia', 'Denmark', 'Estonia', 'Finland', 'France', 'Germany', 'Greece', 'Hungary', 'Ireland', 'Italy', 'Latvia', 'Lithuania', 'Luxembourg', 'Malta', 'Netherlands', 'Poland', 'Portugal', 'Romania', 'Slovakia', 'Slovenia', 'Spain', 'Sweden'
eu1 = internet[internet['Entity'].isin(eu)]
eu1 = eu1.query('Year == 2019')
top_five_eu = eu1.groupby('Entity')['Internet_Usage'].sum().sort_values(ascending=False).head(5)
top_five_eu
Entity
Denmark        98.046435
Sweden         94.493443
Netherlands    93.288591
Spain          90.718665
Belgium        90.370513
Name: Internet_Usage, dtype: float64

2019 年に EU でインターネットの使用量が最も多かった上位 5 か国

  1. デンマーク
  2. スウェーデン
  3. オランダ
  4. スペイン
  5. ベルギー

4. 七つの地域のインターネット使用量の視覚化

seven = internet
region3 = 'Africa Eastern and Southern', 'Africa Western and Central', 'Latin America & Caribbean', 'East Asia & Pacific', 'South Asia', 'North America', 'European Union'
seven_regions = internet[internet['Entity'].isin(region3)]
seven_regions.Entity.unique()
array(['Africa Eastern and Southern', 'Africa Western and Central',
       'East Asia & Pacific', 'European Union',
       'Latin America & Caribbean', 'North America', 'South Asia'],
      dtype=object)
plt.figure(figsize=(14,7))
sns.lineplot(data=seven_regions,
             x = 'Year',
             y = 'Internet_Usage',
             hue = 'Entity',
             palette = 'inferno')

plt.title('地域ごとのインターネット使用量',size=20)
plt.xlabel('年', labelpad=10, size=14)
plt.ylabel("使\n用\n量", labelpad=18, size=14, rotation=0, va='center')
plt.show()
seven_regions = seven_regions.query ('Year < 2018')
fig = px.bar(seven_regions,
             x="Entity",
             y="Internet_Usage",
             color="Entity",
             color_discrete_sequence=px.colors.sequential.Inferno,
             animation_frame="Year",
             animation_group="Entity",
             title = """
             7 つの地域における 1990 年から 2017 年までの使用量の推移

             """)

fig.update_layout(
    margin=dict(l=0, r=0, t=30, b=0))

fig.show()

アフリカ全体とアジア太平洋全体の 5 つの地域の視覚化

five = internet
replacers = {'South Asia':'Asia & Pacific','East Asia & Pacific':'Asia & Pacific', 'Africa Eastern and Southern':'Africa','Africa Western and Central':'Africa'} 
five['Entity'] = five['Entity'].replace(replacers)
region = 'Africa', 'Latin America & Caribbean', 'Asia & Pacific', 'North America', 'European Union'
five_regions = five[five['Entity'].isin(region)]
plt.figure(figsize=(14,7))
sns.lineplot(data=five_regions,
             x = 'Year',
             y = 'Internet_Usage',
             hue = 'Entity',
             palette = 'inferno')

plt.title('5 つの地域におけるインターネット使用量の推移',size=20)
plt.xlabel('年', labelpad=10, size=14)
plt.ylabel("使\n用\n量", labelpad=18, size=14, rotation=0, va='center')
plt.show()
five_regions = five_regions.query ('Year < 2018')
fig = px.bar(five_regions,
             x = "Entity", 
             y = "Internet_Usage",
             color = "Entity",
             color_discrete_sequence = px.colors.sequential.Inferno,
             animation_frame = "Year",
             animation_group = "Entity",
             title = "5 つの地域における1990 年から 2017 年までの インターネット使用量の推移")

fig.update_layout(
    margin=dict(l=0, r=0, t=30, b=0))

fig.show()

5. インターネットユーザーが最も多い5か国はどこか

other = 'World', 'Asia', 'Upper-middle-income countries',  'High-income countries', 'Lower-middle-income countries', 'Europe', 'North America' , 'South America', 'Africa'
no_other = people[~people['Entity'].isin(other)]
no_other = no_other.query ('Year == 2020')
top_five_users = no_other.groupby('Entity')['Users'].sum().sort_values(ascending=False).head(5)
top_five_users
Entity
China            1003218650
India             600446441
United States     305371298
Brazil            173419624
Indonesia         146059763
Name: Users, dtype: int64
plt.figure(figsize=(14,7))
sns.barplot(x = top_five_users.index,
            y = top_five_users,
            palette = "inferno")

plt.title('2020年のインターネットユーザーが最も多い国トップ5',size=20)
plt.xlabel('国', labelpad=10, size=14)
plt.ylabel("利\n用\n者\n数", labelpad=18, size=14, rotation=0, va='center')
plt.show()

2020 年に最もユーザー数が多かった上位 5 か国

  1. 中国
  2. インド
  3. 米国
  4. ブラジル
  5. インドネシア

6. 2019 年のインターネット使用量とブロードバンド契約の相関関係は何か

_data = internet.merge(broadband)
_data2019 = _data.query ('Year == 2019')

col1, col2 = "Internet_Usage", "Broadband_Subscriptions"
corr = _data2019['Internet_Usage'].corr(_data2019['Broadband_Subscriptions'])

print ("使用量とブロードバンド契約数の相関係数は ", round(corr, 2))
使用量とブロードバンド契約数の相関係数は  0.56
fig = plt.subplots(figsize=(8, 4))

x = _data2019['Internet_Usage'] 
y = _data2019['Broadband_Subscriptions']

plt.title('Correlation')

plt.scatter(x, y)


plt.plot(np.unique(x),
         np.poly1d(np.polyfit(x, y, 1))(np.unique(x)),
         color='orange')


plt.title('使用量とブロードバンド契約数の相関',size=20)
plt.xlabel('使用量', labelpad=10, size=14)
plt.ylabel("契\n約\n数", labelpad=18, size=14, rotation=0, va='center');

相関 0,56 は、中程度の正の線形関係を示します。


7. 要約

  1. インターネット使用率が最も高い国はバーレーン、カタールなどの中東が上位を占めています。

  2. アラブ首長国連邦、デンマークなど使用率の高い国では、ほとんどの人々がインターネットにアクセスできます。

  3. 一部の国ではデータが欠如していたので、2017, 2018, 2019 年で地域ごとに異なります。 EU は2019 年のデータに基づく結果となります。

  4. ほぼ一貫してアメリカが最もインターネットの使用量が多い国となっています。

  5. 中国、インドの人口が多い国がユーザー数も多い国となっています。

  6. インターネット使用量とブロードバンド契約数の相関係数は 0.56 となっており、相関関係が見られます。