Basic/Python
파이썬 - Pandas 2
HappyWeasel
2020. 6. 29. 11:16
조건으로 검색하기
- numpy array와 마찬가지로 masking 연산이 가능하다.
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.rand(5, 2), columns=["A", "B"])
print(df["A"] < 0.5)
'''
0 True
1 False
2 True
3 False
4 False
Name: A, dtype: bool
'''
- query를 사용하여 조회 가능
print((df["A"] < 0.5) & (df["B"] > 0.3))
'''
0 False
1 True
2 True
3 True
4 True
dtype: bool
'''
print(df.query("A < 0.5 and B > 0.3"))
'''
A B
1 0.185906 0.564301
2 0.338383 0.547486
3 0.146586 0.738687
4 0.469870 0.500198
'''
- 문자열이라면 다른 방식으로도 조검 검색이 가능하다.
df = pd.DataFrame(columns=["Animal","Name"])
df.loc[0] = ["Dog", "Happy"]
df.loc[1] = ["Cat", "Sam"]
df.loc[2] = ["Cat", "Toby"]
df.loc[3] = ["Pig", "Mini"]
df.loc[4] = ["Cat", "Rocky"]
print(df["Animal"].str.contains("Cat"))
'''
0 False
1 True
2 True
3 False
4 True
Name: Animal, dtype: bool
'''
print(df.Animal.str.match("Cat"))
'''
0 False
1 True
2 True
3 False
4 True
Name: Animal, dtype: bool
'''
함수로 데이터 처리
- apply를 통해서 함수로 데이터를 다룰 수 있다.
df = pd.DataFrame(np.arange(5), columns=["Nums"])
def square(x):
return x**2
df["Num"].apply(square)
df["Square"] = df.Num.apply(lambda x: x**2)
df = pd.DataFrame(columns=["phone"])
df.loc[0] = "공일0-일이34.1234"
def get_preprocess_phone(phone):
mapping_dict = {
"공": "0",
"일": "1",
"이": "2",
... (생략)
"-":"",
".":""
}
for key, value in mapping_dict.items():
phone = phone.replace(key, value)
return phone
df["preprocess_phone"] = df["phone"].apply(get_preprocessed_phonenumber)
- inplace는 데이터를 출력만 하는 것이 아니라 데이터 자체를 바꾼다.
df.Sex.replace({"Male":0, "Female":1})
df.Sex.replace({"Male":0, "Female":1}, inplace=True)