pandas_Subset_Observations_(Rows)
import pandas as pd
import numpy as np
df = pd.DataFrame(
{"a" : [4 ,5, 6, 6, np.nan],
"b" : [7, 8, np.nan, 9, 9],
"c" : [10, 11, 12, np.nan, 12]},
index = pd.MultiIndex.from_tuples(
[('d',1),('d',2),('e',2),('e',3),('e',4)],
names=['n','v']))
df
a | b | c | ||
---|---|---|---|---|
n | v | |||
d | 1 | 4.0 | 7.0 | 10.0 |
2 | 5.0 | 8.0 | 11.0 | |
e | 2 | 6.0 | NaN | 12.0 |
3 | 6.0 | 9.0 | NaN | |
4 | NaN | 9.0 | 12.0 |
Subset Observations (Rows)
컬럼명에서 원하는 행 가져오기
df[df['a'] <= 5]
a | b | c | ||
---|---|---|---|---|
n | v | |||
d | 1 | 4.0 | 7.0 | 10.0 |
2 | 5.0 | 8.0 | 11.0 |
df[df['c'] >= 7]
a | b | c | ||
---|---|---|---|---|
n | v | |||
d | 1 | 4.0 | 7.0 | 10.0 |
2 | 5.0 | 8.0 | 11.0 | |
e | 2 | 6.0 | NaN | 12.0 |
4 | NaN | 9.0 | 12.0 |
df
a | b | c | ||
---|---|---|---|---|
n | v | |||
d | 1 | 4.0 | 7.0 | 10.0 |
2 | 5.0 | 8.0 | 11.0 | |
e | 2 | 6.0 | NaN | 12.0 |
3 | 6.0 | 9.0 | NaN | |
4 | NaN | 9.0 | 12.0 |
df = df.drop_duplicates(keep='last') #중복된 행 제거해줌
df
a | b | c | ||
---|---|---|---|---|
n | v | |||
d | 1 | 4.0 | 7.0 | 10.0 |
2 | 5.0 | 8.0 | 11.0 | |
e | 2 | 6.0 | NaN | 12.0 |
3 | 6.0 | 9.0 | NaN | |
4 | NaN | 9.0 | 12.0 |
df.head()
a | b | c | ||
---|---|---|---|---|
n | v | |||
d | 1 | 4.0 | 7.0 | 10.0 |
2 | 5.0 | 8.0 | 11.0 | |
e | 2 | 6.0 | NaN | 12.0 |
3 | 6.0 | 9.0 | NaN | |
4 | NaN | 9.0 | 12.0 |
df[df["b"] != 7] #7과 같지 않는 것만 가져온다
a | b | c | ||
---|---|---|---|---|
n | v | |||
d | 2 | 5.0 | 8.0 | 11.0 |
e | 2 | 6.0 | NaN | 12.0 |
3 | 6.0 | 9.0 | NaN | |
4 | NaN | 9.0 | 12.0 |
df['a'].isin([5]) #isin은 리스트 형태로 들어가야한다
n v
d 1 False
2 True
e 2 False
3 False
4 False
Name: a, dtype: bool
df.a.isin?
pd.isnull(df) #null 값 확인
a | b | c | ||
---|---|---|---|---|
n | v | |||
d | 1 | False | False | False |
2 | False | False | False | |
e | 2 | False | True | False |
3 | False | False | True | |
4 | True | False | False |
df['a'].isnull().sum()
1
pd.notnull(df) #널값 아닌 값 확인
a | b | c | ||
---|---|---|---|---|
n | v | |||
d | 1 | True | True | True |
2 | True | True | True | |
e | 2 | True | False | True |
3 | True | True | False | |
4 | False | True | True |
df.notnull().sum()
a 4
b 4
c 4
dtype: int64
df.a.notnull()
n v
d 1 True
2 True
e 2 True
3 True
4 False
Name: a, dtype: bool
Logic in Python (and pandas)
-
&, ,~,^,df.any(),df.all() - and, or, not, xor, any, all
df
a | b | c | ||
---|---|---|---|---|
n | v | |||
d | 1 | 4.0 | 7.0 | 10.0 |
2 | 5.0 | 8.0 | 11.0 | |
e | 2 | 6.0 | NaN | 12.0 |
3 | 6.0 | 9.0 | NaN | |
4 | NaN | 9.0 | 12.0 |
df[(df.b == 8) & (df.a == 5)]
a | b | c | ||
---|---|---|---|---|
n | v | |||
d | 2 | 5.0 | 8.0 | 11.0 |
df.sample(n=1) #특정 개수만큼 랜덤하게 샘플링 해옴
a | b | c | ||
---|---|---|---|---|
n | v | |||
e | 3 | 6.0 | 9.0 | NaN |
df
a | b | c | ||
---|---|---|---|---|
n | v | |||
d | 1 | 4.0 | 7.0 | 10.0 |
2 | 5.0 | 8.0 | 11.0 | |
e | 2 | 6.0 | NaN | 12.0 |
3 | 6.0 | 9.0 | NaN | |
4 | NaN | 9.0 | 12.0 |
df.iloc[-2:]
a | b | c | ||
---|---|---|---|---|
n | v | |||
e | 3 | 6.0 | 9.0 | NaN |
4 | NaN | 9.0 | 12.0 |
df = pd.DataFrame({'a':[1,10,8,11,-1],
'b': list('abdce'),
'c' : [1.0,2.0,np.nan,3.0,4.0]})
df
a | b | c | |
---|---|---|---|
0 | 1 | a | 1.0 |
1 | 10 | b | 2.0 |
2 | 8 | d | NaN |
3 | 11 | c | 3.0 |
4 | -1 | e | 4.0 |
df.nlargest(1,'a')
a | b | c | |
---|---|---|---|
3 | 11 | c | 3.0 |
df.nsmallest(3,'a')
a | b | c | |
---|---|---|---|
4 | -1 | e | 4.0 |
0 | 1 | a | 1.0 |
2 | 8 | d | NaN |