Pandasによるデータフレームの操作
Pandasは、Pythonでデータ解析を行うための強力なライブラリで、特にデータフレーム(DataFrame)の操作に優れています。この章では、Pandasを使用したデータフレームの基本的な操作について学びます。データフレームの生成、列や行の操作、フィルタリング、集計などの基本的な操作方法を紹介します。
データフレームの生成
データフレームは、辞書、リスト、NumPy配列、CSVファイルなどから生成できます。以下に、基本的なデータフレーム生成の例を示します。
import pandas as pd
# 辞書からデータフレームを生成
data = {
'名前': ['田中', '佐藤', '鈴木'],
'年齢': [24, 30, 28],
'職業': ['エンジニア', 'デザイナー', 'データサイエンティスト']
}
df = pd.DataFrame(data)
# データフレームの表示
print(df)
コードの説明
pd.DataFrame
:辞書をデータフレームに変換します。data
:列名をキーとして、リストを値として持つ辞書です。df
:生成されたデータフレームです。
列の操作
データフレームの列に対して追加、削除、名前の変更などの操作が可能です。
import pandas as pd
# データフレームの生成
data = {
'名前': ['田中', '佐藤', '鈴木'],
'年齢': [24, 30, 28],
'職業': ['エンジニア', 'デザイナー', 'データサイエンティスト']
}
df = pd.DataFrame(data)
# 列の追加
df['年収'] = [500, 600, 550]
# 列の削除
df = df.drop('年収', axis=1)
# 列名の変更
df = df.rename(columns={'名前': '氏名'})
# データフレームの表示
print(df)
コードの説明
df['年収']
:新しい列を追加し、各行に年収のデータを追加します。df.drop
:指定した列を削除します。axis=1
は列を意味します。df.rename
:列名を変更します。
行の操作
行に対しても追加や削除が可能です。インデックスを指定して特定の行を操作します。
import pandas as pd
# データフレームの生成
data = {
'名前': ['田中', '佐藤', '鈴木'],
'年齢': [24, 30, 28],
'職業': ['エンジニア', 'デザイナー', 'データサイエンティスト']
}
df = pd.DataFrame(data)
# 行の追加
new_row = pd.DataFrame({'名前': ['山田'], '年齢': [26], '職業': ['マーケター']})
df = pd.concat([df, new_row], ignore_index=True)
# 行の削除(インデックスで削除)
df = df.drop(2)
# データフレームの表示
print(df)
コードの説明
pd.concat
:新しい行をデータフレームに追加します。ignore_index=True
でインデックスのリセットを行います。df.drop
:指定したインデックスの行を削除します。
データのフィルタリング
条件に基づいて、データフレームの行をフィルタリングできます。
import pandas as pd
# データフレームの生成
data = {
'名前': ['田中', '佐藤', '鈴木', '山田'],
'年齢': [24, 30, 28, 26],
'職業': ['エンジニア', 'デザイナー', 'データサイエンティスト', 'マーケター']
}
df = pd.DataFrame(data)
# 年齢が30以上の行をフィルタリング
filtered_df = df[df['年齢'] >= 30]
# データフレームの表示
print(filtered_df)
コードの説明
df[df['年齢'] >= 30]
:条件に基づいてデータフレームをフィルタリングします。ここでは年齢が30以上の行を抽出しています。
集計操作
データフレームの数値データに対して、集計操作を行うことが可能です。平均、合計、最小値、最大値などを計算できます。
import pandas as pd
# データフレームの生成
data = {
'名前': ['田中', '佐藤', '鈴木', '山田'],
'年齢': [24, 30, 28, 26],
'職業': ['エンジニア', 'デザイナー', 'データサイエンティスト', 'マーケター']
}
df = pd.DataFrame(data)
# 平均年齢を計算
mean_age = df['年齢'].mean()
# 最大年齢を取得
max_age = df['年齢'].max()
# 結果を表示
print(f'平均年齢: {mean_age}, 最大年齢: {max_age}')
コードの説明
df['年齢'].mean()
:年齢
列の平均値を計算します。df['年齢'].max()
:年齢
列の最大値を取得します。
まとめ
Pandasを使ったデータフレームの操作は、データ解析や処理において強力なツールです。データフレームの生成、列や行の操作、データのフィルタリング、集計操作を通じて、データを効率的に処理できることを学びました。これらの基本的な操作をマスターすることで、より複雑なデータ処理を行う際にも柔軟に対応できます。