列を指定して取り出す
「International_football_results.csv」の列名date
を抽出する。
# 書き方1
print(df.date)
# 書き方2
print(df['date'])
0 1872-11-30 1 1873-03-08 2 1874-03-07 3 1875-03-06 4 1876-03-04 ... 39003 2018-06-04 39004 2018-06-04 39005 2018-06-04 39006 2018-06-04 39007 2018-06-04 Name: date, Length: 39008, dtype: object 0 1872-11-30 1 1873-03-08 2 1874-03-07 3 1875-03-06 4 1876-03-04 ... 39003 2018-06-04 39004 2018-06-04 39005 2018-06-04 39006 2018-06-04 39007 2018-06-04 Name: date, Length: 39008, dtype: object
df[['home_team', 'home_score', 'away_team', 'away_score']] かっこが二つ
home_team | home_score | away_team | away_score | |
---|---|---|---|---|
0 | Scotland | 0 | England | 0 |
1 | England | 4 | Scotland | 2 |
2 | Scotland | 2 | England | 1 |
3 | England | 2 | Scotland | 2 |
4 | Scotland | 3 | England | 0 |
… | … | … | … | … |
39003 | Italy | 1 | Netherlands | 1 |
39004 | Serbia | 0 | Chile | 1 |
39005 | Slovakia | 1 | Morocco | 2 |
39006 | Armenia | 0 | Moldova | 0 |
39007 | India | 3 | Kenya | 0 |
➡ データフレーム型から列を指定して抽出する方法:
1列の場合
- データ名.列名
- データ名[‘列名’]
複数列の場合
- データ名[[‘列名’,’列名’]]
行を指定して取り出す
# 1. 先頭から5行目
df[:5]
# df.head()と同じ
date | home_team | away_team | home_score | away_score | tournament | city | country | neutral | |
---|---|---|---|---|---|---|---|---|---|
0 | 1872-11-30 | Scotland | England | 0 | 0 | Friendly | Glasgow | Scotland | False |
1 | 1873-03-08 | England | Scotland | 4 | 2 | Friendly | London | England | False |
2 | 1874-03-07 | Scotland | England | 2 | 1 | Friendly | Glasgow | Scotland | False |
3 | 1875-03-06 | England | Scotland | 2 | 2 | Friendly | London | England | False |
4 | 1876-03-04 | Scotland | England | 3 | 0 | Friendly | Glasgow | Scotland | False |
# 2. 5-10行目(0行目が存在する)
df[5:11] 5は入るが、11は入らない。 0スタート
# 3. 2の先頭から3行
df2 = df[5:11]
df2[:3]
特定の行なら
df.loc[3]
特定の行と列なら
df.loc[3,["Life_Male"]] →リストで指定する
特定の範囲の抽出 3~5行目の場合
df.loc[2:4,["Life_Female", "Life_Male"]] 0スタートで、最後の4も含まれる(loc特有の決まり)
まとめ
➡ データフレーム型から列を指定して抽出する方法:
- df[n:]で
n
以上の行を全て抽出する - df[:n]で
n
未満の行を全て抽出する - df[n1:n2]で
n1
以上n2
未満に当てはまる行を抽出する - df[-n:]で末尾からn行抽出する
省略した方法
# 先頭から5行
df[:5]
# 39000から末尾まで
df[39000:]
- スライスの記法は [開始値 : 終了値]
- 開始値を省略するとインデックスの最小値が入る
- 終了値を省略するとインデックスの最大値が入る
マイナス方法
# 一番末尾の行
df[-5:]
解説
- スライスのインデックスは2種類存在している
- 行の先頭に0を割り振り下へ1ずつ増えていくプラスパターン
- 行の末尾に-1を割り振り上へ1ずつ減っていくマイナスパターン
例えを以下に示す。
行名がアルファベット(A~E)でつけられている表があるとする。
その時、インデックスのプラスパターンとマイナスパターンは以下のように割り振られる。
行名 | + | ー |
---|---|---|
A | 0 | -5 |
B | 1 | -4 |
C | 2 | -3 |
D | 3 | -2 |
E | 4 | -1 |
まとめ:列を指定して抽出する方法
- df[:n]で
n
未満の行を全て抽出する - df[n:]で
n
以上の行を全て抽出する - df[-n:]で末尾からn行抽出する
# 解答例
df[-10:-4]
他には
df2=df[-10:]
df2[0:6]
「International_football_results.csv」の後ろから数えて10行目から5行目までの計6行を出力しよう。
コメント