忍者ブログ
統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。

【Python入門】データの性質で使い分ける!主要な5つのデータ構造(リスト・タプル・セット・ディクショナリ・データフレーム)

Pythonでプログラミングやデータ分析を行う際、データの性質(順序があるか、変更できるか、表形式かなど)に合わせて適切なデータ構造を選択することが極めて重要です。今回は、実務や試験で必ず登場する代表的な5つのデータ構造の特徴と使い分けを整理します!

1. リスト(list)

データを順番に並べて保持し、後から要素の追加や変更・削除が行える、最も汎用性の高いデータ構造です。

  • 特徴: 順序を持ち、ミュータブル(可変)である。異なるデータ型を混在させて格納できる。
  • 用途: 順序性のあるデータを順次処理したり、動的に要素数が変わるコレクションを扱う場合。
  • コード例: my_list = [10, "apple", 3.14]

2. タプル(tuple)

リストと似ていますが、一度作成した後に要素を変更できない(イミュータブルな)データ構造です。

  • 特徴: 順序を持つが、イミュータブル(不変=変更不可)である。
  • 用途: データの書き換えを防いで安全に保持したい場合や、関数の戻り値として複数の値をまとめて返す場合。
  • コード例: my_tuple = (10, "apple", 3.14)

3. セット(set / 集合)

数学の「集合」を扱うためのデータ構造で、順番を持たず、重複する要素を一切許さない性質を持ちます。

  • 特徴: 順番を持たず、重複する要素が自動的に排除される(一意な値のみ)。和集合や積集合などの演算が高速。
  • 用途: リストから重複を削除したい場合や、データが存在するかどうかの高速な判定(メンバーシップテスト)。
  • コード例: my_set = {1, 2, 3, 3} # ➔ 重複が消えて {1, 2, 3} になる

4. ディクショナリ(dict / 辞書)

「キー(key)」と「値(value)」のペアをセットにして管理する、いわゆる連想配列です。

  • 特徴: 順番を持たず(※Python 3.7以降は挿入順を保持)、キーを指定して高速に値を取り出せる。
  • 用途: 関連する情報を名前(キー)で紐づけて管理したい場合や、JSONのような構造データを扱う場合。
  • コード例: my_dict = {"name": "Taro", "age": 30}

5. データフレーム(DataFrame / pandas)

標準ライブラリではなく、外部ライブラリ(pandas)で提供される、行と列を持つ2次元の表形式データです。

  • 特徴: エクセルやSQLのテーブルのように、行と列に名前をつけてデータを直感的に操作できる。
  • 用途: データ分析、機械学習の前処理、CSVやExcelファイルの読み込み・集計・統計処理全般。
  • コード例: df = pd.DataFrame({"A": [1, 2], "B": [3, 4]})

6. まとめ:データ構造の比較早見表

それぞれの違いをすっきりと整理しておきましょう。

データ構造順序の有無変更可能性重複の許容 / 特徴
リスト (`list`) あり 可(ミュータブル) 許容する(通常の配列)
タプル (`tuple`) あり 不可(イミュータブル) 許容する(変更不可で安全)
セット (`set`) なし 可(ミュータブル) 許容しない(重複なし)
ディクショナリ (`dict`) なし* 可(ミュータブル) キーと値のペアで管理
データフレーム (`df`) あり(2次元) 可(ミュータブル) 行と列の表形式データ

*(※Python 3.7以降のディクショナリは挿入順序を保持します)*


7. 終わりに

Pythonの基礎であり、データ分析や機械学習の前処理でも毎日使う必須の知識です。データの性質(変更したいか、重複させたくないか、表形式で扱いたいか)に合わせて、最適なデータ構造をパッと選べるようにしておきましょう!


PR