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


初めに

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

  • pandas バージョン
    • 1.0.5

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

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ファイル読み込み

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ファイル読み込み(インデックス指定あり)

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

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

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

axes

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

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の列名を返します。

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

dtypes

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

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が空かどうかを示します。

print(df.empty)
False

iat

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

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

行名を返します。

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

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

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
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
print(df.loc[1876, '1月'])
6.6
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
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
print(df.loc[df.index < 1880, '1月'])
年
1876    6.6
1877    8.8
1878    7.2
1879    9.0
Name: 1月, dtype: float64

ndim

print(df.ndim)
2

shape

print(df.shape)
(145, 13)

size

145 × 13 = 1885

print(df.size)
1885

values

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

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. ]]

参考記事