先頭X行 / 末尾X行
id name age type
1 A 21 aaa
2 B 37 bbb
3 C 44 ccc
4 D 30 bbb
5 E 18 ddd
6 F 53 ccc
7 G 7 fff
8 H 82 eee
id name age type
1 A 21 aaa
2 B 37 bbb
id name age type
7 G 7 fff
8 H 82 eee
先頭X行 / 末尾X行
df_a.head(5) / df_a.tail(5)
SELECT * FROM table_a (ORDER BY id)
LIMIT 5
DataFrameの先頭X行・末尾X行を取り出す。
それぞれdf_a[:5]やdf_a[-5:]と同じ意味。
SELECTした結果からX行分だけ取り出す。
DataFrameと違いテーブルには順序が無いため、
ORDER BYしないと取得結果が一意にならない!
大きさ / 列 / 行 / 型
id name age type
1 A 21 aaa
2 B 37 bbb
3 C 44 ccc
4 D 30 bbb
5 E 18 ddd
6 F 53 ccc
7 G 7 fff
8 H 82 eee
• 8行4列
• id列、name列、age列、type列
• id列が主キーで、値は1〜8
• id列とage列は整数型
• nameとtypeは文字列型
指定列・指定行だけ取り出し
id name age type
1 A 21 aaa
2 B 37 bbb
3 C 44 ccc
4 D 30 bbb
5 E 18 ddd
6 F 53 ccc
7 G 7 fff
8 H 82 eee
id name age type
5 E 18 ddd
6 F 53 ccc
name
A
B
C
D
E
F
G
H
条件を指定して抽出
id name age type
1 A 21 aaa
2 B 37 bbb
3 C 44 ccc
4 D 30 bbb
5 E 18 ddd
6 F 53 ccc
7 G 7 fff
8 H 82 eee
id name age type
1 A 21 aaa
4 D 30 bbb
5 E 18 ddd
7 G 7 fff
age≦30
df_a[df_a[’c_1’] > 5] df_a.query(‘c_1 < 20 and c_2
== 3’)
SELECT * FROM table_a WHERE c_1 20 AND
c_2 = 3
SQLの条件指定と言えばWHERE。
等値比較の書き方がちょい違うことに注意。
どちらも条件を指定して絞り込む構文。
queryメソッドを使うと複雑な条件も書きやすい。
queryだとpandas#evalで入力式が評価される。
条件を指定して抽出
重複行を排除
id name age type
1 A 21 aaa
2 G 7 fff
3 C 44 ccc
4 D 30 bbb
5 A 21 aaa
6 F 53 ccc
7 G 7 fff
8 C 44 ccc
id name age type
1 A 21 aaa
2 G 7 fff
3 C 44 ccc
4 D 30 bbb
6 F 53 ccc
ソート
id name age type
1 A 21 aaa
2 B 37 bbb
3 C 44 ccc
4 D 30 bbb
5 E 18 ddd
6 F 53 ccc
7 G 7 fff
8 H 82 eee
id name age type
1 A 21 aaa
2 B 37 bbb
4 D 30 bbb
3 C 44 ccc
6 F 53 ccc
5 E 18 ddd
8 H 82 eee
7 G 7 fff
df_a.sort_values(by=‘c_1’, ascending=False)
SELECT * FROM table_a ORDER BY c_1
DESC
こちらもデフォルトが昇順なので、降順にするには
「DESC」と明記する必要がある。
byには複数列を「[‘c_1’, ‘c_2’]」といった風に指定可能。
また、inplace=Trueとすると、破壊的変更も可能。
ascendingはデフォルト値がTrue(昇順)。
ソート
結合
name age
A 21
B 37
C 44
name type
B aaa
C fff
A ccc
C ddd
name type age
B aaa 37
C fff 44
A ccc 21
C ddd 44
df_a.merge(df_b, on=‘c_1’) pandas.concat([df_a,
df_b])
SELECT * FROM table_a INNER JOIN table_b ON
table_a.id=table_b.id
SELECT * FROM table_a UNION ALL SELECT * FROM
table_b
前者はINNER・OUTER・LEFT OUTER・RIGHT OUTERなど
から選べる。後者はUNIONだけにすると重複行が削除される。
前者は、指定したキーを元に2つのDataFrameを結合する。
結合方式はhow引数から指定でき、’inner’・’outer’・’left’・
’right’から選べる。後者は行 or 列方向に単純結合する。
結合