Genfromtxt を使ったデータのインポート

PythonPythonBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、numpy.genfromtxt 関数を使ってデータをインポートする方法を学びます。この関数を使うと、様々なソースからの表形式のデータを読み取り、NumPy 配列に変換することができます。入力の定義、行を列に分割、列の選択、データ型の設定、および変換の微調整に関するさまざまなオプションを検討します。

注: 03-io-genfromtxt.ipynb でコードを記述できます。手順では一部の出力操作を省略していますので、必要に応じて出力を表示できます。

必要なライブラリのインポート

まず、必要なライブラリをインポートしましょう。配列を作成するために numpy ライブラリと、ファイルのようなオブジェクトを作成するために io ライブラリの io モジュールを使用します。

import numpy as np
from io import StringIO

入力の定義

numpy.genfromtxt 関数は、データのソースを必須引数として必要とします。それは文字列、文字列のリスト、ジェネレータ、または read メソッドを持つオープンされたファイルのようなオブジェクトです。

data = "1, 2, 3\n4, 5, 6"

行を列に分割する

delimiter 引数は、行をどのように列に分割するかを定義するために使用されます。デフォルトでは、numpy.genfromtxtdelimiter=None を想定しており、これは行が空白文字(タブを含む)に沿って分割されることを意味します。

np.genfromtxt(StringIO(data), delimiter=",")

列の選択

usecols 引数は、インポートする列を選択するために使用されます。インポートする列のインデックスに対応する単一の整数または整数のシーケンスを受け付けます。

np.genfromtxt(StringIO(data), usecols=(0, -1))

データ型の設定

dtype 引数は、文字列を他の型に変換する方法を制御するために使用されます。それは単一の型、型のシーケンス、カンマ区切りの文字列、辞書、タプルのシーケンス、既存の numpy.dtype オブジェクト、またはデータ自体から型を決定するための None です。

np.genfromtxt(StringIO(data), dtype=float)

変換の微調整

converters 引数を使うと、より複雑な変換を処理するための変換関数を定義できます。列インデックスまたは列名をキーとし、変換関数を値とする辞書を受け付けます。

convertfunc = lambda x: float(x.strip(b"%"))/100.
np.genfromtxt(StringIO(data), converters={1: convertfunc})

欠損値の処理と埋め込み

missing_values 引数と filling_values 引数は、欠損データを処理するために使用されます。missing_values 引数は欠損データを認識するために使用され、filling_values 引数は欠損エントリに対する値を提供するために使用されます。

np.genfromtxt(StringIO(data), missing_values="N/A", filling_values=0)

ショートカット関数の使用

numpy.lib.npyio モジュールは、numpy.genfromtxt から派生したショートカット関数を提供します。これらの関数は異なるデフォルト値を持ち、標準的なNumPy配列またはマスク付き配列を返します。

from numpy.lib.npyio import recfromtxt

recfromtxt(StringIO(data), delimiter=",")

まとめ

この実験では、numpy.genfromtxt 関数を使ってデータをインポートする方法を学びました。入力を定義し、行を列に分割し、列を選択し、データ型を設定し、変換を微調整するためのさまざまなオプションを検討しました。また、numpy.lib.npyio モジュールが提供するショートカット関数についても学びました。