【第3回】【初心者向け】PandasのSeriesとDataFrameの違いと作り方を図解で徹底解説

pandas

データ分析を始めるには、Pandasの基本的なデータ構造を理解することが重要です。Pandasには、SeriesDataFrameという2つの主要なデータ構造があります。これらを使いこなすことで、データの操作や分析を効率的に行うことができます。今回は、PandasのSeriesとDataFrameの作り方を詳しく解説します。
【体験談】私自身、最初にSeriesとDataFrameの違いが分からず、2次元リストをSeriesに渡してエラーになったことがあります。Seriesは1次元、DataFrameは2次元という違いを意識することが最初のつまずきを防ぐカギだと痛感しました。

1. Pandasのインストール

Pandasがインストールされていない場合は、以下のコマンドを使ってインストールします。

pip install pandas

2. Pandasのインポート

PandasをPythonコード内で使うために、まずインポートします。一般的に、pdという別名でインポートします。

import pandas as pd

3. PandasのSeriesとは?

PandasのSeriesは、1次元のラベル付きデータ構造です。データを1つの列として扱い、リストやNumPy配列に似ていますが、インデックス(データのラベル)を追加することができ、データの操作がしやすくなります。

▶️ Seriesの公式ドキュメントも参考にしてください:
pandas Series Documentation

3.1 Seriesの作成方法

Seriesは、リストや辞書を使って作成できます。リストや辞書の違いは、リストは順番にデータを並べ、辞書はキーと値をペアで持つ点です。

リストを使ったSeriesの作成

リストからSeriesを作成する例です。リストは単一のデータ列を持っています。
【失敗談】printで出力したときに、インデックス付きの縦並び表示になるのを見て驚きました。リストとは異なる表現形式なので、最初は戸惑いましたが、むしろ見やすいと感じるようになりました。

import pandas as pd

data = [1, 2, 3, 4, 5]
series = pd.Series(data)

print(series)

出力結果:

0    1
1    2
2    3
3    4
4    5
dtype: int64

インデックスを指定したSeriesの作成

インデックスはデータのラベルで、データをより意味づけするのに役立ちます。

index_labels = ['a', 'b', 'c', 'd', 'e']
series_with_index = pd.Series(data, index=index_labels)

print(series_with_index)

出力結果:

a    1
b    2
c    3
d    4
e    5
dtype: int64

辞書からSeriesを作成

辞書はキーと値をペアで持つデータ構造です。これを使って、キーをインデックス、値をデータとしてSeriesを作成できます。

data_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
series_from_dict = pd.Series(data_dict)

print(series_from_dict)

出力結果:

a    1
b    2
c    3
d    4
e    5
dtype: int64

4. PandasのDataFrameとは?

PandasのDataFrameは、2次元のラベル付きデータ構造です。行と列でデータを整理し、ExcelやSQLのテーブルに似た形でデータを扱います。

▶️ DataFrameの公式ドキュメントも参考にしてください:
pandas DataFrame Documentation

4.1 DataFrameの作成方法

DataFrameはリストや辞書を使って作成することができます。ここでは、リストからDataFrameを作成する例を見てみましょう。

リストからDataFrameを作成

リストからDataFrameを作成する場合、リスト内の各要素が行になります。

import pandas as pd

data = [[1, 'Alice', 24],
        [2, 'Bob', 27],
        [3, 'Charlie', 22],
        [4, 'David', 32],
        [5, 'Eve', 29]]

df = pd.DataFrame(data, columns=['ID', 'Name', 'Age'])

print(df)

出力結果:

   ID     Name  Age
0   1    Alice   24
1   2      Bob   27
2   3  Charlie   22
3   4    David   32
4   5      Eve   29

辞書からDataFrameを作成

辞書を使うことで、各列のデータをキーとしてDataFrameを作成できます。

data = {'ID': [1, 2, 3, 4, 5],
        'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
        'Age': [24, 27, 22, 32, 29]}

df = pd.DataFrame(data)

print(df)

出力結果:

   ID     Name  Age
0   1    Alice   24
1   2      Bob   27
2   3  Charlie   22
3   4    David   32
4   5      Eve   29

5. インデックスの設定と変更

DataFrameやSeriesでは、インデックスを設定することで、データの順番やラベルを変更することができます。

# 'ID'列をインデックスに設定
df = df.set_index('ID')
print(df)

出力結果:

       Name  Age
ID
1    Alice   24
2      Bob   27
3  Charlie   22
4    David   32
5      Eve   29

6. 1次元(Series)と2次元(DataFrame)の違い

以下の図は、SeriesとDataFrameのインデックスとデータの関係を視覚的に示したものです。Seriesは1次元のデータ構造、DataFrameは2次元のデータ構造です。

SeriesとDataFrameの構造

7. まとめ

今回は、PandasのSeriesとDataFrameの作り方について解説しました。これらはPandasの基本的なデータ構造で、データ分析を行う上で非常に重要な役割を担います。

Seriesは1次元のラベル付きデータ構造、DataFrameは2次元のラベル付きデータ構造です。これらを使いこなせるようになれば、Pandasを使ったデータ操作や分析が格段に楽になります。
【改善策】SeriesとDataFrameの違いを一目で理解できるよう、自分なりに図を書いて整理するようにしました。頭の中で整理できるだけで、後のエラーも激減しました。

次回は、DataFrameを使って、データの表示方法を学んでいきましょう!

▲ ページトップへ戻る

コメント

タイトルとURLをコピーしました