Python DataFrame 属性について覚え書き
初めに
月の最高気温の平均を使ってpandasのDataFrameで勉強したこと。属性について学んだ。
- pandas バージョン
- 1.0.5
データは以下のサイトから取得した。
年,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
行/列の名前のペアで単一の値を返します。
print(df.at[1876, '1月'])
6.6
行名と列名を唯一の要素として持っています。これらはこの順番で返されます。
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')]
DataFrameの列名を返します。
print(df.columns)
Index(['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月',
'12月', '年の値'],
dtype='object')
各列のデータ型を持つ 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'>
DataFrameが空かどうかを示します。
print(df.empty)
False
整数のペアに対応した行/列ペアの単一の値を返します。
print(df.iat[0, 0])
print(df.iat[1, 2])
6.6
11.3
インデックスで指定された行を返します。
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
行名を返します。
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)
行/列名または真偽値を要素にもつ配列で指定したグループを返します。
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
print(df.ndim)
2
print(df.shape)
(145, 13)
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. ]]
参考記事
Author And Source
この問題について(Python DataFrame 属性について覚え書き), 我々は、より多くの情報をここで見つけました https://qiita.com/quryu/items/a6b9dc211124448d3b68著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .