Pandas:Pythonでデータ解析を効率的に行うためのライブラリ

Pandasは、Pythonでデータ操作や分析を行うための強力なライブラリです。特に、表形式のデータ(データフレーム)の操作を簡単にするためのツールセットを提供しています。データサイエンス、機械学習、統計分析などの分野で広く使用されています。

Pandasとは

Pandasは、Pythonでデータ操作および分析を行うための強力なライブラリです。特にデータフレームというデータ構造を提供しており、大量のデータを簡単に操作するための豊富な機能を備えています。

インストール

まず、Pandasを使用するには、ライブラリをインストールする必要があります。以下のコマンドを使用します:

pip install pandas

データフレームの作成

Pandasの基本的な機能は、データフレームの作成です。データフレームは、行と列からなる2次元のデータ構造です。リスト、辞書、または他のデータソースからデータフレームを作成できます。

import pandas as pd

# 辞書からデータフレームを作成
data = {
    "名前": ["Alice", "Bob", "Charlie"],
    "年齢": [25, 30, 35],
    "都市": ["New York", "Los Angeles", "Chicago"]
}

df = pd.DataFrame(data)
print("データフレーム:\n", df)

結果

データフレーム:
   名前     年齢    都市
0    Alice  25     New York
1      Bob  30  Los Angeles
2  Charlie  35      Chicago

データの読み込みと書き込み

Pandasは、CSV、Excel、SQLデータベースなど、さまざまなデータソースからデータを読み込むことができます。また、データをこれらのフォーマットで保存することもできます。

import pandas as pd

# CSVファイルからデータを読み込む
df = pd.read_csv("data.csv")
print("CSVから読み込んだデータ:\n", df)

# データフレームをCSVファイルに書き込む
df.to_csv("output.csv", index=False)

結果

CSVから読み込んだデータ:
         名前  年齢           都市
0    Alice  25     New York
1      Bob  30  Los Angeles
2  Charlie  35      Chicago

データの操作

Pandasでは、データのフィルタリング、選択、グループ化、集計、結合などの操作が簡単に行えます。

import pandas as pd

# 辞書からデータフレームを作成
data = {
    "名前": ["Alice", "Bob", "Charlie", "hiroshi", "akira", "kaoru"],
    "年齢": [25, 30, 35, 46, 35, 54],
    "都市": ["New York", "Los Angeles", "Chicago", "New York", "Los Angeles", "Chicago"]
}

df = pd.DataFrame(data)

# データのフィルタリング
filtered_df = df[df["年齢"] > 30]
print("年齢が30以上のフィルタリング:\n", filtered_df)

# 特定の列を選択
selected_columns = df[["名前", "都市"]]
print("名前と都市の列を選択:\n", selected_columns)

# データのグループ化と集計
grouped_df = df.groupby("都市")[["年齢"]].mean()
print("都市ごとの平均年齢:\n", grouped_df)

# データの結合
df1 = pd.DataFrame({"名前": ["Alice", "Bob"], "スコア": [85, 90]})
df2 = pd.DataFrame({"名前": ["Alice", "Bob"], "年齢": [25, 30]})
merged_df = pd.merge(df1, df2, on="名前")
print("結合されたデータフレーム:\n", merged_df)

結果

年齢が30以上のフィルタリング:
         名前  年齢           都市
2  Charlie  35      Chicago
3  hiroshi  46     New York
4    akira  35  Los Angeles
5    kaoru  54      Chicago
名前と都市の列を選択:
         名前           都市
0    Alice     New York
1      Bob  Los Angeles
2  Charlie      Chicago
3  hiroshi     New York
4    akira  Los Angeles
5    kaoru      Chicago
都市ごとの平均年齢:
                年齢
都市               
Chicago      44.5
Los Angeles  32.5
New York     35.5
結合されたデータフレーム:
       名前  スコア  年齢
0  Alice   85  25
1    Bob   90  30

データのクリーニング

Pandasは、欠損値の処理や重複データの削除など、データのクリーニング機能も提供しています。

import pandas as pd

# 辞書からデータフレームを作成
data = {
    "名前": ["Alice", "Bob", "Charlie", "Alice", "akira", "kaoru"],
    "年齢": [25, 30, 35, 25, 54],
    "都市": ["New York", "Los Angeles", "Chicago", "New York", "Los Angeles", "Chicago"]
}

df = pd.DataFrame(data)

# 欠損値の処理
df["年齢"].fillna(df["年齢"].mean(), inplace=True)
print("欠損値を平均値で埋める:\n", df)

# 重複データの削除
df.drop_duplicates(inplace=True)
print("重複データを削除:\n", df)

結果

欠損値を平均値で埋める:
         名前  年齢           都市
0    Alice  25     New York
1      Bob  30  Los Angeles
2  Charlie  35      Chicago
3    Alice  25     New York
4    akira  45  Los Angeles
5    kaoru  35      Chicago
重複データを削除:
         名前  年齢           都市
0    Alice  25     New York
1      Bob  30  Los Angeles
2  Charlie  35      Chicago
4    akira  45  Los Angeles
5    kaoru  35      Chicago

実例

例題1: データの集計と可視化

以下の例では、Pandasを使用してデータを集計し、Matplotlibを使用して可視化します。

import pandas as pd
import matplotlib.pyplot as plt

# データフレームの作成
data = {
    "名前": ["Alice", "Bob", "Charlie", "David", "Edward"],
    "スコア": [85, 90, 78, 92, 88]
}
df = pd.DataFrame(data)

# スコアの平均を計算
mean_score = df["スコア"].mean()
print("平均スコア:", mean_score)

# スコアのヒストグラムをプロット
df["スコア"].plot(kind="hist", bins=5, alpha=0.7)
plt.xlabel("スコア")
plt.ylabel("頻度")
plt.title("スコアのヒストグラム")
plt.show()

結果

例題2: 時系列データの操作

以下の例では、Pandasを使用して時系列データを操作します。

import pandas as pd

# 日付範囲の作成
date_range = pd.date_range(start="2022-01-01", end="2022-01-10")

# ランダムなデータの作成
data = {"値": np.random.randn(len(date_range))}
df = pd.DataFrame(data, index=date_range)
print("時系列データ:\n", df)

# 移動平均の計算
df["移動平均"] = df["値"].rolling(window=3).mean()
print("移動平均を追加:\n", df)

結果

時系列データ:
                値
2022-01-01 -0.855184
2022-01-02  0.476021
2022-01-03 -0.430998
2022-01-04 -0.834199
2022-01-05  1.054189
2022-01-06  0.784159
2022-01-07 -0.789507
2022-01-08 -0.569519
2022-01-09  0.388658
2022-01-10 -0.384353
移動平均を追加:
                値      移動平均
2022-01-01 -0.855184       NaN
2022-01-02  0.476021       NaN
2022-01-03 -0.430998 -0.270054
2022-01-04 -0.834199 -0.263059
2022-01-05  1.054189 -0.070336
2022-01-06  0.784159  0.334716
2022-01-07 -0.789507  0.349614
2022-01-08 -0.569519 -0.191622
2022-01-09  0.388658 -0.323456
2022-01-10 -0.384353 -0.188405
タイトルとURLをコピーしました