Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ plot_distributions
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ DataFrame
ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ ΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ. ΠΠ°ΡΠ΅ΠΌ ΡΡΡΠΎΠΈΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ»ΠΈ bar-Π³ΡΠ°ΡΠΈΠΊΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ
. ΠΡΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π»Ρ EDA (ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½ΡΡ
).
Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
def plot_distributions(df, max_categories=10):
for column in df.columns:
plt.figure(figsize=(6, 4))
if pd.api.types.is_numeric_dtype(df[column]):
sns.histplot(df[column].dropna(), kde=True)
plt.title(f'ΠΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°: {column}')
elif df[column].nunique() <= max_categories:
df[column].value_counts().plot(kind='bar')
plt.title(f'ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ: {column}')
else:
print(f'ΠΡΠΎΠΏΡΡΠ΅Π½ {column}: ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ')
continue
plt.tight_layout()
plt.show ()
# ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
df = pd.DataFrame({
'age': [23, 45, 31, 35, 62, 44, 23],
'gender': ['male', 'female', 'female', 'male', 'male', 'female', 'female'],
'income': [40000, 50000, 45000, 52000, 61000, 48000, 46000]
})
plot_distributions(df)