こんにちは、JS2IIUです。Pandasは頻繁に使っています。データを取り扱う時には、基本的な機能だけでも十分に使う価値があるライブラリです。今回も、よろしくお願いします。
PandasのDataFrameは、Pythonでデータ処理を行う際に非常に便利で強力なデータ構造です。この記事では、DataFrameの基本構造とその要素について解説し、DataFrameの要素にアクセスする方法や、構造の理解に役立つサンプルプログラムも紹介します。また、Columns(カラム)を指定しなかった場合にDataFrameがどのようになるのかについても見ていきます。
DataFrameの基本構造と要素
DataFrameは、表形式(スプレッドシートのような形)でデータを格納するための2次元データ構造です。行と列を持ち、各セルには様々なデータ型の値を格納できます。主に以下の3つの要素で構成されています。
- index: 各行のラベルです。行を特定するために使用します。デフォルトでは整数が設定されますが、任意のラベルを設定することも可能です。
- columns: 各列のラベルです。カラム名として任意のラベルを設定でき、列を指定するために使用します。
- values: 実際のデータ(数値や文字列など)で、2次元配列の形で格納されています。

上記のサンプルデータは、Theodore Petrou, Pandas Cookbook – Recipes for Scientific Computing, Time Series Analysis and. Data Visualization using Python の著書データからとっています。この書籍の紹介は、本記事の一番下にあります。
サンプルコード:DataFrameを作成して構造を確認する
次のコードは、サンプルデータを基にDataFrameを作成し、構造を確認する方法を示しています。DataFrameの変数名は、とりあえず適当で良い場合にはdfとすることが多いです。
import pandas as pd
# DataFrameの作成
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [24, 30, 18],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
# DataFrameの構造を表示
print("DataFrameの構造を確認")
print("Index:", df.index)
print("Columns:", df.columns)
print("Values:", df.values)
実行結果
DataFrameの構造を確認
Index: RangeIndex(start=0, stop=3, step=1)
Columns: Index(['Name', 'Age', 'City'], dtype='object')
Values: [['Alice' 24 'New York']
['Bob' 30 'Los Angeles']
['Charlie' 18 'Chicago']]
- indexは
RangeIndexで、0から2までの整数が設定されています。 - columnsは
Indexオブジェクトで、Name、Age、Cityがカラム名として設定されています。 - valuesは2次元配列の形で、各セルには
Name、Age、Cityに対応するデータが格納されています。

index, columns, valuesのデータ型について
各要素のデータ型についても確認してみましょう。
- index: Pandasの
Indexオブジェクトで、行のラベルを保持します。 - columns: 同じくPandasの
Indexオブジェクトで、各列のラベルを保持します。 - values: Numpyの配列形式(
ndarray)で格納されており、異なるデータ型が共存できます。
print("Indexのデータ型:", type(df.index))
print("Columnsのデータ型:", type(df.columns))
print("Valuesのデータ型:", type(df.values))
実行結果
Indexのデータ型: <class 'pandas.core.indexes.range.RangeIndex'>
Columnsのデータ型: <class 'pandas.core.indexes.base.Index'>
Valuesのデータ型: <class 'numpy.ndarray'>
Columnsを指定しなかった場合のDataFrameの構造
DataFrameを作成する際、通常はcolumnsパラメータにカラム名を指定しますが、指定しない場合はPandasが自動的に列名を割り当てます。これは、データソースの形によって異なる挙動を取ります。
例1: リストからDataFrameを作成した場合
リストからDataFrameを作成する場合、カラム名が明示されていないと、自動的に0から始まる整数がカラム名として割り当てられます。
import pandas as pd
# カラムを指定せずにリストからDataFrameを作成
data = [[1, 'Alice'], [2, 'Bob'], [3, 'Charlie']]
df_no_columns = pd.DataFrame(data)
print("Columnsを指定しない場合のDataFrame:")
print(df_no_columns)
実行結果
Columnsを指定しない場合のDataFrame:
0 1
0 1 Alice
1 2 Bob
2 3 Charlie
この場合、Pandasは各列に0, 1といった整数のカラム名を割り当てています。データの内容に基づいて自動的に列が生成され、0列には数値、1列には文字列が格納されています。
例2: 辞書からDataFrameを作成した場合
辞書からDataFrameを作成する場合、辞書のキーが自動的にカラム名として使用されます。そのため、カラム名を指定しなくても、各キーがカラム名として設定されるため、意味のある名前が自動的に反映されます。
# 辞書からDataFrameを作成
data_dict = {'id': [1, 2, 3], 'name': ['Alice', 'Bob', 'Charlie']}
df_from_dict = pd.DataFrame(data_dict)
print("辞書から作成したDataFrame(Columnsを指定しない):")
print(df_from_dict)
実行結果
辞書から作成したDataFrame(Columnsを指定しない):
id name
0 1 Alice
1 2 Bob
2 3 Charlie
このように、辞書からDataFrameを作成すると、カラム名として辞書のキーがそのまま設定されます。
DataFrameの作り方色々
PandasでDataFrameにデータを入れ込む方法は様々用意されています。別の記事で紹介していますので、参考にして下さい。
- 【Pandas】ExcelファイルからDataFrameを作る | アマチュア無線局JS2IIU
- 【Pandas】XMLからDataFrameを作る | アマチュア無線局JS2IIU
- 【Pandas】JSONからDataFrameを作る | アマチュア無線局JS2IIU
- 【Pandas】クリップボードからDataFrameを作る | アマチュア無線局JS2IIU
- 【Pandas】辞書からDataFrameを作る | アマチュア無線局JS2IIU
- 【Pandas】HTMLからDataFrameを作る | アマチュア無線局JS2IIU
まとめ
PandasのDataFrameは、表形式でデータを保持する強力なデータ構造です。行ラベルを管理するindex、列ラベルを管理するcolumns、そして実際のデータであるvaluesという3つの要素から構成されています。
- indexは行を特定するためのラベルで、
RangeIndexとして整数がデフォルトで設定されます。 - columnsは列を特定するためのラベルで、任意の名前を設定可能です。
- valuesは2次元配列で、異なるデータ型の値を含むことができます。
また、Columnsを指定しなかった場合、リストを使用した場合は整数が自動的に列名となり、辞書の場合はキーがそのままカラム名として設定されます。データの構造を理解し、どのように自動設定されるかも確認しておくと、DataFrameの扱いがより簡単になります。

参考
- pandas – Python Data Analysis Library
- 10 minutes to pandas — pandas 2.2.3 documentation
- Pandas Basics – Learn Python – Free Interactive Python Tutorial
少しだけPRです。
Pandasについて詳しく知りたいかた、もっと使いこなしたい方におすすめの本です。数年前に購入しましたが、今も手元に置いて時々見返しています。「pandasクックブック Pythonによるデータ処理のレシピ」Theodore Petrou著、黒川利明訳。
最後まで読んでいただきありがとうございます。73


コメント