Python を使った新型コロナウイルスのデータ分析

PythonBeginner
オンラインで実践に進む

はじめに

このプロジェクトでは、Python を使って COVID-19 データを分析する方法を学びます。COVID-19 のパンデミックは世界に大きな影響を与えており、ウイルスの拡大を追跡し、適切な判断を下すためにはデータを理解することが重要です。

👀 プレビュー

{
  "Confirmed": {
    "Africa": 1203094,
    "America": 6396173,
    "Asia": 6480321,
    "Europe": 3450299,
    "Oceania": 27346,
    "Others": 721,
    "Total": 17557954
  },
  "Deaths": {
    "Africa": 28289,
    "America": 254610,
    "Asia": 133186,
    "Europe": 206438,
    "Oceania": 576,
    "Others": 15,
    "Total": 623114
  },
  "Recovered": {
    "Africa": 930536,
    "America": 5087347,
    "Asia": 5163062,
    "Europe": 1927545,
    "Oceania": 21892,
    "Others": 651,
    "Total": 13131033
  },
  "Active": {
    "Africa": 244269,
    "America": 1054216,
    "Asia": 1184073,
    "Europe": 1316316,
    "Oceania": 4878,
    "Others": 55,
    "Total": 3803807
  }
}

🎯 タスク

このプロジェクトでは、以下のことを学びます。

  • 開発環境をセットアップし、必要な Python ライブラリをインストールする方法
  • COVID-19 データの構造と内容を理解する方法
  • 国名を大陸名に変換する関数を実装する方法
  • COVID-19 データを処理し、各大陆の集計統計を計算する方法
  • コードをテストし、出力を検証する方法

🏆 成果

このプロジェクトを完了すると、以下のことができるようになります。

  • Python で CSV データを扱う方法を理解する
  • データを処理し分析する関数を実装する
  • 異なる形式(例:CSV から JSON)のデータを変換する
  • データ分析と可視化の経験を得る
  • データに基づいた洞察を通じて COVID-19 パンデミックの理解に貢献する

環境を整える

このステップでは、COVID-19 データ分析プロジェクトの環境をセットアップする方法を学びます。

  1. ターミナルを開き、/home/labex/project ディレクトリに移動します。
  2. 次のコマンドを実行して必要な Python ライブラリをインストールします。
python3 -m pip install pandas country-converter

これにより、プロジェクトに必要な pandascountry-converter ライブラリがインストールされます。

✨ 解答を確認して練習

データを理解する

COVID-19 のデータは、/home/labex/project ディレクトリにある CSV ファイルで提供されます。このファイルには、以下の列が含まれています。

  • Country_Region:国または地域の名前
  • Confirmed:COVID-19 の確定感染者数
  • Deaths:COVID-19 による死亡者数
  • Recovered:COVID-19 の回復者数
  • Active:COVID-19 の現症者数

あなたのタスクは、このデータを処理して、各大陆の集計統計を計算することです。

✨ 解答を確認して練習

country_to_continent 関数を実装する

最初のステップは、国名を対応する大陸名に変換できる関数を作成することです。/home/labex/project ディレクトリに新しいファイル covid.py を作成し、次のコードを追加します。

import country_converter as coco

def country_to_continent(country_name):
    """この関数は国名を受け取り、大陸名を返します。"""
    try:
        ## 国名を大陸名に変換する
        if country_name == "Diamond Princess" または country_name == "MS Zaandam":
            return "Others"
        country_continent_name = coco.convert(names=country_name, to="continent")
        ## 国名が見つからない場合、'Others' を返す
        if country_continent_name == "not found":
            return "Others"
        return country_continent_name
    except:
        return "Others"

この関数は、country-converter ライブラリを使用して国名を対応する大陸名に変換します。国名が見つからない場合は、「Others」を返します。

✨ 解答を確認して練習

count 関数を実装する

次に、count 関数を実装する必要があります。この関数は COVID-19 データを処理し、各大陆の集計統計を返します。covid.py ファイルに次のコードを追加します。

import json
import pandas as pd

def count(data):
    """この関数はファイルパスを受け取り、各大陆の確定感染者数、死亡者数、回復者数、現症者数の合計を返します。"""
    ## ファイルからデータを読み込む
    df = pd.read_csv(data)
    ## 欠損値を 0 で埋める
    df.fillna(0, inplace=True)
    ## 欠損値のある行を削除する
    df = df[df["Confirmed"] == df["Deaths"] + df["Recovered"] + df["Active"]]
    ## 国名を大陸名に変換する
    df["Continent"] = df["Country_Region"].apply(country_to_continent)
    ## データ型を整数に変換する
    df[["Confirmed", "Deaths", "Recovered", "Active"]] = df[
        ["Confirmed", "Deaths", "Recovered", "Active"]
    ].astype(int)
    ## 関心のある列を選択し、辞書に変換する
    df = df[["Continent", "Confirmed", "Deaths", "Recovered", "Active"]]
    result = df.groupby("Continent").sum().to_dict()
    ## 各大陆の合計を追加する
    for key in result.keys():
        result[key]["Total"] = sum(result[key].values())
    return json.dumps(result)

この関数は CSV ファイルから COVID-19 データを読み込み、データを処理し、JSON 形式で各大陆の集計統計を返します。

✨ 解答を確認して練習

コードをテストする

コードをテストするには、ターミナルで次のコマンドを実行できます。

python3 covid.py

これにより、count 関数が実行され、結果の JSON データがコンソールに表示されます。

✨ 解答を確認して練習

出力を検証する

count 関数の出力は、次のような JSON 文字列でなければなりません。

{
  "Confirmed": {
    "Africa": 1203094,
    "America": 6396173,
    "Asia": 6480321,
    "Europe": 3450299,
    "Oceania": 27346,
    "Others": 721,
    "Total": 17557954
  },
  "Deaths": {
    "Africa": 28289,
    "America": 254610,
    "Asia": 133186,
    "Europe": 206438,
    "Oceania": 576,
    "Others": 15,
    "Total": 623114
  },
  "Recovered": {
    "Africa": 930536,
    "America": 5087347,
    "Asia": 5163062,
    "Europe": 1927545,
    "Oceania": 21892,
    "Others": 651,
    "Total": 13131033
  },
  "Active": {
    "Africa": 244269,
    "America": 1054216,
    "Asia": 1184073,
    "Europe": 1316316,
    "Oceania": 4878,
    "Others": 55,
    "Total": 3803807
  }
}

この出力は、各大陆の集計統計を表しており、確定感染者数、死亡者数、回復者数、および現症者数の合計が含まれています。

おめでとうございます!あなたは COVID-19 データ分析プロジェクトを完了しました。質問や問題があれば、遠慮なくお尋ねください。

✨ 解答を確認して練習

まとめ

おめでとうございます!このプロジェクトを完了しました。あなたは実験技術を向上させるために LabEx でさらに多くの実験を行うことができます。