In [1]:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from pivot_chart import pivot_chart
In [2]:
sns.set_theme(style="whitegrid")
In [3]:
df_input = pd.read_excel("dane_ankieta.xlsx", header=1)
df_input["licznik"] = 1
df_input["Grupa"] = df_input["czy_instruktor"].replace({"NIE": "Wędrownicy", "TAK": "Instruktorzy"})
# df_input.info()
Wstęp¶
Na początku roku 2024 została przeprowadzona internetowa ankieta wśród czynnych wędrowników Organizacji Harcerzy. Dane były zbierane od 4 stycznia do 26 stycznia.
Pytania zostały przygotowane przez członków Wydziału Wędrowników:
- phm. Jana Michnę (Mazowiecka Chorągiew Harcerzy) – koordynujący
- hm. Wojciecha Przybylskiego (Małopolska Chorągiew Harcerzy)
- hm. Lecha Pastwę (Podkarpackie Namiestnictwo Harcerzy)
- hm. Stanisława Rościszewskiego (Małopolska Chorągiew Harcerzy)
- phm. Jakuba Kuciaka (Mazowiecka Chorągiew Harcerzy)
- pwd. Gerarda Wociala (Mazowiecka Chorągiew Harcerzy)
W sumie w ankiecie zebrano 157 odpowiedzi, z czego 115 należało do wędrowników (członków ZHR) oraz 42 instruktorów.
In [4]:
pd.DataFrame(df_input.value_counts(subset="Grupa"), columns=["Liczba Odpowiedzi"])
Out[4]:
Liczba Odpowiedzi | |
---|---|
Grupa | |
Wędrownicy | 115 |
Instruktorzy | 42 |
Poniżej pokazano na wykresie liczbę odpowiedzi na chorągiew. Najwięcej odpowiedzi udzielono z 6 następujących chorągwi:
In [5]:
df_test = df_input[["choragiew", "Grupa"]].value_counts(sort="choragiew").rename("Liczba Odpowiedzi")
df_top5 = pd.pivot_table(pd.DataFrame(df_test), index="choragiew", columns="Grupa", fill_value=0).droplevel(level=0, axis=1).sort_values("Wędrownicy", ascending=False).eval("Suma=`Wędrownicy`+`Instruktorzy`").head(5)
choragiew_top5 = df_top5.index.to_list()
df_top5
Out[5]:
Grupa | Instruktorzy | Wędrownicy | Suma |
---|---|---|---|
choragiew | |||
MAZOWIECKA CHORĄGIEW HARCERZY | 6 | 40 | 46 |
WIELKOPOLSKA CHORĄGIEW HARCERZY | 12 | 20 | 32 |
MAŁOPOLSKA CHORĄGIEW HARCERZY | 11 | 12 | 23 |
POMORSKA CHORĄGIEW HARCERZY | 3 | 10 | 13 |
GÓRNOŚLĄSKA CHORĄGIEW HARCERZY | 2 | 8 | 10 |
In [6]:
df_input["top_choragiew"] = df_input.choragiew.map(lambda x: x if x in choragiew_top5 else "POZOSTAŁE CHORĄGWIE")
choragiew_top5_order = choragiew_top5 + ["POZOSTAŁE CHORĄGWIE"]
In [7]:
pivot_chart(df=df_input,
index="choragiew",
column="czy_instruktor",
title="Liczba odpowiedzi chorągwiami",
xlabel="liczba odpowiedzi",
ylabel="chorągiew",
sort="NIE")
In [8]:
pivot_chart(df=df_input,
index="top_choragiew",
column="czy_instruktor",
title="Liczba odpowiedzi wśród największych chorągwi",
xlabel="liczba odpowiedzi",
ylabel="chorągiew",
sort="NIE")
Z 115 zapytanych wędrowników 78 zdobyło naramiennik, a 37 go nie zdobyło. Wśród 42 instruktorów 35 z nich zdobyło naramiennik, a pozostałe 7 nie.
In [9]:
pd.DataFrame(df_input.rename(columns={"czy_naramiennik": "Czy zdobyty naramiennik?"}).value_counts(subset=["Grupa", "Czy zdobyty naramiennik?"]), columns=["Liczba Odpowiedzi"])
Out[9]:
Liczba Odpowiedzi | ||
---|---|---|
Grupa | Czy zdobyty naramiennik? | |
Wędrownicy | TAK | 78 |
NIE | 37 | |
Instruktorzy | TAK | 35 |
NIE | 7 |
In [10]:
g = sns.catplot(
data=df_input,
x="czy_naramiennik",
hue="Grupa",
col="Grupa",
# order=["14 lat", "15 lat", "16 lat", "17 lat", "18 lat", "19+"],
kind="count",
# stat="percent",
# palette="pastel6",
palette=sns.color_palette("blend:#FFC30F,#165110", 2),
legend=False,
)
g.axes[0, 0].set(title="Instruktorzy", xlabel="", ylabel="Liczba odpowiedzi")
g.axes[0, 1].set(title="Wędrownicy", xlabel="")
plt.suptitle("Czy zdobyłeś naramiennik?", y=1.05)
plt.show()
plt.close()
In [ ]: