はじめに
Pandasは、Pythonでデータ処理を行うための強力なライブラリです。データフレームという表形式のデータ構造を扱うことができ、データの読み込み、加工、クリーニング、集計など、さまざまな操作を簡単に行うことができます。
この記事では、Pandasの基本的な仕組みと機能について詳しく解説します。
Pandasとは:ライブラリの概要と主な機能
Pandasは、データ分析や機械学習のためのPythonライブラリです。NumPyとともに使われることが多く、NumPyの配列を基にしてデータフレームという表形式のデータ構造を提供しています。
Pandasの主な機能は以下のとおりです。
- データフレームとシリーズの作成・操作
- データの結合・変換・クリーニング
- データの集計・統計処理
- データの可視化
データフレームとシリーズ:Pandasの基本的なデータ構造
Pandasの基本的なデータ構造は、データフレームとシリーズです。
データフレームは、行と列からなる2次元のデータを扱うための構造です。Excelのような表形式のデータを格納することができます。データフレームは、同じ長さの1次元配列やリストを要素として持つ辞書型のオブジェクトとして作成することができます。
import pandas as pd data = {'名前': ['太郎', '次郎', '花子', '三郎'], '年齢': [20, 25, 18, 30], '性別': ['男', '男', '女', '男']} df = pd.DataFrame(data) print(df)
上記のコードでは、辞書型のdataをデータフレームに変換しています。データフレームを表示すると、以下のような表形式のデータが表示されます。
名前 年齢 性別 0 太郎 20 男 1 次郎 25 男 2 花子 18 女 3 三郎 30 男
シリーズは、1次元のデータを扱うための構造です。データフレームの1列や1行をシリーズとして抽出することができます。
import pandas as pd data = {'名前': ['太郎', '次郎', '花子', '三郎'], '年齢': [20, 25, 18, 30], '性別': ['男', '男', '女', '男']} df = pd.DataFrame(data) age_series = df['年齢'] print(age_series)
上記のコードでは、データフレームdfから’年齢’列を抽出し、シリーズとして表示しています。
0 20 1 25 2 18 3 30 Name: 年齢, dtype: int64
データ操作の基本:データフレームの作成、読み込み、書き出し
データフレームを作成する方法はいくつかあります。辞書型のオブジェクトやCSVファイル、Excelファイルなどからデータを読み込んでデータフレームを作成することができます。
以下の例では、CSVファイルからデータを読み込んでデータフレームを作成しています。
import pandas as pd df = pd.read_csv('data.csv') print(df)
データフレームをCSVファイルとして書き出す場合は、to_csv()メソッドを使用します。
import pandas as pd df.to_csv('output.csv', index=False)
上記のコードでは、データフレームdfをCSVファイルとして書き出しています。index=Falseとすることで、行番号を出力しないようにしています。
データ加工・クリーニング:フィルタリング、並べ替え、欠損値処理など
データフレームの加工やクリーニングは、データのフィルタリングや並べ替え、欠損値の処理などを行うことができます。
以下の例では、’年齢’列が20歳以上のデータのみを抽出しています。
import pandas as pd data = {'名前': ['太郎', '次郎', '花子', '三郎'], '年齢': [20, 25, 18, 30], '性別': ['男', '男', '女', '男']} df = pd.DataFrame(data) filtered_df = df[df['年齢'] >= 20] print(filtered_df)
上記のコードでは、データフレームdfの’年齢’列の値が20以上の行のみを抽出しています。
名前 年齢 性別 0 太郎 20 男 1 次郎 25 男 3 三郎 30 男
欠損値の処理には、dropna()メソッドやfillna()メソッドを使用することができます。
以下の例では、欠損値が含まれる行を削除しています。
import pandas as pd data = {'名前': ['太郎', '次郎', '花子', '三郎'], '年齢': [20, None, 18, 30], '性別': ['男', '男', '女', '男']} df = pd.DataFrame(data) cleaned_df = df.dropna() print(cleaned_df)
上記のコードでは、欠損値が含まれる行を削除したデータフレームcleaned_dfを表示しています。
名前 年齢 性別 0 太郎 20.0 男 2 花子 18.0 女 3 三郎 30.0 男
集計・統計処理:グループ化、集約関数、統計量の算出
データフレームの集計や統計処理は、グループ化や集約関数、統計量の算出などを行うことができます。
以下の例では、’性別’列でグループ化し、’年齢’列の平均値を算出しています。
import pandas as pd data = {'名前': ['太郎', '次郎', '花子', '三郎'], '年齢': [20, 25, 18, 30], '性別': ['男', '男', '女', '男']} df = pd.DataFrame(data) grouped_df = df.groupby('性別')['年齢'].mean() print(grouped_df)
上記のコードでは、’性別’列でグループ化した後、’年齢’列の平均値を算出しています。
性別 女 18.0 男 25.0 Name: 年齢, dtype: float64
統計量の算出には、describe()メソッドを使用することができます。
import pandas as pd data = {'名前': ['太郎', '次郎', '花子', '三郎'], '年齢': [20, 25, 18, 30], '性別': ['男', '男', '女', '男']} df = pd.DataFrame(data) stats = df.describe() print(stats)
上記のコードでは、データフレームdfの統計量を算出しています。
年齢 count 4.000000 mean 23.250000 std 5.057997 min 18.000000 25% 19.500000 50% 22.500000 75% 26.250000 max 30.000000
まとめ
Pandasは、Pythonでデータ処理を行うための強力なライブラリです。データフレームとシリーズという基本的なデータ構造を使って、データの作成、読み込み、加工、クリーニング、集計などの操作を簡単に行うことができます。
この記事では、Pandasの基本的な仕組みと機能について解説しました。Pandasを使えば、データ処理の基本を習得することができますので、ぜひ活用してみてください。