Pandas入門【データ分析ライブラリ三種の神器②】


## はじめに
データ分析ライブラリ三種の神器である「Numpy」「Pandas」「Matplotlib」についての入門記事です。[ソースコードはこちら](https://github.com/Isaka-code/data_analysis_three_library)

[Numpy入門【データ分析ライブラリ三種の神器①】](https://qiita.com/Isaka-code/items/bafda2c42f0b6211da9d)
[Pandas入門【データ分析ライブラリ三種の神器②】](https://qiita.com/Isaka-code/items/fa99547c4b697a5c4697)
[Matplotlib入門【データ分析ライブラリ三種の神器③】](https://qiita.com/Isaka-code/items/c371b76ca337ceb10df9)

Pandasは、Pythonでデータ解析を行うための強力なライブラリです。主に2種類のデータ構造である`Series`と`DataFrame`を提供し、データの操作や変換が容易になります。

## 1. インストールとインポート

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

```
pip install pandas
```

インストールが完了したら、Pandasをインポートします。

```python
import pandas as pd
```

## 2. Series

`Series`は、Pandasで提供される1次元のデータ構造です。リストや辞書を使って簡単に作成できます。

```python
data = [1, 2, 3, 4, 5]
s = pd.Series(data)
print(s)
```

出力:

```
0    1
1    2
2    3
3    4
4    5
dtype: int64
```

## 3. DataFrame

`DataFrame`は、Pandasで提供される2次元のデータ構造で、表形式のデータを扱うのに適しています。リストや辞書を使って作成できます。

```python
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)
print(df)
```

出力:

```
   A  B  C
0  1  4  7
1  2  5  8
2  3  6  9
```

## 4. CSVファイルの読み込みと書き込み

Pandasを使用して、CSVファイルを簡単に読み込んだり書き込んだりできます。

### 4.1 CSVファイルの読み込み

```python
df = pd.read_csv('sample.csv')
print(df)
```

### 4.2 CSVファイルへの書き込み

```python
df.to_csv('output.csv', index=False)
```

## 5. データの選択と操作

### 5.1 カラムの選択

```python
col_A = df['A']
print(col_A)
```

### 5.2 行の選択

```python
row_1 = df.loc[1]
print(row_1)
```

### 5.3 条件による選択

```python
filtered_df = df[df['A'] > 1]
print(filtered_df)
```

## 6. データの統計情報

Pandasを使用すると、データの統計情報を簡単に取得できます。以下に一部の統計情報の取得方法を紹介します。

### 6.1 基本的な統計情報

```python
stats = df.describe()
print(stats)
```

### 6.2 平均値

```python
mean = df.mean()
print(mean)
```

### 6.3 中央値

```python
median = df.median()
print(median)
```

### 6.4 最大値・最小値

```python
max_value = df.max()
min_value = df.min()
print(max_value)
print(min_value)
```

## 7. データの欠損値処理

データに欠損値が含まれている場合、それを処理する必要があります。Pandasでは、欠損値の検出や処理が容易にできます。

### 7.1 欠損値の検出

```python
missing_values = df.isnull()
print(missing_values)
```

### 7.2 欠損値の削除

```python
df_dropna = df.dropna()
print(df_dropna)
```

### 7.3 欠損値の補完

```python
df_filled = df.fillna(value=0)
print(df_filled)
```

## 8. データの結合と整形

Pandasでは、複数のデータフレームを結合したり、データを整形することが容易にできます。

### 8.1 データフレームの結合（横方向）

```python
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12]})
df_concat = pd.concat([df1, df2], axis=1)
print(df_concat)
```

### 8.2 データフレームの結合（縦方向）

```python
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [7, 8, 9], 'B': [10, 11, 12]})
df_concat = pd.concat([df1, df2], axis=0)
print(df_concat)
```

### 8.3 データフレームのマージ

```python
left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                     'A': ['A0', 'A1', 'A2', 'A3'],
                     'B': ['B0', 'B1', 'B2', 'B3']})

right = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                      'C': ['C0', 'C1', 'C2', 'C3'],
                      'D': ['D0', 'D1', 'D2', 'D3']})

merged = pd.merge(left, right, on='key')
print(merged)
```

### 8.4 ピボットテーブルの作成

```python
data = {'A': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'],
        'B': ['one', 'one', 'two', 'two', 'one', 'one'],
        'C': ['x', 'y', 'x', 'y', 'x', 'y'],
        'D': [1, 2, 3, 4, 5, 6]}

df = pd.DataFrame(data)

pivot_table = df.pivot_table(values='D', index=['A', 'B'], columns=['C'])
print(pivot_table)
```

これで、Pandasの基本的な使い方を一通り紹介しました。実際のデータ解析では、これらの機能を組み合わせてデータを操作・分析します。Pandasは非常に柔軟で強力なライブラリであるため、ぜひ活用してみてください。

[Numpy入門【データ分析ライブラリ三種の神器①】](https://qiita.com/Isaka-code/items/bafda2c42f0b6211da9d)
[Pandas入門【データ分析ライブラリ三種の神器②】](https://qiita.com/Isaka-code/items/fa99547c4b697a5c4697)
[Matplotlib入門【データ分析ライブラリ三種の神器③】](https://qiita.com/Isaka-code/items/c371b76ca337ceb10df9)