PandasとPythonリストを相互変換!DataFrame・Seriesを使いこなす基本 ↔️


 

Pandasでデータ分析を行う際、DataFrameSeriesといったPandas独自のデータ構造と、Python標準の**リスト(list)**の間でデータをやり取りする場面は頻繁に発生します。例えば、外部から取得したリストデータをPandasで分析したい、あるいはPandasで処理した結果をリスト形式で別のシステムに渡したい、といったケースです。

この記事では、PandasのDataFrameSeries、そしてPythonのリストをスムーズに相互変換する方法を、具体的なコード例を交えながら詳しく解説します。


 

PandasとPythonリスト、それぞれの特徴をおさらい 📚

 

相互変換の前に、それぞれのデータ構造の基本的な特徴を確認しておきましょう。

 

Pythonリスト:柔軟な汎用コンテナ

 

Pythonのリストは、順序付けられた要素の集まりであり、異なるデータ型の要素を格納できます。非常に柔軟で、データの追加・削除が容易な汎用的なデータ構造です。

Python
 
# Pythonリストの例
my_list = [1, 'apple', 3.14, True]
print(f"Pythonリスト: {my_list}")
print(f"型: {type(my_list)}")

 

Pandas Series:1次元のラベル付き配列

 

Pandasの**Series**は、1次元のラベル付き配列で、単一のデータ型の要素を効率的に扱います。各要素にはインデックスが自動的に付与されます。

Python
 
import pandas as pd

# Seriesの例
my_series = pd.Series([10, 20, 30], name='売上')
print("\n--- Pandas Series ---")
print(my_series)
print(f"型: {type(my_series)}")

 

Pandas DataFrame:2次元の表形式データ構造

 

Pandasの**DataFrame**は、複数の列と行を持つ2次元の表形式データ構造です。各列はSeriesの集まりと考えることができ、列ごとに異なるデータ型を持つことができます。

Python
 
import pandas as pd

# DataFrameの例
my_df = pd.DataFrame({
    '名前': ['Alice', 'Bob'],
    '年齢': [25, 30]
})
print("\n--- Pandas DataFrame ---")
print(my_df)
print(f"型: {type(my_df)}")

 

Pythonリスト ➡️ Pandasへの変換 ⬆️

 

PythonのリストからSeriesDataFrameを作成する方法を見ていきましょう。

 

1. リストからSeriesへの変換

 

最も簡単で直接的な変換です。リストをpd.Series()のコンストラクタに渡すだけです。

Python
 
import pandas as pd

my_list_data = [100, 200, 300]
s = pd.Series(my_list_data)
print("--- リストからSeriesへ ---")
print(s)

 

2. リストからDataFrameへの変換

 

リストの形式によって、DataFrameの作成方法が変わります。

 

a. 辞書のリストからDataFrameへ (推奨)

 

各辞書が1つの行を表し、辞書のキーが列名になるため、最も直感的で推奨される方法です。

Python
 
import pandas as pd

list_of_dicts = [
    {'名前': 'Alice', '年齢': 25},
    {'名前': 'Bob', '年齢': 30}
]
df_from_list_dicts = pd.DataFrame(list_of_dicts)
print("\n--- 辞書のリストからDataFrameへ ---")
print(df_from_list_dicts)

 

b. リストのリストからDataFrameへ

 

各内側のリストが1つの行を表します。この場合、columns引数で列名を指定する必要があります。

Python
 
import pandas as pd

list_of_lists = [
    ['Alice', 25, 'Tokyo'],
    ['Bob', 30, 'Osaka']
]
df_from_list_lists = pd.DataFrame(list_of_lists, columns=['名前', '年齢', '都市'])
print("\n--- リストのリストからDataFrameへ ---")
print(df_from_list_lists)

 

Pandas ➡️ Pythonリストへの変換 ⬇️

 

SeriesDataFrameからPythonリストに変換する方法を見ていきましょう。

 

1. Seriesからリストへの変換:.tolist()

 

SeriesのデータをPythonリストに変換するには、.tolist()メソッドを使うのが最も簡潔です。

Python
 
import pandas as pd

s = pd.Series([10, 20, 30], name='売上')
list_from_series = s.tolist()
print("--- Seriesからリストへ ---")
print(list_from_series)
print(f"型: {type(list_from_series)}")

 

2. DataFrameからリストへの変換

 

DataFrameからリストへの変換は、どのようにリスト化したいかによって方法が異なります。

 

a. 特定の列(Series)をリストに変換

 

DataFrameから目的の列をSeriesとして選択し、そのSeriesに対して.tolist()を適用します。

Python
 
import pandas as pd

df = pd.DataFrame({
    '名前': ['Alice', 'Bob'],
    '年齢': [25, 30]
})

names_list = df['名前'].tolist()
print("\n--- DataFrameの特定の列をリストへ ---")
print(names_list)

 

b. 各行を辞書のリストに変換:.to_dict(orient='records')

 

DataFrameの各行を1つの辞書として扱い、それらをまとめたリストに変換します。Web APIへのデータ送信などで非常に便利です。

Python
 
import pandas as pd

df = pd.DataFrame({
    '名前': ['Alice', 'Bob'],
    '年齢': [25, 30]
})

list_of_row_dicts = df.to_dict(orient='records')
print("\n--- DataFrameを辞書のリストへ ---")
print(list_of_row_dicts)
# 出力例: [{'名前': 'Alice', '年齢': 25}, {'名前': 'Bob', '年齢': 30}]

 

c. 各行をリストのリストに変換:.values.tolist()

 

DataFrameの各行を1つのリストとして扱い、それらをまとめたリストに変換します。

Python
 
import pandas as pd

df = pd.DataFrame({
    '名前': ['Alice', 'Bob'],
    '年齢': [25, 30]
})

list_of_row_lists = df.values.tolist()
print("\n--- DataFrameをリストのリストへ ---")
print(list_of_row_lists)
# 出力例: [['Alice', 25], ['Bob', 30]]

 

まとめ

 

PandasのDataFrameSeriesとPythonのリストを相互に変換する能力は、データ分析ワークフローにおける柔軟性を大きく高めます。

  • PythonリストからPandasへ:

    • リスト ➡️ Series: pd.Series(my_list)

    • 辞書のリスト ➡️ DataFrame: pd.DataFrame(list_of_dicts)

    • リストのリスト ➡️ DataFrame: pd.DataFrame(list_of_lists, columns=...)

  • PandasからPythonリストへ:

    • Series ➡️ リスト: my_series.tolist()

    • DataFrameの列 ➡️ リスト: df['col_name'].tolist()

    • DataFrame全体 ➡️ 辞書のリスト: df.to_dict(orient='records')

    • DataFrame全体 ➡️ リストのリスト: df.values.tolist()

これらの変換テクニックをマスターすることで、PandasとPythonの強力な機能を最大限に活用し、よりスムーズで効率的なデータ処理が可能になるでしょう。