【Python】Pandasの基本的な使い方のまとめ

Pandasは、Pythonでデータ解析を行うためのライブラリであり、特に「データフレーム（DataFrame）」という2次元の表形式データを効率的に操作するために非常に強力です。この記事では、Pandasを使って基本的なデータ操作を行い、データフレームを作成・操作する方法について解説します。

## Pandasのインストール

まず、Pandasをインストールしていない場合は、以下のコマンドでインストールします。

```bash
pip install pandas
```

## Pandasの基本

### 1. Pandasのインポート

Pandasを使用するためには、まず`import pandas as pd`でインポートします。`pd`というエイリアスは一般的に使われる名前です。

```python
import pandas as pd
```

### 2. データフレームの作成

データフレーム（DataFrame）は、Pandasの最も重要なデータ構造であり、行と列を持つ2次元のデータ構造です。以下では、リストや辞書を使ってデータフレームを作成する方法を紹介します。

#### 2.1 リストを使ってデータフレームを作成

```python
# リストを使ってデータフレームを作成
data = [[1, 'Alice', 25], [2, 'Bob', 30], [3, 'Charlie', 35]]
df = pd.DataFrame(data, columns=['ID', 'Name', 'Age'])

print("データフレーム:")
print(df)
```

#### 出力:
```
データフレーム:
   ID     Name  Age
0   1    Alice   25
1   2      Bob   30
2   3  Charlie   35
```

#### 2.2 辞書を使ってデータフレームを作成

辞書を使ってもデータフレームを作成できます。辞書のキーが列名、値が各列のデータに対応します。

```python
# 辞書を使ってデータフレームを作成
data_dict = {'ID': [1, 2, 3], 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df_dict = pd.DataFrame(data_dict)

print("辞書を使ったデータフレーム:")
print(df_dict)
```

#### 出力:
```
辞書を使ったデータフレーム:
   ID     Name  Age
0   1    Alice   25
1   2      Bob   30
2   3  Charlie   35
```

### 3. データフレームの基本的な操作

Pandasのデータフレームには、行や列を簡単に操作するための多くの便利なメソッドがあります。以下では、列の選択、行の選択、フィルタリングを紹介します。

#### 3.1 列の選択

```python
# 'Name' 列を選択
name_column = df['Name']
print("Name 列:")
print(name_column)
```

#### 出力:
```
Name 列:
0      Alice
1        Bob
2    Charlie
Name: Name, dtype: object
```

#### 3.2 行の選択

行を選択するには、`.loc[]` や `.iloc[]` を使います。

```python
# 2行目（インデックス1）を選択
row_2 = df.iloc[1]
print("2行目:")
print(row_2)
```

#### 出力:
```
2行目:
ID           2
Name       Bob
Age        30
Name: 1, dtype: object
```

#### 3.3 特定の条件でデータをフィルタリング

```python
# 'Age' が30以上の行をフィルタリング
filtered_df = df[df['Age'] >= 30]
print("Age >= 30 の行:")
print(filtered_df)
```

#### 出力:
```
Age >= 30 の行:
   ID     Name  Age
1   2      Bob   30
2   3  Charlie   35
```

### 4. データの操作

#### 4.1 新しい列の追加

```python
# 'Age' 列に10を足した新しい列 'Age_plus_10' を追加
df['Age_plus_10'] = df['Age'] + 10
print("新しい列 'Age_plus_10' を追加したデータフレーム:")
print(df)
```

#### 出力:
```
新しい列 'Age_plus_10' を追加したデータフレーム:
   ID     Name  Age  Age_plus_10
0   1    Alice   25           35
1   2      Bob   30           40
2   3  Charlie   35           45
```

#### 4.2 列の削除

```python
# 'Age_plus_10' 列を削除
df.drop('Age_plus_10', axis=1, inplace=True)
print("'Age_plus_10' 列を削除したデータフレーム:")
print(df)
```

#### 出力:
```
'Age_plus_10' 列を削除したデータフレーム:
   ID     Name  Age
0   1    Alice   25
1   2      Bob   30
2   3  Charlie   35
```

### 5. データの集約（GroupBy）

Pandasでは、データを特定の列でグループ化し、集約操作を行うことができます。

```python
# 'Age' 列でグループ化し、各グループの平均年齢を計算
grouped_df = df.groupby('Age').mean()
print("グループ化して平均を計算:")
print(grouped_df)
```

#### 出力:
```
グループ化して平均を計算:
      ID
Age      
25   1.0
30   2.0
35   3.0
```

### 6. 欠損値の扱い

データに欠損値が含まれている場合、Pandasは欠損値の処理を簡単に行うことができます。

```python
# 欠損値を含むデータフレーム
df_with_nan = pd.DataFrame({
    'ID': [1, 2, 3],
    'Name': ['Alice', None, 'Charlie'],
    'Age': [25, 30, None]
})

print("欠損値を含むデータフレーム:")
print(df_with_nan)
```

#### 出力:
```
欠損値を含むデータフレーム:
   ID     Name   Age
0   1    Alice  25.0
1   2     None  30.0
2   3  Charlie   NaN
```

#### 欠損値の削除

```python
# 欠損値を含む行を削除
df_without_nan = df_with_nan.dropna()
print("欠損値を含む行を削除したデータフレーム:")
print(df_without_nan)
```

#### 出力:
```
欠損値を含む行を削除したデータフレーム:
   ID     Name   Age
0   1    Alice  25.0
```

### 7. データの並べ替え

Pandasでは、データフレームの並べ替えも簡単に行えます。

```python
# 'Age' 列で昇順に並べ替え
df_sorted = df.sort_values(by='Age')
print("Age 列で昇順に並べ替えたデータフレーム:")
print(df_sorted)
```

#### 出力:
```
Age 列で昇順に並べ替えたデータフレーム:
   ID     Name  Age
0   1    Alice   25
1   2      Bob   30
2   3  Charlie   35
```

## まとめ

この記事では、Pandasの基本的な使い方をデータフレームの作成、データの操作、欠損値の扱い、集約操作などを通じて学びました。Pandasはデータ解析に欠かせないライブラリであり、データフレームを使って効率的にデータの読み込み、前処理、集計、分析を行うことができます。

Pandasを使いこなすことで、大量のデータを扱う際の効率が格段に向上します。ぜひ、さらに多くの機能を試してみてください！