【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