データ分析を始める上で、Pandas DataFrameは避けて通れないほど重要なツールです。 表形式データを効率的に扱うための、データ分析の基盤 と言えます。Excelやデータベースのテーブルのように、データを整理し、様々な操作を驚くほど効率的に 行えます。Pandas DataFrame を使いこなせるかどうかで、その後のデータ分析のスピードと質が大きく変わってきます。だからこそ、基本的な構造や「作り方(生成方法)」の理解が不可欠です。
また、Pandas DataFrame と密接に関連している Pandas Series も理解しておきましょう。Seriesは DataFrame の一つの「列」とも言えるデータ構造です。Seriesを理解することで、DataFrameの仕組みがより深く把握できます。
この記事では、初心者向けに Pandas DataFrame の基本的な構造と「作り方(生成方法)」に焦点を当てて徹底解説します。さらに、Pandas Series との「違い」を明確にすることで、DataFrameへの理解を深めていきましょう。pd.DataFrame
メソッドを使った基本的な作成方法も、コード例と共に丁寧にご紹介します。
▶️ DataFrame, Series の公式ドキュメントも参考にしてください:
【この記事で学べること】
- Pandas DataFrame の基本的な構造と役割
- 様々なデータ形式から DataFrame を「作成する」方法(
pd.DataFrame
の使い方) - Pandas Series と DataFrame の根本的な「違い」
【体験談】私自身、最初にSeriesとDataFrameの違いが分からず、2次元リストをSeriesに渡してエラーになったことがあります。Seriesは1次元、DataFrameは2次元という違いを意識することが最初のつまずきを防ぐカギだと痛感しました。
Pandasのインストール
Pandasがインストールされていない場合は、以下のコマンドを使ってインストールします。
pip install pandas
Pandasのインポート
PandasをPythonコード内で使うために、まずインポートします。一般的に、pdという別名でインポートします。
import pandas as pd
Pandas DataFrame の基本:構造と作り方
Pandas DataFrameとは?:データ分析の強力な味方
Pandas DataFrame は、Pythonで表形式のデータを扱うための最も基本的なデータ構造です。データ分析における中心的な存在 と言えます。スプレッドシートやデータベースのテーブルのような形でデータを整理し、様々な操作を効率的に行えます。
-
CSVやExcelファイルからデータを読み込んで整形する:
【第2回】Google ColabとDriveで簡単CSV読み込み・保存 | 初心者向けDrive連携ガイド -
必要なデータだけを抽出・加工する:
【第6回】【初心者向け】Pandasのlocで行や列をラベルで抽出する基本操作をやさしく解説【図解あり】 -
統計的な計算や集計を行う:
【第5回】【初心者向け】Pandasのinfo()・describe()でデータ構造と統計量をやさしく理解する方法 -
グラフを作成するため等の前処理を行う:
【Pandas入門】drop/dropna/drop_duplicatesの使い方を初心者向けに徹底解説!【第15回】
といった、データ分析のあらゆるステップで DataFrame は活躍します。DataFrame を使いこなすことで、手作業では時間のかかるデータ処理を自動化し、より高度な分析に進むことができるようになります。データ分析プロジェクトのほとんどの場面で DataFrame が中心的な役割を果たします。
【他の記事へのご案内】 Pandas DataFrame を作成した後のデータの確認方法や、特定のデータを取り出す「抽出・選択」の方法については、別途詳細な記事をご用意しています。この記事で DataFrame の基本を理解したら、ぜひ別の記事で実践的な操作方法を学んでみてください。
Pandas DataFrame の基本的な構造
DataFrame は、以下の要素から構成されます。
- データ: 表の中身の値。様々なデータ型(数値、文字列など)を持つことができます。
- 列名 (Columns): 各列のラベル。各列は「Series」という1次元のデータ構造と考えることもできます。
- インデックス (Index): 各行のラベル。デフォルトでは0から始まる連番ですが、自由な値を設定できます。
以下の図は、Pandas DataFrame の構造をイメージしたものです。

Pandas DataFrame の作り方(生成方法)
Pandas DataFrame は、pd.DataFrame()
というメソッドを使って様々なデータ形式から作成(生成)できます。データ分析でよく使われる主な作成方法をここでは紹介します。
リストのリストから作成
Pythonの「リストのリスト」(リストの中にさらにリストが入っている構造)を使うことがよくあります。この場合、外側のリストの各要素が「行」に、内側のリストの要素が各「列」の値になります。columns
引数で列名を指定するのが一般的です。
data_list_of_list = [[1, 'Alice', 24],
[2, 'Bob', 27],
[3, 'Charlie', 22],
[4, 'David', 32],
[5, 'Eve', 29]]
# columns引数で列名を指定してDataFrameを作成
df_from_list_of_list = pd.DataFrame(data_list_of_list, columns=['ID', 'Name', 'Age'])
print("リストのリストから作成したDataFrame:\n", df_from_list_of_list)
リストのリストから作成したDataFrame: ID Name Age 0 1 Alice 24 1 2 Bob 27 2 3 Charlie 22 3 4 David 32 4 5 Eve 29
辞書から作成
Pythonの辞書も pd.DataFrame()
に渡すことができます。この場合、辞書のキーがDataFrameの「列名」に、値(リストやNumPy配列など)がその「列のデータ」になります。この方法が、直感的に DataFrame を作成しやすい場合が多いです。
data_dict = {'ID': [1, 2, 3, 4, 5],
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29]}
# 辞書からDataFrameを作成
df = pd.DataFrame(data_dict)
print("\n辞書から作成したDataFrame:\n", df)
# 以降の例で使用するため、変数dfに代入 (必要であれば既存のコードを調整)
辞書から作成したDataFrame: ID Name Age 0 1 Alice 24 1 2 Bob 27 2 3 Charlie 22 3 4 David 32 4 5 Eve 29
NumPy配列から作成
データがNumPy配列として存在する場合、直接 pd.DataFrame()
に渡して DataFrame を生成 することもできます。リストのリストからの作成と同様に、columns
や index
引数を指定できます。
# Numpyのインポート
# NumpyをPythonコード内で使うために、まずインポートします。一般的に、npという別名でインポートします。
import numpy as np
# NumPyは高速な数値計算を行うためのライブラリですが、
# 初心者の方は現時点でその詳細な使い方を深く気にする必要はありません。
# Pandas DataFrameを作成する際などに利用されることがある、という認識でまずは十分です。
# 同じ型の要素を持つ多次元配列を効率的に扱うのに役立ちます。
data_np = np.array([[1, 'Alice', 24],
[2, 'Bob', 27],
[3, 'Charlie', 22]])
df_from_np = pd.DataFrame(data_np, columns=['ID', 'Name', 'Age'])
print("\nNumPy配列から作成したDataFrame:\n", df_from_np)
NumPy配列から作成したDataFrame: ID Name Age 0 1 Alice 24 1 2 Bob 27 2 3 Charlie 22
インデックスを指定して作成・変更
Pandas DataFrame では、行ラベルであるインデックスを自由に設定したり変更したりできます。
インデックス (Index) は、DataFrame の各行を一意に識別するためのラベルです。デフォルトでは 0 から始まる連番が自動的に振られますが、データの特性に合わせて日付や ID などの意味のある値をインデックスとして設定することも可能です。インデックスは、特定の行を効率的に選択したり、複数の DataFrame を結合したりする際に重要な役割を果たします。
set_index()
メソッドを使うと、特定の列をインデックスに設定できます。
# 前の例で作成したdfを使用 (必要であればここでdfを再定義または確認)
# 例えば、data_dictから作成したdfを使用する場合:
data_dict_for_index = {'ID': [1, 2, 3, 4, 5],
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29]}
df_index_example = pd.DataFrame(data_dict_for_index) # 元のdfを上書きしないように変数名を変更
print("インデックス設定前のDataFrame:\n", df_index_example)
# 'ID'列をインデックスに設定
df_with_index = df_index_example.set_index('ID')
print("\n'ID'列をインデックスに設定したDataFrame:\n", df_with_index)
# 以降の例で使用するため、必要に応じて変数dfを更新
# df = df_with_index # 後続でこのdfを使用する場合は設定
インデックス設定前のDataFrame: ID Name Age 0 1 Alice 24 1 2 Bob 27 2 3 Charlie 22 3 4 David 32 4 5 Eve 29 'ID'列をインデックスに設定したDataFrame: Name Age ID 1 Alice 24 2 Bob 27 3 Charlie 22 4 David 32 5 Eve 29
5. その他の作り方(ファイル読み込みなど)
上記以外にも、以下のような方法で Pandas DataFrame を作成できます。
- CSVファイルやExcelファイルなどの外部ファイルを読み込む(
pd.read_csv()
,pd.read_excel()
など) - Pandas Series の辞書から作成する
CSVファイルを読み込む方法については、【第2回】Google ColabとDriveで簡単CSV読み込み・保存|初心者向けDrive連携ガイド の記事で解説していますので、興味があればご覧ください。
【DataFrame作成時の注意点】
特にリストのリストから作成する場合、内側のリストの要素数が揃っていないとエラーになるなど、データの構造に注意が必要です。
Pandas Series と DataFrame の違いを徹底理解
Pandas Seriesとは?:その役割とDataFrameとの関係
Pandas Series は、1次元のラベル付きデータ構造です。リストやNumPy配列に似ていますが、インデックスを持つ点で異なります。
Pandas Series は、Pandas DataFrame を構成する「一つの列」として理解すると、その役割が分かりやすくなります。
【どんな時にSeriesを使う?】 Series は、例えば DataFrame から特定の列だけを取り出して分析したい場合などに便利です。もちろん、単独で1次元データを扱いたい場合にも使用します。
DataFrameからSeriesを取り出す
前のセクションで作成した DataFrame から特定の列を選択すると、それは Pandas Series になります。この関係性をコードで確認してみましょう。
# 前のセクションで作成したdfを使用 (例えば、辞書から作成したdf)
# df = pd.DataFrame({'ID': [1, 2, 3, 4, 5], 'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'], 'Age': [24, 27, 22, 32, 29]}) # 必要であればここでdfを再定義
print("元のDataFrame:\n", df)
# 'Name'列を取り出す
names_series = df['Name']
print("\n'Name'列(Seriesとして取得):\n", names_series)
print("取得したデータの型:", type(names_series))
元のDataFrame: ID Name Age 0 1 Alice 24 1 2 Bob 27 2 3 Charlie 22 3 4 David 32 4 5 Eve 29 'Name'列(Seriesとして取得): 0 Alice 1 Bob 2 Charlie 3 David 4 Eve Name: Name, dtype: object 取得したデータの型: <class 'pandas.core.series.Series'>
Seriesの基本的な作り方
Pandas Series も、pd.Series()
メソッドを使って様々なデータ形式から作成できます。DataFrameの列が Series であることを理解するために、基本的な作成方法を簡単に見てみましょう。詳細な作成方法については、別の機会に詳しく解説します。
# リストから作成する例
data_s_list = [10, 20, 30, 40]
series_from_list = pd.Series(data_s_list)
print("\nリストから作成したSeries:\n", series_from_list)
# 辞書から作成する例(インデックスを指定したい場合に便利)
data_s_dict = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
series_from_dict = pd.Series(data_s_dict)
print("\n辞書から作成したSeries:\n", series_from_dict)
リストから作成したSeries: 0 10 1 20 2 30 3 40 dtype: int64 辞書から作成したSeries: a 10 b 20 c 30 d 40 dtype: int64
Series と DataFrame の決定的な違い(構造、次元、操作性)
Pandas を学ぶ上で、Series と DataFrame の「違い」を明確に理解することは非常に重要です。主な違いは以下の点です。
次元:
- Series: 1次元のデータ構造
- DataFrame: 2次元のデータ構造(行と列)
構造:
- Series: データが縦一列に並び、それぞれのデータにインデックス(ラベル)が付いています。
- DataFrame: 行と列を持つテーブル形式で、各列には列名が、各行にはインデックスが付きます。
-
操作性:
-
データの選択や操作を行う際のコードの書き方に違いがあります。例えば、
DataFrame からは列名で特定の列(Series)を選択したり、
.loc
や.iloc
を使って行や特定の要素を選択したりします。 一方、Series からはインデックス名や位置で要素を選択します。 -
「
[]
で取得すると Series(1次元)、[[]]
で取得すると DataFrame(2次元)になります。」という違いも重要なポイントです。 - これらの具体的な操作方法については、以下の記事で詳しく解説しています:
この違いを理解することで、どのようなデータをSeriesで扱うべきか、 DataFrameで扱うべきかが明確になり、より効率的にコードを書けるようになります。
-
データの選択や操作を行う際のコードの書き方に違いがあります。例えば、
DataFrame からは列名で特定の列(Series)を選択したり、
以下の図は、この構造の違いを視覚的に示したものです。
✅ まとめ
この記事では、Pandasデータ分析 の要となる Pandas DataFrame の基本的な構造と、pd.DataFrame()
メソッドを使ったリストや辞書からの「基本的な作り方(生成方法)」を徹底解説しました。
また、DataFrame を構成する要素とも言える Pandas Series の概要や、Series と DataFrame の根本的な「違い」(次元、構造、操作性)についても理解を深めました。
これらの Pandas の基礎を固めることで、データ分析の様々なステップに進む準備ができました。
Pandas DataFrame を使いこなすためには、作成方法だけでなく、その後のデータ操作が非常に重要になります。ぜひ、次回以降の記事も参考に、Pandas DataFrame でのデータ分析スキルをステップアップさせていきましょう。

コメント