Python DataFrame 属性について覚え書き

# 初めに
月の最高気温の平均を使ってpandasのDataFrameで勉強したこと。属性について学んだ。

- pandas バージョン
    - 1.0.5

データは以下のサイトから取得した。

https://www.data.jma.go.jp/obd/stats/etrn/view/monthly_s3.php?prec_no=44&block_no=47662&year=2020&month=&day=&view=a2


```max_temperature.csv
年,1月,2月,3月,4月,5月,6月,7月,8月,9月,10月,11月,12月,年の値
1876,6.6,8.2,13.6,17.5,21.7,22.8,28.6,31.6,26.8,20.4,15.8,11.0,18.7
1877,8.8,8.8,11.3,19.1,21.5,26.0,31.0,30.5,25.8,21.3,14.4,10.2,19.1
1878,7.2,7.1,12.9,16.2,22.7,24.1,29.8,28.5,26.3,20.2,14.1,10.9,18.3
1879,9.0,10.9,13.0,17.1,21.9,25.2,30.4,31.1,25.4,19.4,15.7,14.0,19.4
1880,8.8,10.1,13.8,16.7,22.6,23.9,28.0,29.5,27.0,21.6,16.8,11.1,19.2
・・・
```




### csvファイル読み込み

```py
import pandas as pd

df = pd.read_csv('max_temperature.csv')
print(df)
```

```
        年    1月    2月    3月    4月    5月    6月    7月    8月    9月   10月   11月   12月   年の値
0    1876   6.6   8.2  13.6  17.5  21.7  22.8  28.6  31.6  26.8  20.4  15.8  11.0  18.7
1    1877   8.8   8.8  11.3  19.1  21.5  26.0  31.0  30.5  25.8  21.3  14.4  10.2  19.1
2    1878   7.2   7.1  12.9  16.2  22.7  24.1  29.8  28.5  26.3  20.2  14.1  10.9  18.3
3    1879   9.0  10.9  13.0  17.1  21.9  25.2  30.4  31.1  25.4  19.4  15.7  14.0  19.4
4    1880   8.8  10.1  13.8  16.7  22.6  23.9  28.0  29.5  27.0  21.6  16.8  11.1  19.2
..    ...   ...   ...   ...   ...   ...   ...   ...   ...   ...   ...   ...   ...   ...
140  2016  10.6  12.2  14.9  20.3  25.2  26.3  29.7  31.6  27.7  22.6  15.5  13.8  20.9
141  2017  10.8  12.1  13.4  19.9  25.1  26.4  31.8  30.4  26.8  20.1  16.6  11.1  20.4
142  2018   9.4  10.1  16.9  22.1  24.6  26.6  32.7  32.5  26.6  23.0  17.7  12.1  21.2
143  2019  10.3  11.6  15.4  19.0  25.3  25.8  27.5  32.8  29.4  23.3  17.7  12.6  20.9
144  2020  11.1  13.3  16.0  18.2  24.0  27.5  27.7  34.1  28.1  21.4  18.6  12.3  21.0

[145 rows x 14 columns]
```

### csvファイル読み込み（インデックス指定あり）

```py
df = pd.read_csv('max_temperature.csv', index_col='年')
print(df)
```

```
        1月    2月    3月    4月    5月    6月    7月    8月    9月   10月   11月   12月   年の値
年
1876   6.6   8.2  13.6  17.5  21.7  22.8  28.6  31.6  26.8  20.4  15.8  11.0  18.7
1877   8.8   8.8  11.3  19.1  21.5  26.0  31.0  30.5  25.8  21.3  14.4  10.2  19.1
1878   7.2   7.1  12.9  16.2  22.7  24.1  29.8  28.5  26.3  20.2  14.1  10.9  18.3
1879   9.0  10.9  13.0  17.1  21.9  25.2  30.4  31.1  25.4  19.4  15.7  14.0  19.4
1880   8.8  10.1  13.8  16.7  22.6  23.9  28.0  29.5  27.0  21.6  16.8  11.1  19.2
...    ...   ...   ...   ...   ...   ...   ...   ...   ...   ...   ...   ...   ...
2016  10.6  12.2  14.9  20.3  25.2  26.3  29.7  31.6  27.7  22.6  15.5  13.8  20.9
2017  10.8  12.1  13.4  19.9  25.1  26.4  31.8  30.4  26.8  20.1  16.6  11.1  20.4
2018   9.4  10.1  16.9  22.1  24.6  26.6  32.7  32.5  26.6  23.0  17.7  12.1  21.2
2019  10.3  11.6  15.4  19.0  25.3  25.8  27.5  32.8  29.4  23.3  17.7  12.6  20.9
2020  11.1  13.3  16.0  18.2  24.0  27.5  27.7  34.1  28.1  21.4  18.6  12.3  21.0

[145 rows x 13 columns]
```



# 属性

### at

>行/列の名前のペアで単一の値を返します。

```py
print(df.at[1876, '1月'])
```

```
6.6
```

### axes

>行名と列名を唯一の要素として持っています。これらはこの順番で返されます。

```py
print('axes')
print(df.axes)
```

```
[Int64Index([1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885,
            ...
            2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020],
           dtype='int64', name='年', length=145), Index(['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月',
       '12月', '年の値'],
      dtype='object')]

```

### columns

>DataFrameの列名を返します。

```py
print(df.columns)
```

```
Index(['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月',
       '12月', '年の値'],
      dtype='object')
```

### dtypes

>各列のデータ型を持つ Series を返します。

```py
print(df.dtypes)
print('type(df.dtypes): {}'.format(df.dtypes))
```

```
1月     float64
2月     float64
3月     float64
4月     float64
5月     float64
6月     float64
7月     float64
8月     float64
9月     float64
10月    float64
11月    float64
12月    float64
年の値    float64
dtype: object
type(df.dtypes): <class 'pandas.core.series.Series'>
```


### empty

>DataFrameが空かどうかを示します。

```py
print(df.empty)
```

```
False
```


### iat

>整数のペアに対応した行/列ペアの単一の値を返します。

```py
print(df.iat[0, 0])
print(df.iat[1, 2])
```

```
6.6
11.3
```


### iloc

>インデックスで指定された行を返します。

```
print(df.iloc[0])
```

```
1月      6.6
2月      8.2
3月     13.6
4月     17.5
5月     21.7
6月     22.8
7月     28.6
8月     31.6
9月     26.8
10月    20.4
11月    15.8
12月    11.0
年の値    18.7
Name: 1876, dtype: float64
```


### index

>行名を返します。

```py
print(df.index)
```

```
Int64Index([1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885,
            ...
            2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020],
           dtype='int64', name='年', length=145)
```


### loc

>行/列名または真偽値を要素にもつ配列で指定したグループを返します。

```py
print(df.loc[1876])
```

```
1月      6.6
2月      8.2
3月     13.6
4月     17.5
5月     21.7
6月     22.8
7月     28.6
8月     31.6
9月     26.8
10月    20.4
11月    15.8
12月    11.0
年の値    18.7
Name: 1876, dtype: float64
```

```py
print(df.loc[[1876, 1877]])
```

```
       1月   2月    3月    4月    5月    6月    7月    8月    9月   10月   11月   12月   年の値
年
1876  6.6  8.2  13.6  17.5  21.7  22.8  28.6  31.6  26.8  20.4  15.8  11.0  18.7
1877  8.8  8.8  11.3  19.1  21.5  26.0  31.0  30.5  25.8  21.3  14.4  10.2  19.1
```

```py
print(df.loc[1876, '1月'])
```

```
6.6
```

```py
print(df.loc[df.index < 1880])
```

```
       1月    2月    3月    4月    5月    6月    7月    8月    9月   10月   11月   12月   年の値
年
1876  6.6   8.2  13.6  17.5  21.7  22.8  28.6  31.6  26.8  20.4  15.8  11.0  18.7
1877  8.8   8.8  11.3  19.1  21.5  26.0  31.0  30.5  25.8  21.3  14.4  10.2  19.1
1878  7.2   7.1  12.9  16.2  22.7  24.1  29.8  28.5  26.3  20.2  14.1  10.9  18.3
1879  9.0  10.9  13.0  17.1  21.9  25.2  30.4  31.1  25.4  19.4  15.7  14.0  19.4
```

```py
df.loc[df.index < 1880] = 0
print(df.loc[df.index < 1880])
```

```
       1月   2月   3月   4月   5月   6月   7月   8月   9月  10月  11月  12月  年の値
年
1876  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
1877  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
1878  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
1879  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
```


```py
print(df.loc[df.index < 1880, '1月'])
```

```
年
1876    6.6
1877    8.8
1878    7.2
1879    9.0
Name: 1月, dtype: float64
```

### ndim

```py
print(df.ndim)
```

```
2
```

### shape

```py
print(df.shape)
```

```
(145, 13)
```


### size

145 × 13 = 1885

```py
print(df.size)
```

```
1885
```

### values

>DataFrameの値のみが返され、軸のラベルは削除されます。

```py
print(df.values)
```

```
[[ 6.6  8.2 13.6 ... 15.8 11.  18.7]
 [ 8.8  8.8 11.3 ... 14.4 10.2 19.1]
 [ 7.2  7.1 12.9 ... 14.1 10.9 18.3]
 ...
 [ 9.4 10.1 16.9 ... 17.7 12.1 21.2]
 [10.3 11.6 15.4 ... 17.7 12.6 20.9]
 [11.1 13.3 16.  ... 18.6 12.3 21. ]]
```


# 参考記事

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html

https://www.data.jma.go.jp/obd/stats/etrn/view/monthly_s3.php?prec_no=44&block_no=47662&year=2020&month=&day=&view=a2