[便利ライブラリ]pandasをチャチャッと紹介

##はじめに
こんにちは！
前回の記事ではnumpyを紹介させてもらったのですが、今回紹介するのは**pandas**というライブラリです。
様々なライブラリがありすぎて初学者の方は難しく感じるかもしれませんが、pandasについてチャチャッと紹介していこうと思いますので「ふーん、こんな使い方するんだ」くらいの気持ちで読んでいただけたら嬉しいです！

##pandasってなんだ？

そもそもpandasとはなんなのか？
pandasは行列になっているデータを扱いやすい形にしたり、集計を行う時に使うライブラリです。エクセルのデータも[.csv]という形式で保存されているものならば、それをpandasで読み込んで複雑な処理を簡単に行うことができます。
そんな優れものを少しずつ学んでいきましょう！

##データの作り方
まずpandasでデータを作ってみます。

```python

import pandas as pd
from pandas import Series,DataFrame
import numpy as np


data = Series([1,2,3])
data

>>>   0    1
      1    2
      2    3
      dtype: int64
```
Seriesというのは1次元のデータを扱う時に使います。
今作った1次元データでもう少し色々してみましょう

```python

data.values

>>>array([1, 3, 5])

data.index

>>>RangeIndex(start=0, stop=3, step=1)
```

data.valuesで格納されている配列が取り出せて、data.indexでインデックスの確認ができます。この場合のインデックスは「0からスタートして3の手前（つまり2)まで1つずつ増える」という意味になります。

今度はデータだけでなくインデックスも思い通りのものにしていきます。

```python

data2 = Series([1,2,3,4,5],index = ["A","B","C","D","E"])
data2

 >>>A    1
    B    2
    C    3
    D    4
    E    5
    dtype: int64
```
このようなやり方でインデックスも編集できます。
わかりやすい形でデータを作りたい時に便利ですね！

でも、データは１次元のものだけではありません。
今度は2次元のデータの作り方も学んでいきます。

```python
frame = DataFrame(random.randn(25).reshape((5,5)),
                  index = ["A","B","C","D","E"],
                  columns =["n1","n2","n3","n4","n5"])
```
numpyを使って、randnで平均0,標準偏差1のデータ群を作り、それを5行5列にreshapeしています。
これをframeと入力して実行すると
![スクリーンショット 2019-05-17 22.03.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405324/578d3364-e04d-cd90-efd6-d7687405113a.png)
このような表が出来上がります。
見ての通り、数字は細かいですが表自体は整理されたものが出来上がります。
A,B,C,,,のような行名を**インデックス**、n1,n2,n3,,,のような列名を**カラム**と呼ぶので、覚えておきましょう！

こうして作ったデータフレームに変更を加えたい時も出てくると思います。
次の章ではその方法を紹介していきます。

##データに変更を加えよう

それでは先ほど作ったデータをちょっと変更してみましょう

```python
new_index = ["A","B","C","D","E","F"]
frame.reindex(new_index)
```
これでframeを出力すると
![スクリーンショット 2019-05-17 22.11.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405324/08827d0c-8314-8cae-ca7f-d50a3bbccd3a.png)
このようにFという行が追加されます。NaNはデータが入っていないことを意味します。
このFという行に左端から1、2、3、4、5というデータを入れていきましょう。

```python
frame.loc["F"] = [1,2,3,4,5]
```
これでデータが変わったか確認してみます。
![スクリーンショット 2019-05-17 22.28.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405324/9d8cd3a6-4d93-e74b-b77b-9dbbbeaf7745.png)
ちゃんと変わっていますね。
次はカラムとデータを追加してみます。

```python

frame["n6"] = [1,2,3,4,5,6]
```
すると
![スクリーンショット 2019-05-17 22.31.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405324/b765439a-f89a-4c5d-9dfe-dd50545c02a6.png)
こんな風にカラムとデータが追加されているのがわかりますね。

データを追加したい時があれば、データを削除したい時もあります。そんな時は

```python

frame.drop("A")#行方向にデータを削除
frame.drop("n1",axis = 1)#列方向に削除したい時はaxis=1を追加
```
これで削除できます。

#データを整理する
さっきまで扱っていたデータはすごくデタラメに作ったデータなので、今度はデータを整理する方法を学びましょう。

```python

frame.sort_values(["n1"])
```
これでn1の列を数が小さい順に上から並び替えることができます。
![スクリーンショット 2019-05-17 22.44.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405324/679376c6-25de-1f06-e59a-e786f2aa3a07.png)

今度はデータ全体の情報を見ていきましょう。

```python
frame.describe()
```
これでデータの統計的な情報が確認できます。
![スクリーンショット 2019-05-17 22.46.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405324/af8968a8-d35c-8ea1-10fa-66382d161294.png)
各カラムごとの最大値や最小値、平均値や標準偏差が確認できます。
とてつもなく巨大なデータでも一発で情報が確認できるのでとても便利です！

###終わりに
いかがだったでしょうか？

今回紹介したもの以外にもpandasの便利の機能がたくさんあります。この記事で紹介しているのはほんの一握りです。
タイトルにある通り「チャチャッと」ご紹介したので、この記事でpandasに興味を持ってくれた人が独学でどんどん学ぶことに繋げられたら幸いです。

最後に、医学生である僕が所属しているツカザキ病院眼科AIチームのページも見ていただけたら幸いです！ぜひご覧ください！
[ツカザキ病院眼科AIチーム DeepOculus](https://qiita.com/organizations/deepoculus)

では、また次の記事で！