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)