PandasとPythonリストを相互変換!DataFrame・Seriesを使いこなす基本 ↔️
Pandasでデータ分析を行う際、DataFrameやSeriesといったPandas独自のデータ構造と、Python標準の**リスト(list)**の間でデータをやり取りする場面は頻繁に発生します。例えば、外部から取得したリストデータをPandasで分析したい、あるいはPandasで処理した結果をリスト形式で別のシステムに渡したい、といったケースです。
この記事では、PandasのDataFrameとSeries、そしてPythonのリストをスムーズに相互変換する方法を、具体的なコード例を交えながら詳しく解説します。
Pandasと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次元のラベル付き配列で、単一のデータ型の要素を効率的に扱います。各要素にはインデックスが自動的に付与されます。
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の集まりと考えることができ、列ごとに異なるデータ型を持つことができます。
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のリストからSeriesやDataFrameを作成する方法を見ていきましょう。
1. リストからSeriesへの変換
最も簡単で直接的な変換です。リストをpd.Series()のコンストラクタに渡すだけです。
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つの行を表し、辞書のキーが列名になるため、最も直感的で推奨される方法です。
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引数で列名を指定する必要があります。
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リストへの変換 ⬇️
SeriesやDataFrameからPythonリストに変換する方法を見ていきましょう。
1. Seriesからリストへの変換:.tolist()
SeriesのデータをPythonリストに変換するには、.tolist()メソッドを使うのが最も簡潔です。
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()を適用します。
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へのデータ送信などで非常に便利です。
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つのリストとして扱い、それらをまとめたリストに変換します。
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のDataFrame、Seriesと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の強力な機能を最大限に活用し、よりスムーズで効率的なデータ処理が可能になるでしょう。



