Pandas: データフレームについて--01:   作成と保存

# データフレームって，みんなちゃんと理解していると思っているんだけど，念の為

## 1.　簡単なデータフレーム例の作成法

### 1．1．　方法1

辞書をデータフレームに変換する場合。


```python
import pandas as pd

df = pd.DataFrame({
    "a": [1, 2, 3, 4, 5],
    "b": ['a', 'b', 'a', 'b', 'b']
})

print(df)
```

       a  b
    0  1  a
    1  2  b
    2  3  a
    3  4  b
    4  5  b


実行環境によっては，print() を使うときと，単に名前を入力するときで，表現に違いがあることもある。

以下では，表示の簡略化のため print() を明示的に使うことにする。


```python
df
```




<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>a</th>
      <th>b</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>1</td>
      <td>a</td>
    </tr>
    <tr>
      <th>1</th>
      <td>2</td>
      <td>b</td>
    </tr>
    <tr>
      <th>2</th>
      <td>3</td>
      <td>a</td>
    </tr>
    <tr>
      <th>3</th>
      <td>4</td>
      <td>b</td>
    </tr>
    <tr>
      <th>4</th>
      <td>5</td>
      <td>b</td>
    </tr>
  </tbody>
</table>
</div>



### 1.2.　方法2

リストをデータフレームに変換する場合は，以下のようにする。`.T` は転置を意味する。


```python
df = pd.DataFrame(
    [["A", "A", "A", "A", "A", "B", "B", "B"],
    [2.3, 1.5, 2.4, 3.4, 1.1, 6.5, 3.1, 2.9],
    [1, 2, 3, 4, 5, 6, 7, 8]]
    ) .T

print(df)
```

       0    1  2
    0  A  2.3  1
    1  A  1.5  2
    2  A  2.4  3
    3  A  3.4  4
    4  A  1.1  5
    5  B  6.5  6
    6  B  3.1  7
    7  B  2.9  8





### 1.3.　方法3

既存の CSV ファイルを pd.read_csv でデータフレームとして読み込む。

以下では，'https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv' からデータを読み込んでいるが，通常は，ユーザのファイルから読み込む。


```python
iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
```

head メソッドは，データフレームの先頭から指定された行数（デフォルトは 5 行）を表す。`データフレーム名.head(行数)` で指定する。


```python
print(iris.head())
```

       sepal_length  sepal_width  petal_length  petal_width species
    0           5.1          3.5           1.4          0.2  setosa
    1           4.9          3.0           1.4          0.2  setosa
    2           4.7          3.2           1.3          0.2  setosa
    3           4.6          3.1           1.5          0.2  setosa
    4           5.0          3.6           1.4          0.2  setosa


ちなみに，末尾を表示するのはtail メソッドである。


```python
print(iris.tail(2))
```

         sepal_length  sepal_width  petal_length  petal_width    species
    148           6.2          3.4           5.4          2.3  virginica
    149           5.9          3.0           5.1          1.8  virginica


## 2.　データフレームの保存方法

作成したデータフレームや，編集したデータフレームを後々利用するために保存するのは，`to_csv()` メソッドである。

`データフレーム名.to_csv(ファイルパス)` のように指定する。

上で読み込んだ iris データフレームを，自分のコンピュータに保存して，後々はそこから読み込んで利用したいなら，以下のようにする。


```python
iris.to_csv("my-iris.csv")
```

上のようにフィル名だけを指定すると，その時点で有効なディレクトリ（デフォルトディレクトリ）に保存される。それで何の問題もないならよいのだが，明示的にパスを指定して保存すれば，間違いない。

いずれにせよ，（デフォルトディレクトリに）保存されたファイルをデータフレームに読み込むためには，前の通り pd.read_csv で読み込めばよい。

注意：read_csv の前は `pd.` であったり，`to_csv()` の前は `データフレーム名.` であったりして，戸惑うかもしれないがちゃんと指定を仕分けること。


```python
iris2 = pd.read_csv("my-iris.csv")
print(iris2.head(2))
```

       Unnamed: 0  sepal_length  sepal_width  petal_length  petal_width species
    0           0           5.1          3.5           1.4          0.2  setosa
    1           1           4.9          3.0           1.4          0.2  setosa


## 3．　もっと知りたい人

オンラインヘルプを見ましょう。ここでも，関数のようなものの前に指定するもの（class, funcion, method）が違うことに注意。

    help(pd.DataFrame) # Help on class DataFrame in module pandas.core.frame
    help(pd.read_csv)  # Help on function read_csv in module pandas.io.parsers.readers
    help(iris.to_csv)  # Help on method to_csv in module pandas.core.generic
    help(iris.head)    # Help on method head in module pandas.core.generic
    help(iris.tail)    # Help on method tail in module pandas.core.generic