CSE 163
Groupby and Apply�
Suh Young Choi�
🎶 Listening to: Minecraft soundtrack
💬 Before Class: If you were a kitchen appliance, what would you be?
This Time
Last Time
2
Keyword Arguments
3
def div(a, b):
return a / b
# Same behavior
div(1, 2)
div(a=1, b=2)
div(b=2, a=1)
# Different behavior
div(b=1, a=2)
DataFrame
4
| id | year | month | day | latitude | longitude | name | magnitude |
0 | nc72666881 | 2016 | 7 | 27 | 37.672333 | -121.619000 | California | 1.43 |
1 | us20006i0y | 2016 | 7 | 27 | 21.514600 | 94.572100 | Burma | 4.90 |
2 | nc72666891 | 2016 | 7 | 27 | 37.576500 | -118.859167 | California | 0.06 |
Columns
Index (row)
Groupby Demo
| col1 | col2 |
0 | A | 1 |
1 | B | 2 |
2 | C | 3 |
3 | A | 4 |
4 | C | 5 |
A | 1 |
B | 2 |
C | 3 |
A | 4 |
C | 5 |
result = data.groupby(‘col1’)
Groupby Demo
| col1 | col2 |
0 | A | 1 |
1 | B | 2 |
2 | C | 3 |
3 | A | 4 |
4 | C | 5 |
A | 1 |
B | 2 |
C | 3 |
A | 4 |
C | 5 |
result = data.groupby(‘col1’)
A Groupby DataFrame
A |
C |
B |
Groupby Demo
B | 2 |
C | 8 |
A | 5 |
| col1 | col2 |
0 | A | 1 |
1 | B | 2 |
2 | C | 3 |
3 | A | 4 |
4 | C | 5 |
A | 1 |
B | 2 |
C | 3 |
A | 4 |
C | 5 |
result = data.groupby(‘col1’)[‘col2’].sum()
col2
.sum()
.sum()
.sum()
A |
C |
B |
Groupby Demo
| col1 | col2 |
0 | A | 1 |
1 | B | 2 |
2 | C | 3 |
3 | A | 4 |
4 | C | 5 |
A | 1 |
B | 2 |
C | 3 |
A | 4 |
C | 5 |
result = data.groupby(‘col1’)[‘col2’].sum()
col2
A | 5 |
B | 2 |
C | 8 |
result
A Series
A |
C |
B |
Groupby Demo
| col1 | col2 | col3 |
0 | A | 1 | 25.1 |
1 | B | 2 | 3.9 |
2 | C | 3 | 0.01 |
3 | A | 4 | 6.2 |
4 | C | 5 | 9.44 |
A | 1 | 25.1 |
result = data.groupby(‘col1’)[‘col2’].sum()
What if we had another column?
B | 2 | 3.9 |
C | 3 | 0.01 |
A | 4 | 6.2 |
C | 5 | 9.44 |
Groupby Demo
| col1 | col2 | col3 |
0 | A | 1 | 25.1 |
1 | B | 2 | 3.9 |
2 | C | 3 | 0.01 |
3 | A | 4 | 6.2 |
4 | C | 5 | 9.44 |
A | 1 | 25.1 |
result = data.groupby(‘col1’)[‘col2’].sum()
col2
What if we had another column?
B | 2 | 3.9 |
C | 3 | 0.01 |
A | 4 | 6.2 |
C | 5 | 9.44 |
col3
A |
C |
B |
Groupby Demo
| col1 | col2 | col3 |
0 | A | 1 | 25.1 |
1 | B | 2 | 3.9 |
2 | C | 3 | 0.01 |
3 | A | 4 | 6.2 |
4 | C | 5 | 9.44 |
A | 1 | 25.1 |
result = data.groupby(‘col1’)[‘col2’].sum()
col2
What if we had another column?
B | 2 | 3.9 |
C | 3 | 0.01 |
A | 4 | 6.2 |
C | 5 | 9.44 |
col3
A | 5 |
B | 2 |
C | 8 |
result
A |
C |
B |
Apply Demo
12
data['name'].apply(len)
| name |
0 | ‘word’ |
1 | ‘hi’ |
2 | ‘UW’ |
3 | ‘CSE163’ |
4 | ‘!!!’ |
Apply Demo
13
data['name'].apply(len)
| name |
0 | ‘word’ |
1 | ‘hi’ |
2 | ‘UW’ |
3 | ‘CSE163’ |
4 | ‘!!!’ |
len( )
Apply Demo
14
data['name'].apply(len)
| name |
0 | 4 |
1 | ‘hi’ |
2 | ‘UW’ |
3 | ‘CSE163’ |
4 | ‘!!!’ |
len( )
Apply Demo
15
data['name'].apply(len)
| name |
0 | 4 |
1 | 2 |
2 | ‘UW’ |
3 | ‘CSE163’ |
4 | ‘!!!’ |
len( )
Apply Demo
16
data['name'].apply(len)
| name |
0 | 4 |
1 | 2 |
2 | 2 |
3 | ‘CSE163’ |
4 | ‘!!!’ |
len( )
Apply Demo
17
data['name'].apply(len)
| name |
0 | 4 |
1 | 2 |
2 | 2 |
3 | 6 |
4 | ‘!!!’ |
len( )
Apply Demo
18
data['name'].apply(len)
| name |
0 | 4 |
1 | 2 |
2 | 2 |
3 | 6 |
4 | 3 |
len( )
Notes on Applying
19
def my_function(a: int, b: str) -> int:
return a + len(b)
data['name'].apply(my_function)
Before Next Time
Next Time
20