Pandas による外部データの読み込み

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

はじめに

データ分析において、最初のステップは多くの場合、データを構造化された形式にロードすることです。強力な Python ライブラリである Pandas は、このタスクに優れています。CSV のようなフラットファイルからデータを読み込むための最も一般的な関数はpandas.read_csv()です。この関数は非常に柔軟で、さまざまなファイル形式や潜在的な問題に対応するための幅広いパラメータを提供しています。

この実験では、pd.read_csv()を使用して CSV ファイルから Pandas DataFrame にデータをインポートする方法を学びます。コメントの処理方法、ヘッダーの指定、欠損値の管理、およびロードされたデータの初期検査の実行方法について説明します。

read_csv を使用した CSV ファイルの読み込み

このステップでは、pd.read_csv() 関数を使用して CSV ファイルから Pandas DataFrame にデータをロードする基本的な使い方を学びます。

プロジェクトディレクトリ ~/project には data.csv という名前のファイルが含まれています。その内容を確認してみましょう。先頭には # シンボルで始まるコメント行がいくつか含まれています。read_csv 関数は、comment パラメータを使用してこれらの行を無視するように指示できます。

まず、左側のファイルエクスプローラーから main.py ファイルを開きます。このファイルに Python コードを記述します。

Pandas をインポートし、data.csv ファイルを読み込むために、以下のコードを main.py に追加します。結果の DataFrame は df という名前の変数に割り当て、その後表示します。

import pandas as pd

## '#' で始まる行をコメントとして扱うように CSV ファイルを読み込む
df = pd.read_csv('data.csv', comment='#')

## DataFrame を表示する
print(df)

次に、スクリプトを実行するには、WebIDE でターミナルを開き(メニュー Terminal > New Terminal を使用できます)、次のコマンドを実行します。

python3 main.py

以下のような出力が表示されるはずです。これは、CSV ファイルの内容が構造化された DataFrame にロードされていることを示しています。

   id     name          age         city
0   1    Alice           25     New York
1   2      Bob           30  Los Angeles
2   3  Charlie  Not Available       London
3   4    David           35          NaN
4   5      Eve           22        Paris

read_csv でヘッダー行を指定する

このステップでは、read_csv 関数の header パラメータを探求します。

デフォルトでは、read_csv はファイル内のコメント行やスキップされた行を除いた最初の行を、列名を含むヘッダー行とみなします。私たちの data.csv ファイルでは、コメント行をスキップした後、id,name,age,city という行が正しくヘッダーとして推測されます。

header パラメータを使用すると、ヘッダーとして使用する行を明示的に指定できます。これは行インデックス(0 から始まる)を表す整数を受け取ります。コメント後の最初のデータ行がヘッダーであるため、そのインデックスは 0 です。

main.py ファイルを更新して、明示的に header=0 を設定しましょう。この場合、これはデフォルトの動作ですが、明示的に指定することで、異常な形式のファイルによるエラーを防ぐことができます。

main.py を以下のコードで更新してください。

import pandas as pd

## コメント後の最初の行 (インデックス 0) をヘッダーとして明示的に指定する
df = pd.read_csv('data.csv', comment='#', header=0)

print(df)

ターミナルから再度スクリプトを実行します。

python3 main.py

出力は前のステップと同じになります。これは、デフォルトの動作を確認しただけだからです。この方法は、コードの明確さと堅牢性のために役立ちます。

   id     name          age         city
0   1    Alice           25     New York
1   2      Bob           30  Los Angeles
2   3  Charlie  Not Available       London
3   4    David           35          N/A
4   5      Eve           22        Paris

na_values パラメータで欠損値を処理する

このステップでは、欠損データのカスタム表現を処理する方法を学びます。

前のステップの DataFrame を見ると、age 列に "Not Available"city 列に NaN という値が表示されています。Pandas は、空文字列、NAN/A のような一般的な欠損値の指標を自動的に認識しますが、"Not Available" のようなカスタム値は認識しません。na_values パラメータを使用して、NaN (Not a Number) として解釈されるべき文字列のリストを提供できます。これは Pandas の欠損データに対する標準的なマーカーです。

main.py を変更して、na_values パラメータを含めましょう。

import pandas as pd

## 欠損値として扱われる文字列のリストを定義する
missing_values = ["Not Available", "N/A"]

## カスタムの欠損値を指定して CSV を読み込む
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)

print(df)

スクリプトを実行します。

python3 main.py

新しい出力を観察してください。"Not Available" 文字列が NaN に置き換えられています。

   id     name   age         city
0   1    Alice  25.0     New York
1   2      Bob  30.0  Los Angeles
2   3  Charlie   NaN       London
3   4    David  35.0          NaN
4   5      Eve  22.0        Paris

age 列のデータ型も、NaN 値を格納するために float64 に変更されていることに注意してください。

head メソッドで最初の数行を表示する

このステップでは、DataFrame の最初の数行を検査する方法を学びます。

大規模なデータセットを扱う場合、DataFrame 全体を出力するのは非効率的であり、画面が乱雑になる可能性があります。.head() メソッドは、データの簡単なプレビューを取得するための便利な方法です。デフォルトでは、最初の 5 行を返します。

.head() に整数を渡すことで、表示したい行数を指定することもできます。ここでは、DataFrame の最初の 3 行のみを表示してみましょう。

main.py ファイルを以下のように更新してください。DataFrame 全体を出力する代わりに、その先頭部分のみを出力します。

import pandas as pd

missing_values = ["Not Available", "N/A"]
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)

## DataFrame の最初の 3 行を表示する
print(df.head(3))

ターミナルからスクリプトを実行します。

python3 main.py

出力は以前よりもはるかに短くなり、ヘッダーと最初の 3 つのレコードのみが表示されます。

   id     name   age         city
0   1    Alice  25.0     New York
1   2      Bob  30.0  Los Angeles
2   3  Charlie   NaN       London

shape 属性で DataFrame の形状を確認する

このステップでは、DataFrame の次元を確認する方法を学びます。

行数と列数を知ることは、データ分析における基本的な確認事項です。Pandas DataFrame には .shape 属性があり、行数と列数を含むタプルを返します。

.shape はメソッドではなく属性であるため、アクセスする際に括弧 () を使用しないことに注意してください。

main.py を変更して、DataFrame の形状を出力しましょう。

import pandas as pd

missing_values = ["Not Available", "N/A"]
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)

## DataFrame の次元(行数、列数)を取得する
df_shape = df.shape

print(df_shape)

最後にスクリプトを実行します。

python3 main.py

出力はタプルになり、DataFrame には 5 行 4 列があることを示します。

(5, 4)

まとめ

この実験はこれで完了です!Pandas を使用したデータの読み込みと検査の基本的なスキルを習得しました。

この実験では、以下のことを習得しました。

  • pd.read_csv() を使用して CSV ファイルを DataFrame に読み込む方法。
  • comment パラメータを使用してコメント行をスキップする方法。
  • header パラメータを使用してヘッダー行を明示的に定義する方法。
  • na_values パラメータを使用してカスタム欠損値を処理する方法。
  • .head() メソッドを使用して DataFrame のプレビューを表示する方法。
  • .shape 属性を使用して DataFrame の次元を確認する方法。

これらは、ほぼすべてのデータ分析タスクの出発点となる基本的な操作です。これらのスキルを習得することで、さまざまなデータのインポートに関する課題に対応できるようになります。