π Data Engineering/π Data Analysis
[Data Analysis] λ°μ΄ν°μ μ’ λ₯μ μμ± & λ°μ΄ν° νμ (EDA)
Bigbread1129
2024. 7. 18. 00:03
λ°μ΄ν°μ μ’ λ₯μ μμ±
λ°μ΄ν°μ μ’ λ₯μ μμ±μ λ°νμ¬ μμλ³΄κ² μ΅λλ€.
μ λμ λ°μ΄ν° (Quantitative Data)
- μ λμ λ°μ΄ν°λ μμΉλ‘ ννλλ λ°μ΄ν°λ‘, μμ μΈ‘μ μ΄ κ°λ₯ν λ°μ΄ν°μ λλ€.
- μμ: λμ΄, μλ, νλ§€λ λ±μ λ°μ΄ν°μ λλ€.
- νΉμ§:
- μμΉ λ°μ΄ν°λ₯Ό ν΅ν΄ ν΅κ³ λΆμκ³Ό μμΈ‘ λͺ¨λΈλ§μ΄ κ°λ₯νλλ€.
- μμΉν λ°μ΄ν°μ λ²μ£Όν λ°μ΄ν°, λ κ°μ§ μ£Όμ ννλ‘ λλ©λλ€.
μ μ±μ λ°μ΄ν° (Qualitative Data)
- μμΉκ° μλ μλ―Έμ νΉμ±μΌλ‘ λΆλ₯λλ λ°μ΄ν°μ λλ€.
- μμ: λκΈ, λμμ, μμ± λ±.
- νΉμ§:
- ν μ€νΈ, μ΄λ―Έμ§, λμμ λ± λ€μν νμμ κ°μ§ μ μμ΅λλ€.
- μ λμ λ°μ΄ν°μ λ¬λ¦¬ ν΅κ³ λΆμμ΄ μ΄λ ΅μ΅λλ€.
- μ©λ: ν μ€νΈ λΆμ, κ°μ λΆμ, μ½ν μΈ λΆμ λ±μ μ¬μ©λ©λλ€.
μμΉν λ°μ΄ν° (Numerical Data)
- μμΉν λ°μ΄ν°λ κ°μ λ²μκ° λ¬΄ννκ³ , μΈ‘μ κ°λ₯ν λ°μ΄ν°μ λλ€.
- μμ: μ¨λ, 무κ², 거리 λ±μ λ°μ΄ν°μ λλ€.
- νΉμ§:
- μ°μν λ°μ΄ν° (Continuous Data): κ°μ΄ νΉμ λ²μ λ΄μμ 무νν κ°μ κ°μ§ μ μλ λ°μ΄ν°μ λλ€. μ: μ¨λ, 무κ².
- μ΄μ°ν λ°μ΄ν° (Discrete Data): κ°μ΄ νΉμ λ²μ λ΄μμ μ νν κ°μ κ°μ§λ λ°μ΄ν°μ λλ€. μ: νμ μ, νλ§€λ μ ν κ°μ.
- μ©λ: μ°μ λ³μμμμ κ²½ν₯μ± λΆμ, λ³μλ€ κ°μ μκ΄κ΄κ³λ₯Ό νμ νλλ° μ¬μ©λ©λλ€.
λ²μ£Όν λ°μ΄ν° (Categorical Data)
- μ νλ λ²μμ κ°μ κ°μ§λ©°, μΌλ°μ μΌλ‘ λ μ΄λΈ ννλ‘ μ 곡λλ λ°μ΄ν°μ λλ€.
- μμ: κ²°νΌ μν, νλ ₯, μ§μ μ ν λ±μ λ°μ΄ν°μ λλ€.
- νΉμ§:
- λͺ λͺ©ν λ°μ΄ν° (Nominal Data): μμκ° μλ λ²μ£Όν λ°μ΄ν°. μ: μ±λ³, κ΅κ°.
- μμν λ°μ΄ν° (Ordinal Data): μμκ° μλ λ²μ£Όν λ°μ΄ν°. μ: κ΅μ‘ μμ€, κ³ κ° λ§μ‘±λ νκ°.
- μ©λ: μΈκ΅¬ ν΅κ³νμ λΆμ, κ³ κ° μΈλΆν, μΉ΄ν κ³ λ¦¬ κ°μ λΉκ΅μ λΆμμ νλ μ©λλ‘ μ¬μ©λ©λλ€.
λ°μ΄ν° νμ§μ μμ
λ°μ΄ν° νμ§μ μμλ μ νμ±, μμ μ±, μΌκ΄μ±, νλΉμ±, μ΄λ κ² 4κ°μ§κ° μμ΅λλ€. νλνλ μ€λͺ ν΄ λ³΄κ² μ΅λλ€.
- μ νμ± (Accuracy)
- λ°μ΄ν°κ° μ€μ κ°κ³Ό μΌλ§λ μΌμΉνλμ§λ₯Ό λνλ΄λ μ§νμ λλ€. μ νν λ°μ΄ν°λ μ¬λ°λ₯Έ κ²°μ μ λ΄λ¦¬λ λ° νμμ μ λλ€.
- μμ: κ³ κ°μ λμ΄λ₯Ό κΈ°λ‘νλ λ°μ΄ν°λ² μ΄μ€μμ λμ΄κ° 30μΈμΈ κ³ κ°μ 40μΈλ‘ κΈ°λ‘νλ©΄ λ°μ΄ν°μ μ νμ±μ΄ λ¨μ΄μ§λλ€.
- μμ μ± (Completeness)
- νμν λͺ¨λ λ°μ΄ν°κ° λΉ μ§μμ΄ μ‘΄μ¬νλμ§λ₯Ό λνλ λλ€. λ°μ΄ν°κ° λΆμμ νλ©΄ λΆμ κ²°κ³Όμ μκ³‘μ΄ μκΈΈ μ μμ΅λλ€.
- μμ: κ³ κ° μ°λ½μ² λ°μ΄ν°λ² μ΄μ€μμ μΌλΆ κ³ κ°μ μ΄λ©μΌ μ£Όμκ° λλ½λ κ²½μ°, λ°μ΄ν°μ μμ μ±μ΄ λ¨μ΄μ§λλ€.
- μΌκ΄μ± (Consistency)
- λ°μ΄ν°κ° μ¬λ¬ λ°μ΄ν°λ² μ΄μ€λ λ°μ΄ν°μ μμ λμΌνκ² μ μ§λλμ§λ₯Ό λνλ λλ€. μΌκ΄λμ§ μμ λ°μ΄ν°λ μ λ’°ν μ μλ κ²°κ³Όλ₯Ό μ΄λν μ μμ΅λλ€.
- μμ: μ νμ κ°κ²©μ΄ μ¬λ¬ λ°μ΄ν°λ² μ΄μ€μμ λ€λ₯΄κ² κΈ°λ‘λμ΄ μλ€λ©΄ λ°μ΄ν°μ μΌκ΄μ±μ΄ λ¨μ΄μ§λλ€.
- νλΉμ± (Validity)
- λ°μ΄ν°κ° νΉμ κΈ°μ€μ΄λ κ·μΉμ μΆ©μ‘±νλμ§λ₯Ό λνλ λλ€. νλΉν λ°μ΄ν°λ νΉμ νμμ΄λ λ²μλ₯Ό λ²μ΄λμ§ μμ΅λλ€.
- μμ: κ³ κ°μ λμ΄λ₯Ό κΈ°λ‘νλ νλμ μμκ° μ λ ₯λ κ²½μ°, λ°μ΄ν°μ νλΉμ±μ΄ λ¨μ΄μ§λλ€.
λ°μ΄ν° μ μ²λ¦¬μ μ€μμ±
λμ νμ§μ λ°μ΄ν°λ λΆμ κ²°κ³Όμ μ λ’°μ±μ 보μ₯ν©λλ€.
- λ°μ΄ν° μ μ²λ¦¬λ λ°μ΄ν°λ₯Ό λΆμνκΈ° μ μ λ°μ΄ν°λ₯Ό μ μ νκ³ μ€λΉνλ κ³Όμ μ λλ€.
- λ°μ΄ν°μ νμ§μ΄ λμμλ‘ λΆμ κ²°κ³Όμ μ λ’°μ±μ΄ λμμ§λλ€.
- μμ: κ²°μΈ‘μΉμ μ΄μμΉκ° ν¬ν¨λ λ°μ΄ν°λ₯Ό λΆμνλ©΄, κ²°κ³Όκ° μ곑λ μ μμ΅λλ€.
μ μ²λ¦¬ κ³Όμ
- κ²°μΈ‘μΉκ° μλ λ°μ΄ν°λ₯Ό κ·Έλλ‘ λΆμνλ©΄ κ²°κ³Όκ° μ곑λ μ μμ΅λλ€.
- κ²°μΈ‘μΉλ μ κ±°νκ±°λ μ μ ν κ°μΌλ‘ λ체ν΄μΌ ν©λλ€.
# κ²°μΈ‘μΉ μ κ±°
df.dropna(inplace=True)
# κ²°μΈ‘μΉ λ체
df.fillna(df.mean(), inplace=True)
μ΄μμΉ νμ§ λ° μ κ±°
- μ΄μμΉλ λ°μ΄ν°μ μΌλ°μ μΈ ν¨ν΄μμ λ²μ΄λ κ°μΌλ‘, μ΄λ₯Ό μ κ±°νμ§ μμΌλ©΄ λΆμ κ²°κ³Όμ ν° μν₯μ λ―ΈμΉ μ μμ΅λλ€.
- Example: IQR λ°©λ²μ μ¬μ©ν μ΄μμΉ μ κ±°
# IQR λ°©λ²μ μ¬μ©ν μ΄μμΉ μ κ±°
Q1 = df.quantile(0.25)
Q3 = df.quantile(0.75)
IQR = Q3 - Q1
df = df[~((df < (Q1 - 1.5 * IQR)) | (df > (Q3 + 1.5 * IQR))).any(axis=1)]
λ°μ΄ν° μ κ·ν
- λ°μ΄ν°μ λ²μλ₯Ό μΌμ νκ² μ‘°μ νμ¬ λͺ¨λΈ νμ΅μ μ©μ΄νκ² ν©λλ€.
- λ°μ΄ν° μ κ·νλ λ°μ΄ν°μ μ€μΌμΌμ ν΅μΌμμΌ λΆμ κ²°κ³Όμ μ λ’°μ±μ λμ λλ€.
# μμ μ½λ
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
df_scaled = scaler.fit_transform(df)
λΉμ¦λμ€ μΈμ¬μ΄νΈμ μ νμ±κ³Ό μ§κ²°
- μ νν λ°μ΄ν° μ μ²λ¦¬λ λΉμ¦λμ€ μΈμ¬μ΄νΈμ μ νμ±κ³Ό μ§κ²°λ©λλ€.
- μλͺ»λ λ°μ΄ν°λ‘ μΈν λΆμ κ²°κ³Όλ μλͺ»λ μμ¬κ²°μ μ μ΄λν μ μμ΅λλ€.
- μμ: κ³ κ° μΈλΆν λΆμμ μν΄ λ°μ΄ν°λ₯Ό μ μ νκ³ μ μ²λ¦¬νμ§ μμΌλ©΄, μλͺ»λ κ³ κ° κ·Έλ£Ήμ΄ λμΆλ μ μμΌλ©°, μ΄λ λ§μΌν μ λ΅μ μ€ν¨λ‘ μ΄μ΄μ§ μ μμ΅λλ€.
λ°μ΄ν° νμ (Exploratory Data Analysis, EDA)
λ°μ΄ν° νμ? μ¦, EDAλΌλ λ§μ 무μμΌκΉμ? νλ² μμλ³΄κ² μ΅λλ€.
- νμμ λ°μ΄ν° λΆμ(Exploratory Data Analysis, EDA)μ λ°μ΄ν° λΆμ μ΄κΈ° λ¨κ³μμ μνλλ μ€μν κ³Όμ μΌλ‘, λ°μ΄ν°λ₯Ό μκ°ννκ³ μμ½νμ¬ λ°μ΄ν°μ μ€μν νΉμ±κ³Ό ν¨ν΄μ λ°κ²¬νλ κ³Όμ μ λλ€.
- λν λ°μ΄ν°μ ꡬ쑰, μμΈ, ν¨ν΄, λ° κΈ°μ΄ ν΅κ³μ μμ½μ μ 곡νλ κ³Όμ μ λλ€.
- μ΄λ₯Ό ν΅ν΄, λͺ¨λΈλ§ λ°©ν₯μ μ€μ νλ λ° κΈ°μ¬νλ©°, λ°μ΄ν°μ λν μ΄ν΄λλ₯Ό ν₯μμν€λ κ³Όμ μ λλ€.
EDAμ μ£Όμ λͺ©μ
κ·Έλ¬λ©΄ μ νμμ λ°μ΄ν° λΆμ(Exploratory Data Analysis, EDA)λ₯Ό ν΄μΌνλλ?
νμμ λ°μ΄ν° λΆμ(Exploratory Data Analysis, EDA)λ₯Ό ν΄μΌνλ μ£Όμ λͺ©μ μ λ°νμ¬ μμλ³΄κ² μ΅λλ€.
- λ°μ΄ν°μ ꡬ쑰 μ΄ν΄
- λ°μ΄ν°μ μ λ°μ μΈ κ΅¬μ‘°λ₯Ό νμ νκ³ , λ³μ κ°μ κ΄κ³λ₯Ό μ΄ν΄ν©λλ€.
- λ°μ΄ν°μ λΆν¬, λ²μ, μ€μκ°, νκ· λ±μ κΈ°μ΄ ν΅κ³μΉλ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό μμ½ν©λλ€.
- μμΈ λ° μ΄μμΉ νμ§
- λ°μ΄ν°μ λ΄μ μμΈκ°μ΄λ μ΄μμΉλ₯Ό νμ§νμ¬ λΆμ κ³Όμ μμ λ°μν μ μλ λ¬Έμ λ₯Ό 미리 λ°κ²¬ν©λλ€.
- μ΄λ₯Ό ν΅ν΄ μ΄μμΉλ₯Ό μ κ±°νκ±°λ μ²λ¦¬νλ μ λ΅μ μ립ν μ μμ΅λλ€.
- ν¨ν΄ λ°κ²¬
- λ°μ΄ν° λ΄μ μ¨κ²¨μ§ ν¨ν΄μ΄λ νΈλ λλ₯Ό λ°κ²¬ν©λλ€.
- λ³μ κ°μ μκ΄κ΄κ³, μκ³μ΄ λ°μ΄ν°μ μΆμΈ λ±μ νμ νμ¬ λ°μ΄ν°μ νΉμ±μ μ΄ν΄ν©λλ€.
- κΈ°μ΄ ν΅κ³μ μμ½ μ 곡
- λ°μ΄ν°μ κΈ°μ΄ ν΅κ³λμ κ³μ°νμ¬ μμ½ν©λλ€.
- νκ· , μ€κ°κ°, μ΅λΉκ°, λΆμ°, νμ€νΈμ°¨ λ± μ£Όμ ν΅κ³μΉλ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό μμ½νκ³ μ€λͺ ν©λλ€.
- λ°μ΄ν°μ λν μ΄ν΄λ ν₯μ
- λ°μ΄ν°μ λν μ λ°μ μΈ μ΄ν΄λλ₯Ό λμ¬ μ΄ν λΆμ κ³Όμ μμ λ°μ΄ν°μ λν μ§κ΄μ μ 곡ν©λλ€.
- λ°μ΄ν°μ μ±κ²©μ νμ νκ³ , μ΄λ₯Ό λ°νμΌλ‘ μ μ ν λΆμ κΈ°λ²μ μ νν μ μμ΅λλ€.
- λͺ¨λΈλ§ λ°©ν₯ μ€μ
- λ°μ΄ν° λΆμ λ° λͺ¨λΈλ§μ λ°©ν₯μ μ€μ νλ λ° μ€μν μν μ ν©λλ€.
- EDAλ₯Ό ν΅ν΄ λ°κ²¬ν ν¨ν΄κ³Ό ν΅κ³μ νΉμ±μ λ°νμΌλ‘ λͺ¨λΈλ§ μ λ΅μ μ립νκ³ , λͺ¨λΈμ μ±λ₯μ λμΌ μ μμ΅λλ€.
EDA μ€μμ±
νμμ λ°μ΄ν° λΆμ(Exploratory Data Analysis, EDA)μ μ€μμ±μ λ°νμ¬ μ€λͺ ν΄λ³΄κ² μ΅λλ€.
- νμμ λ°μ΄ν° λΆμ(Exploratory Data Analysis, EDA)λ λ°μ΄ν° λΆμμ λ°©ν₯κ³Ό νμ§μ κ²°μ μ§μ μ μλ ν΅μ¬ λ¨κ³μ λλ€.
- μ μ¬μ λ¬Έμ λ₯Ό μ¬μ μ νμ νκ³ μμ ν κΈ°νλ₯Ό μ 곡νλ©°, λ°μ΄ν°μ μ§κ³Ό ꡬ쑰λ₯Ό μ΄ν΄νμ¬ λ°μ΄ν° λΆμ κ²°κ³Όμ μ νμ±μ ν₯μμν€κΈ° μν λͺ©μ μ κ°μ§κ³ μμ΅λλ€. μλμ λ΄μ©μ λ μμΈν μ€λͺ ν΄ λμμ΅λλ€.
- λ°μ΄ν° λΆμμ λ°©ν₯κ³Ό νμ§ κ²°μ
- EDAλ λ°μ΄ν° λΆμ νλ‘μ νΈμ μ΄κΈ° λ¨κ³μμ μνλλ©°, λ°μ΄ν° λΆμμ λ°©ν₯κ³Ό νμ§μ κ²°μ μ§λ ν΅μ¬ λ¨κ³μ λλ€.
- μ΄ λ¨κ³μμ λ°μ΄ν°μ μ£Όμ νΉμ±μ νμ νκ³ , λΆμ λͺ©νλ₯Ό μ€μ νλ λ° μ€μν μ 보λ₯Ό μ 곡ν©λλ€.
- μμ: λ°μ΄ν° λΆν¬μ λ³μλ₯Ό νμ ν ν, μ μ ν λΆμ κΈ°λ²μ μ ννκ³ μ μ©ν μ μμ΅λλ€.
- μ μ¬μ λ¬Έμ μ¬μ νμ
λ° μμ κΈ°ν μ 곡
- EDAλ₯Ό ν΅ν΄ λ°μ΄ν°μ μ κ²°μΈ‘μΉ, μ΄μμΉ, λ°μ΄ν° μ λ ₯ μ€λ₯ λ± μ μ¬μ μΈ λ¬Έμ λ₯Ό μ¬μ μ λ°κ²¬νκ³ μμ ν μ μμ΅λλ€.
- μ΄λ₯Ό ν΅ν΄ λ°μ΄ν°μ μ λ’°μ±μ λμ΄κ³ , λΆμ κ²°κ³Όμ μ νμ±μ 보μ₯ν μ μμ΅λλ€.
- μμ: κ²°μΈ‘μΉλ μ΄μμΉλ₯Ό λ°κ²¬νκ³ μ΄λ₯Ό μ²λ¦¬νμ¬ λ°μ΄ν°μ μ§μ κ°μ ν μ μμ΅λλ€.
- λ°μ΄ν°μ μ§κ³Ό ꡬ쑰 μ΄ν΄λ₯Ό ν΅ν μ νμ± ν₯μ
- EDAλ₯Ό ν΅ν΄ λ°μ΄ν°μ μ§κ³Ό ꡬ쑰λ₯Ό κΉμ΄ μ΄ν΄ν μ μμΌλ©°, μ΄λ₯Ό ν΅ν΄ λ°μ΄ν° λΆμ κ²°κ³Όμ μ νμ±μ ν₯μμν¬ μ μμ΅λλ€.
- λ°μ΄ν°μ ν¨ν΄, λΆν¬, κ΄κ³ λ±μ νμ νμ¬ λ³΄λ€ μ λ’°μ± μλ λΆμμ μνν μ μμ΅λλ€.
- μμ: λ°μ΄ν°μ λΆν¬λ₯Ό μ΄ν΄νκ³ , λΆμμ μ ν©ν λ°μ΄ν° μ μ²λ¦¬ λ°©λ²μ μ νν μ μμ΅λλ€.
λ°μ΄ν° λΆμμμ EDAμ μν
λ°μ΄ν° λΆμμμμ EDAμ μν μ λ°νμ¬ μ€λͺ μ ν΄λ³΄κ² μ΅λλ€.
- EDA κ³Όμ μμ λ°μ΄ν°μ κ²°μΈ‘μΉ, μ΄μμΉ λ° λΆν¬λ₯Ό νμ νμ¬ λ°μ΄ν° μ μ λ° μ μ²λ¦¬ κ³νμ μ립ν©λλ€.
- λν κ΄λ ¨μ±μ΄ λμ λ³μλ₯Ό μλ³νμ¬ λ ν¨κ³Όμ μΈ λ¨Έμ λ¬λ & λ₯λ¬λ λͺ¨λΈμ ꡬμΆν μ μλλ‘ μ§μν©λλ€.
1. λ°μ΄ν°μ κ²°μΈ‘μΉ, μ΄μμΉ λ° λΆν¬ νμ
- EDAλ λ°μ΄ν°μ κ²°μΈ‘μΉ, μ΄μμΉ λ° λΆν¬λ₯Ό νμ νμ¬ λ°μ΄ν° μ μ λ° μ μ²λ¦¬ κ³νμ μ립νλ λ° λμμ μ€λλ€.
- μ΄λ₯Ό ν΅ν΄ λ°μ΄ν°μ νμ§μ λμ΄κ³ , λΆμ κ³Όμ μμ λ°μν μ μλ μ€λ₯λ₯Ό μ€μΌ μ μμ΅λλ€.
- Example Code (μμ μ½λ)
# κ²°μΈ‘μΉ νμΈ
missing_values = data.isnull().sum()
print(missing_values)
# μ΄μμΉ νμ§ (λ°μ€νλ‘― μ¬μ©)
plt.boxplot(data['column_name'])
plt.title('Box Plot of Column Name')
plt.ylabel('Value')
plt.show()
2. κ΄λ ¨μ±μ΄ λμ λ³μ μλ³
- EDAλ λ°μ΄ν° λ΄μ λ³μλ€ κ°μ κ΄κ³λ₯Ό νμ νμ¬, κ΄λ ¨μ±μ΄ λμ λ³μλ₯Ό μλ³νλ λ° λμμ μ€λλ€.
- μ΄λ₯Ό ν΅ν΄ λ ν¨κ³Όμ μΈ λͺ¨λΈμ ꡬμΆν μ μμΌλ©°, λΆμμ μ νμ±κ³Ό ν¨μ¨μ±μ λμΌ μ μμ΅λλ€.
- Example Code (μμ μ½λ)
# μκ΄ νλ ¬μ ν΅ν λ³μ κ°μ μκ΄κ΄κ³ λΆμ
correlation_matrix = data.corr()
print(correlation_matrix)
# ννΈλ§΅ μκ°ν
import seaborn as sns
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.title('Correlation Matrix Heatmap')
plt.show()
μ£Όμ λ°μ΄ν° μκ°ν κΈ°λ²
λ°μ΄ν° μκ°νλ₯Ό νμ¬ λ°μ΄ν°μ λΆν¬μ κ΄κ³λ₯Ό μκ°μ μΌλ‘ ννν©λλ€.
- μ£Όμ κΈ°λ²μΌλ‘λ νμ€ν κ·Έλ¨, λ°μ€ νλ‘―, μ°μ λ, ννΈλ§΅, νμ΄ μ°¨νΈκ° μμ΅λλ€.
νμ€ν κ·Έλ¨ (Histogram)
- λ°μ΄ν°μ λΆν¬λ₯Ό λνλ΄λ κ·Έλνλ‘, λ°μ΄ν°λ₯Ό μΌμ ν ꡬκ°(bin)μΌλ‘ λλμ΄ κ° κ΅¬κ°μ μνλ λ°μ΄ν°μ λΉλλ₯Ό μκ°νν©λλ€.
- μ©λ: λ°μ΄ν°μ λΆν¬ νν, μ€μκ°, λ³λμ± λ±μ νμ ν λ μ¬μ©ν©λλ€.
import matplotlib.pyplot as plt
data = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
plt.hist(data, bins=5)
plt.title('Histogram')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.show()
λ°μ€ νλ‘― (Box Plot)
- λ°μ΄ν°μ μ€μκ°, μ¬λΆμμ, μ΄μμΉλ₯Ό μκ°ννλ κ·Έλνμ λλ€.
- μ©λ: λ°μ΄ν°μ λΆν¬, λ³λμ±, μ΄μμΉλ₯Ό νμ ν λ μ μ©ν©λλ€.
data = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
plt.boxplot(data)
plt.title('Box Plot')
plt.ylabel('Value')
plt.show()
μ°μ λ (Scatter Plot)
- λ λ³μ κ°μ κ΄κ³λ₯Ό μκ°ννλ κ·Έλνλ‘, κ° λ°μ΄ν°λ₯Ό μ μΌλ‘ νμν©λλ€.
- μ©λ: λ³μ κ°μ μκ΄κ΄κ³, ν¨ν΄, μ΄μμΉλ₯Ό νμ ν λ μ¬μ©ν©λλ€.
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
plt.scatter(x, y)
plt.title('Scatter Plot')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()
ννΈλ§΅ (Heatmap)
- κ°μ ν¬κΈ°λ₯Ό μμμΌλ‘ νννμ¬ λ°μ΄ν°λ₯Ό μκ°ννλ λ°©λ²μ λλ€.
- μ©λ: λ³μ κ°μ μκ΄κ΄κ³, ν¨ν΄μ μκ°μ μΌλ‘ ννν λ μ μ©ν©λλ€.
import seaborn as sns
import numpy as np
data = np.random.rand(10, 12)
sns.heatmap(data, annot=True, cmap='coolwarm')
plt.title('Heatmap')
plt.show()
νμ΄ μ°¨νΈ (Pie Chart)
- μ 체 λ°μ΄ν°μμ κ° λΆλΆμ΄ μ°¨μ§νλ λΉμ¨μ μκ°ννλ μν κ·Έλνμ λλ€.
- μ©λ: μΉ΄ν κ³ λ¦¬ν λ°μ΄ν°μ κ΅¬μ± λΉμ¨μ νμ ν λ μ¬μ©ν©λλ€.
labels = 'A', 'B', 'C', 'D'
sizes = [15, 30, 45, 10]
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140)
plt.title('Pie Chart')
plt.show()
κΈ°μ ν΅κ³ (Descriptive Statistics)
κΈ°μ ν΅κ³λ λ°μ΄ν°μ ν΅κ³μ μμΉλ₯Ό κ³μ°νμ¬ λ°μ΄ν°μ κ²½ν₯μ μμ½νκ³ μ€λͺ νλ λ° μ¬μ©λ©λλ€.
μ΄λ λ°μ΄ν°λ₯Ό μ΄ν΄νκ³ μμ½νλ λ° μ€μν μν μ νλ©°, λ°μ΄ν° λΆμμ μ΄κΈ° λ¨κ³μμ μμ£Ό μ¬μ©λ©λλ€.
- 3κ°μ§ ν΅κ³ λ°©λ²μΈ μ€μ¬ κ²½ν₯ μΈ‘μ , λΆμ°λ μΈ‘μ , μμ½ ν΅κ³μ λ°νμ¬ μ€λͺ μ ν΄λ³΄κ² μ΅λλ€.
μ€μ¬ κ²½ν₯ μΈ‘μ (Measures of Central Tendency)
νκ· (Mean)
- λ°μ΄ν°μ λͺ¨λ κ°μ λν ν λ°μ΄ν°μ κ°μλ‘ λλ κ°μ λλ€.
- κ³μ° λ°©λ² μ½λ
mean_value = data['column_name'].mean()
- μμ
import pandas as pd
data = pd.Series([1, 2, 3, 4, 5])
mean_value = data.mean()
print(f'νκ· : {mean_value}')
μ€μκ° (Median)
- λ°μ΄ν°μ μ μ λ ¬νμ λ μ€μμ μμΉν κ°μ λλ€.
- λ°μ΄ν°μ μ λ°μ΄ μ΄ κ°λ³΄λ€ ν¬κ³ , λλ¨Έμ§ μ λ°μ μ΄ κ°λ³΄λ€ μμ΅λλ€.
- κ³μ° λ°©λ² μ½λ
median_value = data['column_name'].median()
- μμ
median_value = data.median()
print(f'μ€μκ°: {median_value}')
μ΅λΉκ° (Mode)
- λ°μ΄ν°μ μμ κ°μ₯ μμ£Ό λνλλ κ°μ λλ€.
- κ³μ° λ°©λ² μ½λ
mode_value = data['column_name'].mode()[0]
- μμ
mode_value = data.mode()[0]
print(f'μ΅λΉκ°: {mode_value}')
λΆμ°λ μΈ‘μ (Measures of Dispersion)
λΆμ°λ μΈ‘μ μ λ°μ΄ν°κ° μΌλ§λ λκ² νΌμ Έ μλμ§λ₯Ό λνλ΄λ ν΅κ³μ μμΉμ λλ€.
μ΄λ λ°μ΄ν°μ λ³λμ±μ μ΄ν΄νλ λ° λμμ μ€λλ€.
νμ€νΈμ°¨ (Standard Deviation)
- λ°μ΄ν°μ κ°λ€μ΄ νκ· μΌλ‘λΆν° μΌλ§λ λ¨μ΄μ Έ μλμ§λ₯Ό λνλ΄λ μ²λμ λλ€.
- κ³μ° λ°©λ²:
std_dev = data['column_name'].std()
- μμ μ½λ
std_dev = data.std()
print(f'νμ€νΈμ°¨: {std_dev}')
λΆμ° (Variance)
- λ°μ΄ν°μ κ°λ€μ΄ νκ· μΌλ‘λΆν° μΌλ§λ λ¨μ΄μ Έ μλμ§λ₯Ό μ κ³±νμ¬ νκ· ν κ°μ λλ€. νμ€νΈμ°¨μ μ κ³±μ λλ€.
- κ³μ° λ°©λ²:
variance_value = data['column_name'].var()
- μμ μ½λ
variance_value = data.var()
print(f'λΆμ°: {variance_value}')
λ²μ (Range)
- λ°μ΄ν°μ μμ κ°μ₯ ν° κ°κ³Ό κ°μ₯ μμ κ°μ μ°¨μ΄μ λλ€.
- κ³μ° λ°©λ²
range_value = data['column_name'].max() - data['column_name'].min()
- μμ μ½λ
range_value = data.max() - data.min()
print(f'λ²μ: {range_value}')
μ¬λΆμμ λ²μ (Interquartile Range, IQR)
- λ°μ΄ν°μ μ€κ° 50%λ₯Ό ν¬ν¨νλ κ°μ λ²μλ‘, Q3 (3μ¬λΆμμ)μμ Q1 (1μ¬λΆμμ)μ λΊ κ°μ λλ€.
- κ³μ° λ°©λ²
Q1 = data['column_name'].quantile(0.25)
Q3 = data['column_name'].quantile(0.75)
IQR = Q3 - Q1
- μμ μ½λ
Q1 = data.quantile(0.25)
Q3 = data.quantile(0.75)
IQR = Q3 - Q1
print(f'IQR: {IQR}')
μμ½ ν΅κ³ (Summary Statistics)
μμ½ ν΅κ³λ μ¬λ¬ κΈ°μ ν΅κ³λ₯Ό μ’ ν©νμ¬ λ°μ΄ν°μ μ 체μ μΈ κ²½ν₯μ νλμ νμ ν μ μλλ‘ μ 곡ν©λλ€.
- κ³μ° λ°©λ²
summary_statistics = data['column_name'].describe()
- μμ μ½λ
summary_statistics = data.describe()
print(summary_statistics)
λ€λ³λ λΆμ
λ€λ³λ λΆμμ μ¬λ¬ λ³μ κ°μ κ΄κ³λ₯Ό λΆμνμ¬ μΈμ¬μ΄νΈλ₯Ό λμΆνλ λΆμ κΈ°λ²μ λλ€.
μ΄λ₯Ό ν΅ν΄ λ°μ΄ν°μ 볡μ‘ν ꡬ쑰λ₯Ό μ΄ν΄νκ³ , λ³μλ€ κ°μ μνΈμμ©μ νμ ν μ μμ΅λλ€.
μ£Όμ λ€λ³λ λΆμ κΈ°λ²
Correlation Analysis (μκ΄ λΆμ)
- λ λ³μ κ°μ κ΄κ³λ₯Ό λΆμνμ¬ μκ΄ κ³μλ₯Ό κ³μ°νλ κΈ°λ²μ λλ€.
- μκ΄ κ³μλ λ λ³μ κ°μ μ ν κ΄κ³μ κ°λμ λ°©ν₯μ λνλ λλ€.
- μ£Όμ μκ΄ κ³μ:
- νΌμ΄μ¨ μκ΄ κ³μ (Pearson Correlation Coefficient): λ λ³μ κ°μ μ ν κ΄κ³λ₯Ό μΈ‘μ ν©λλ€.
- μ€νΌμ΄λ§ μκ΄ κ³μ (Spearman's Rank Correlation Coefficient): λ λ³μμ μμλ₯Ό κΈ°λ°μΌλ‘ λΉμ ν κ΄κ³λ₯Ό μΈ‘μ ν©λλ€.
- μΌλ¬ μκ΄ κ³μ (Kendall's Tau): λ λ³μμ μμλ₯Ό κΈ°λ°μΌλ‘ λΉμ ν κ΄κ³λ₯Ό μΈ‘μ νλ©°, μμ κ°μ μΌκ΄μ±μ νκ°ν©λλ€.
- Example Code.
import pandas as pd
from scipy.stats import pearsonr, spearmanr, kendalltau
data = pd.DataFrame({
'x': [1, 2, 3, 4, 5],
'y': [2, 3, 5, 7, 11]
})
# νΌμ΄μ¨ μκ΄ κ³μ
pearson_corr, _ = pearsonr(data['x'], data['y'])
print(f'νΌμ΄μ¨ μκ΄ κ³μ: {pearson_corr}')
# μ€νΌμ΄λ§ μκ΄ κ³μ
spearman_corr, _ = spearmanr(data['x'], data['y'])
print(f'μ€νΌμ΄λ§ μκ΄ κ³μ: {spearman_corr}')
# μΌλ¬ μκ΄ κ³μ
kendall_corr, _ = kendalltau(data['x'], data['y'])
print(f'μΌλ¬ μκ΄ κ³μ: {kendall_corr}')
Principal Component Analysis, PCA (μ£Όμ±λΆ λΆμ)
- λ€μ°¨μ λ°μ΄ν°λ₯Ό μ°¨μμ μΆμνμ¬ μ€μν λ³μλ₯Ό μΆμΆνλ κΈ°λ²μ λλ€.
- λ°μ΄ν°μ λΆμ°μ μ΅λν 보쑴νλ©΄μ μ°¨μμ μΆμνμ¬ λ°μ΄ν°λ₯Ό μκ°ννκ±°λ λͺ¨λΈμ ν¨μ¨μ±μ λμ λλ€.
- μ©λ: λ°μ΄ν°μ μ°¨μ μΆμ, μκ°ν, λ Έμ΄μ¦ μ κ±°, λ³μ μ ν λ±μ μ¬μ©λ©λλ€.
- Example Code.
import pandas as pd
from sklearn.decomposition import PCA
data = pd.DataFrame({
'x1': [1, 2, 3, 4, 5],
'x2': [2, 4, 6, 8, 10],
'x3': [5, 4, 3, 2, 1]
})
pca = PCA(n_components=2)
principal_components = pca.fit_transform(data)
print(principal_components)
Factor Analysis (μμΈ λΆμ)
- λ³μλ€μ μνΈ κ΄λ ¨μ±μ μμμ μμΈ(factor)μΌλ‘ μΆμΆνλ κΈ°λ²μ λλ€.
- μμΈ λΆμμ ν΅ν΄ κ΄μ°°λ λ³μλ€μ μ€λͺ νλ μ¨κ²¨μ§ μμΈμ μλ³ν μ μμ΅λλ€.
- μ©λ: λ³μ κ°μ κ΄κ³ μ΄ν΄, λ°μ΄ν° μ°¨μ μΆμ, μ¨κ²¨μ§ μμΈμ μλ³ λ±μ μ¬μ©λ©λλ€.
- Example Code.
import pandas as pd
from sklearn.decomposition import FactorAnalysis
data = pd.DataFrame({
'x1': [1, 2, 3, 4, 5],
'x2': [2, 4, 6, 8, 10],
'x3': [5, 4, 3, 2, 1]
})
fa = FactorAnalysis(n_components=2)
factors = fa.fit_transform(data)
print(factors)