pandas

基本情報 [必須]

項目 内容
モジュールパス pandas
種別 ライブラリルートパッケージ
ファイル数 4(直下: init.py, _typing.py, conftest.py, testing.py)
サブモジュール数 13(_config, _libs, _testing, api, arrays, compat, core, errors, io, plotting, tests, tseries, util)

概要 [必須]

pandas は Python のデータ分析・操作ライブラリであり、ラベル付きデータ構造(DataFrame, Series, Index)を中心とした高速で柔軟なデータ処理機能を提供する。このルートパッケージは __init__.py を通じて 100 以上の公開 API(データ構造、dtype クラス、I/O 関数、データ操作関数、時系列機能等)を単一の pd 名前空間に集約し、ユーザーに統一的なインターフェースを提供する。_typing.py が型チェッカー向けの型エイリアスとプロトコルクラスを一元管理し、conftest.py が pytest テストスイート全体のフィクスチャ基盤を、testing.py がサードパーティ向けの公開テストユーティリティを提供する。

設計パターン [必須]

パターン名 適用範囲 説明
Facade init.py 13 のサブモジュールに分散した機能を単一名前空間に集約
Facade testing.py 内部テストモジュール _testing から公開 API のみを re-export
Protocol (Structural Subtyping) _typing.py I/O バッファ、Arrow データ交換、シーケンス型等のプロトコルクラスを定義
Centralized Type Registry _typing.py 100 以上の型エイリアスを単一モジュールに集約し循環インポートを回避
Fixture Factory / Parametrize conftest.py テストデータを辞書で管理し pytest フィクスチャで全パターンをパラメタライズ
Plugin Hook conftest.py pytest のプラグインフック機構でテスト設定を注入

アーキテクチャ [必須]

モジュール構成

pandas/
├── __init__.py       - パッケージエントリポイント(全公開 API の集約)
├── _typing.py        - 型エイリアス・プロトコルクラスの一元管理
├── conftest.py       - pytest 設定・100+ フィクスチャ定義
├── testing.py        - 公開テストユーティリティ(assert_frame_equal 等)
├── _config/          - オプション管理(get_option, set_option 等)
├── _libs/            - Cython/C 拡張(高速化基盤)
├── _testing/         - 内部テストインフラストラクチャ
├── api/              - 公開 toolkit API(extensions, types, typing 等)
├── arrays/           - ExtensionArray 実装
├── compat/           - 外部ライブラリ互換性レイヤー
├── core/             - コアデータ構造・アルゴリズム(Series, DataFrame, Index 等)
├── errors/           - 例外・警告クラス定義
├── io/               - データ入出力(CSV, Excel, JSON, SQL, Parquet 等)
├── plotting/         - 可視化機能
├── tests/            - テストスイート
├── tseries/          - 時系列機能(offsets, frequencies, holidays)
└── util/             - ユーティリティ関数

コンポーネント関連図

Mermaid形式:

graph TD
    Init["__init__.py<br/>パッケージエントリポイント"] --> CoreAPI["core/api.py<br/>DataFrame, Series, Index"]
    Init --> IoAPI["io/api.py<br/>read_csv, read_excel, ..."]
    Init --> TseriesAPI["tseries/api.py<br/>offsets, infer_freq"]
    Init --> Config["_config/<br/>get_option, set_option"]
    Init --> Testing["testing.py<br/>公開テストユーティリティ"]
    Testing --> InternalTesting["_testing/<br/>内部テストインフラ"]
    Typing["_typing.py<br/>型エイリアス・Protocol"] -.->|provides types| CoreAPI
    Typing -.->|provides types| IoAPI
    Conftest["conftest.py<br/>pytest フィクスチャ"] -.->|provides fixtures| Tests["tests/<br/>テストスイート"]

機能一覧 [必須]

機能名 説明 主要ファイル
パッケージ初期化・API 集約 全公開 API を pd 名前空間に集約、依存関係チェック init.py
型定義管理 100+ の型エイリアス、I/O バッファ・Arrow プロトコルクラス _typing.py
テストフィクスチャ基盤 100+ のパラメタライズドフィクスチャ、pytest フック設定 conftest.py
公開テストユーティリティ DataFrame/Series/Index/ExtensionArray の等値検証 testing.py

公開インターフェース [必須]

クラス / 関数

名前 種別 用途
DataFrame class 2 次元ラベル付きデータ構造
Series class 1 次元ラベル付きデータ構造
Index class 軸ラベル管理
read_csv function CSV ファイル読み込み
read_excel function Excel ファイル読み込み
read_json function JSON ファイル読み込み
read_parquet function Parquet ファイル読み込み
concat function DataFrame/Series の結合
merge function DataFrame の結合(SQL 風)
get_option / set_option function グローバルオプション管理
testing.assert_frame_equal function DataFrame 等値検証
testing.assert_series_equal function Series 等値検証
SequenceNotStr Protocol class str/bytes を除外したシーケンス型
ReadBuffer / WriteBuffer Protocol class I/O バッファプロトコル
ArrowArrayExportable / ArrowStreamExportable Protocol class Arrow ゼロコピーデータ交換プロトコル

(上記は代表的な公開 API の抜粋。__init__.py__all__ に 100 以上のシンボルが宣言されている)

依存関係 [必須]

外部依存(このモジュールが依存する外部パッケージ

パッケージ 主要クラス 用途
numpy ndarray, dtype, integer, floating 数値計算基盤、配列データ構造
numpy.typing ArrayLike, DTypeLike, NDArray 型注釈用
dateutil parser, tz 日付パース・タイムゾーン処理(ハード依存)
pytest fixture, mark, Item テストフレームワーク(conftest.py)
hypothesis strategies, settings プロパティベーステスト(conftest.py)
pytz timezone, FixedOffset タイムゾーン処理(オプション)
pyarrow Arrow バックエンド(オプション)

外部依存(このモジュールが依存する内部モジュール

依存先モジュール 主要クラス 用途
pandas/_config get_option, set_option, reset_option, describe_option, option_context, options オプション管理 API
pandas/compat is_numpy_dev numpy 互換性チェック
pandas/core/api DataFrame, Series, Index, 各 Dtype クラス, NA, NaT 等 主要データ構造・関数
pandas/core/col col カラム選択関数
pandas/core/dtypes/dtypes SparseDtype Sparse 型定義
pandas/core/computation/api eval 式評価エンジン
pandas/core/reshape/api concat, merge, pivot, melt 等 データ再形成関数群
pandas/io/api read_csv, read_excel, read_json 等 I/O 関数群
pandas/io/json/_normalize json_normalize JSON 正規化
pandas/tseries/api infer_freq 頻度推定
pandas/tseries/offsets offsets 日付オフセットクラス群
pandas/util/_print_versions show_versions バージョン情報表示
pandas/util/_tester test テスト実行
pandas/_testing assert_frame_equal, assert_series_equal 等 テストアサーション(testing.py 経由)
pandas/_version_meson version, git_version バージョン情報
pandas/_libs NaTType, Period, Timedelta, Timestamp 型参照(_typing.py, TYPE_CHECKING 時)
pandas/core/ops radd, rsub 等 逆演算子関数(conftest.py)

内部依存(このモジュールに依存するもの)[最重要]

pandas のルートパッケージであるため、import pandas を行うすべてのコード(内部テストスイート、外部ユーザーコード、サードパーティライブラリ)が本モジュールに依存する。_typing.py は pandas 内部のほぼ全モジュールから型インポートされ、conftest.py のフィクスチャは pandas/tests/ 配下の全テストファイルから利用される。

依存元モジュール 主要ファイル 用途
pandas/tests/ 全テストファイル conftest.py のフィクスチャ、pd.testing のアサーション
pandas/core/ frame.py, series.py, generic.py, indexes/base.py 等 _typing.py の型エイリアス
pandas/io/ parsers/readers.py, common.py 等 _typing.py の FilePath, ReadBuffer, WriteBuffer 等
外部ライブラリ pd.testing.assert_frame_equal 等の公開テスト API

データフロー [必須]

Mermaid形式:

flowchart TD
    User["ユーザーコード<br/>import pandas as pd"] --> Init["__init__.py<br/>依存チェック → API 集約"]
    Init --> PublicAPI["公開 API<br/>DataFrame, Series,<br/>read_csv, merge, ..."]
    Init --> TestAPI["テスト API<br/>pd.testing.assert_*"]
    Init --> ConfigAPI["設定 API<br/>get_option, set_option"]
    
    Pytest["pytest 実行"] --> Conftest["conftest.py<br/>フック・フィクスチャ"]
    Conftest --> Fixtures["100+ フィクスチャ"]
    Fixtures --> Tests["tests/ テストスイート"]
    
    Typing["_typing.py"] -.->|型情報| PublicAPI

セキュリティ考慮 [必須]

観点 対策状況 詳細
入力検証 なし ルートパッケージレベルでは外部入力を直接処理しない。入力検証は各サブモジュール(io, core 等)が担当
認証/認可 該当なし 認証機能は含まない
機密データ 該当なし 機密データの暗号化・マスキング処理はこのレベルでは行わない

技術的負債・既知の問題 [必須]

種別 内容 影響範囲 優先度
設計 conftest.py が約 2,200 行と大きく、gh-31989 で分割しない判断が行われている conftest.py
型システム pandas は py.typed ライブラリではなく(init.py のコメントに記載)、公開 API は型チェッカーでの補完が不完全 _typing.py, init.py
設計 init.py の all リストが手動管理されており、新規 API 追加時の更新漏れリスクがある init.py
テスト conftest.py の一部フィクスチャに制限あり(nogil は False のみ、timedelta64 がコメントアウト) conftest.py

拡張ポイント [必須]

変更内容 修正対象ファイル 手順・注意点
新しい公開 API の追加 init.py 1. 対応サブモジュールの api.py にシンボルを追加 2. init.py のインポート文に追記 3. all に追記
新しい型エイリアスの追加 _typing.py 適切なカテゴリセクションに TypeAlias を追加。TYPE_CHECKING ブロック内のインポートが必要な場合は循環インポートに注意
新しい公開テスト関数の追加 testing.py, _testing/ 1. _testing/ に実装を追加 2. testing.py のインポートに追記 3. all に追記
新しいテストフィクスチャの追加 conftest.py 対応するセクション(Common arguments, Dtypes 等)に @pytest.fixture を追加
新しいインデックス型のテスト対応 conftest.py indices_dict に新しいキーとインデックスオブジェクトを追加

注意点・特記事項 [必須]

  • 設計上の制約: init.py のインポート順序には依存関係があり、特に _configconfig_init の順序は必須。新規インポートの追加位置に注意すること
  • パフォーマンス: import pandas は多数のサブモジュールを即時インポートするため、初回インポート時間が比較的長い。これは意図的な設計であり、遅延インポートは採用していない
  • 互換性: all は型チェッカー向けの公開 API 宣言であり、ドキュメントベースの公開 API 決定方針を将来的に py.typed に移行する可能性がある

配下ドキュメント [必須]

サブモジュール

ファイル