[DA][Python] λ°μ΄ν° λΆμ μ νμ©ν μ μλ κΈ°μ΄ ν¨μ
κ°μ
λ°μ΄ν° λΆμμ νμ©ν μ μλ ν¨μ 4κ°λ₯Ό μμ±ν΄λ³΄κ³ λ°μ΄ν°λ₯Ό μ λ ₯ ν μΆλ ₯νμ λ μ΄λ€ νμμΌλ‘ λμ€λ μ§μ λν΄ μ μ μλ€.
ν¨μ μ’ λ₯
1. νκ· κ³Ό νμ€νΈμ°¨ κ³μ° ν¨μ
2. μκ΄νλ ¬μ κ³μ°νλ ν¨μ
- μκ΄νλ ¬μ΄λ
- λ°μ΄ν° μΈνΈμ μ¬λ¬ λ³μλ€ κ°μ μκ΄κ΄κ³λ₯Ό λνλ΄λ νλ₯Ό μλ―Έ
- νλ ¬μ λ³μλ€ κ°μ μκ΄κ³μλ₯Ό κ³μ°νμ¬ κ·Έ κ²°κ³Όλ₯Ό νλ ¬ ννλ‘ λνλΈλ€.
- κ°μ -1λΆν° 1κΉμ§μ κ°μ κ°μ§λ€.
1 : λ λ³μ κ°μ μλ²½ν μμ μκ΄κ΄κ³κ° μμ
-1 : λ λ³μ κ°μ μλ²½ν μμ μκ΄κ΄κ³κ° μμ
0 : λ λ³μ κ°μ μκ΄κ΄κ³κ° μμ
3. κ²°μΈ‘μΉλ₯Ό μ²λ¦¬νλ ν¨μ
4. νΉμ μ΄μ κΈ°μ΄ ν΅κ³ μ 보λ₯Ό μ 곡νλ ν¨μ
κΈ°λ³Έ νμ΄μ¬ λΌμ΄λΈλ¬λ¦¬
λ°μ΄ν° νλ μμ μ€μ νκΈ° μν΄ pandasλ₯Ό λΆλ¬μ€κ³ κ²°μΈ‘κ°μ μ²λ¦¬νκΈ° μν΄μ numpy λΌμ΄λΈλ¬λ¦¬λ₯Ό λΆλ¬μ¨λ€.
import pandas as pd
import numpy as np
1. νκ· κ³Ό νμ€νΈμ°¨ κ³μ° ν¨μ
νκ· meanκ³Ό νμ€νΈμ°¨ stdλ₯Ό κ³μ°νλ ν¨μλΌλ μλ―Έμμ calculate_mean_std λ‘ ν¨μλͺ μ μ§λλ€.
def calculate_mean_std(data) :
- data μΈμλ₯Ό μ λ ₯νμ¬ ν΄λΉ ν¨μκ° κ³μ°ν΄μΌ νλ λ°μ΄ν° νλ μμ λνλΈλ€.
μΈμμ meanκ³Ό std ν¨μλ₯Ό μ¬μ©νμ¬ κ³μ°νκ³ λ°ννλ μ½λλ‘ ν΄λΉ ν¨μ μ½λλ₯Ό λ§λ¬΄λ¦¬νλ€.
mean = data.mean()
std = data. std()
return {"mean": mean, "std":std}
2. μκ΄νλ ¬ κ³μ° ν¨μ
ν¨μλͺ μ μ μνλ€.
def calculate_correlation_matrix(data) :
μκ΄νλ ¬μ κ³μ°νλ ν¨μλ corr() μ΄λ―λ‘ ν΄λΉ κ³μ°μ ν ν λ°ννλ μ½λλ₯Ό μ λ ₯νλ€.
correlation_matrix = data.corr()
return correlation_matrix
3. κ²°μΈ‘μΉ μ²λ¦¬ ν¨μ
ν¨μ μ μ
def handle_missing_values(data, method='mean') :
- κ²°μΈ‘κ°μ μ²λ¦¬νλ λ°©λ²μ μ ννλ μ νμ μΈμλ‘ method = 'mean'μ μΌλ€.
- κΈ°λ³Έ κ°μ΄ 'mean'μ΄λΌλ λ»
쑰건문μ ν΅ν΄ ν¨μλ₯Ό μ μνμ¬ λ체ν κ°μ μ°Ύλλ€.
if method == 'mean' :
return data.fillna(data.mean())
elif method == 'median' :
return data.fillna(data.median())
elif method == 'mode' :
return data.fillna(data.mode().iloc[0])
else :
raise ValueError("Methodλ 'mean', 'median', 'mode'μ€ νλμ¬μΌ ν©λλ€.")
- κ°κ° method μΈμκ° mean, median, modeμ ν΄λΉν λ λ©μλμ ν΄λΉνλ κ°μΌλ‘ λ°μ΄ν° νλ μμ λ°ννλ€.
- modeλ μ΅λΉκ°μΌλ‘ λ체νλ κ²μ΄λ©°, iloc[0] μ μ¬μ©νμ¬ μ²« λ²μ§Έ μ΅λΉκ°μ μ νν μ μλ€.
- λ§μ§λ§μΌλ‘ μμΈ μ²λ¦¬λ₯Ό νμ¬ μ ν¨νμ§ μμ method μΈμμ λν΄ μ€λ₯λ₯Ό λ°μμν€κ³ μ€λ₯ λ©μμ§ λν λ° μ μλλ‘ νλ€.
4. νΉμ μ΄μ κΈ°μ΄ ν΅κ³ μ 보λ₯Ό μ 곡νλ ν¨μ
ν¨μ μ μ
def get_column_statistics(data, column_name) :
- column_nameμ κΈ°μ΄ ν΅κ³ μ 보λ₯Ό κ³μ°ν μ΄μ μ΄λ¦μ μλ―Ένλ€.
dataμμ column_nameμ ν΄λΉνλ μ΄ λ°μ΄ν°λ₯Ό μΆμΆν μ μλλ‘ column_dataλΌλ λ³μλ₯Ό μ μνλ€.
column_data = data[column_name]
statusλ‘ μΆμΆν μ΄ λ°μ΄ν°μ λν κΈ°μ΄ ν΅κ³ μ 보λ₯Ό κ³μ°νμ¬ λμ λ리μ μ μ₯νλ€.
κΈ°μ΄ ν΅κ³ μ 보λ‘λ μ΅μκ°, μ΅λκ°, νκ· κ°, μ€μκ°, νμ€νΈμ°¨λ₯Ό κ³μ°ν μ μλ€.
status = {
"min": column_data.min(),
"max": column_data.max(),
"mean": column_data.mean(),
"median": column_data.median(),
"std": column_data.std()
}
λ§μ§λ§μΌλ‘ λ°ννλ μ½λλ₯Ό μ λ ₯νμ¬ λμ λ리λ₯Ό λ°ννλ©΄ λλ€.
return status
ν¨μ νμ©νκΈ°
μμ μμ±ν ν¨μλ€μ νμ©νκΈ° μν΄μλ μμ λ°μ΄ν°κ° νμνλ€.
μμ λ°μ΄ν°λ₯Ό μμ±νλ ν¨μλ₯Ό νμ±νλ€.
def create_sample_data() :
sample_data = pd.DataFrame({
'A': [1, 2, np.nan, 4, 5],
'B': [5, 4, 3, 2, 1],
'C': [2, 3, 4, np.nan, 6]
})
return sample_data
νμ±ν ν¨μλ₯Ό μΆλ ₯νλ ν¨μλ₯Ό μ λ ₯νκ³ νΈμΆνμ¬ κ°μ λ΄λ©΄ λλ€.
def process_data():
"""λ°μ΄ν°λ₯Ό μ²λ¦¬νκ³ κ²°κ³Όλ₯Ό μΆλ ₯νλ ν¨μ"""
sample_data = create_sample_data()
print("1:", calculate_mean_std(sample_data))
print("2:\n", calculate_correlation_matrix(sample_data))
print("3:\n", handle_missing_values(sample_data, method='mean'))
print("4:", get_column_statistics(sample_data, 'A'))
# ν¨μ νΈμΆ
if __name__ == "__main__":
process_data()
μ΅μ’ μΆλ ₯κ°μ μλμ κ°λ€.