mirror of
https://github.com/kristoferssolo/Environment-Protection-Survey-Data-Analysis.git
synced 2025-10-21 18:50:34 +00:00
feat: add correlation func (not working)
This commit is contained in:
parent
ff35b5d2a3
commit
288225eeef
90
src/main.py
90
src/main.py
@ -1,10 +1,12 @@
|
||||
#!/usr/bin/env python
|
||||
import itertools
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
import pandas as pd
|
||||
from question import checkbox
|
||||
from question import checkbox, correlation
|
||||
from question.correlation import Combination
|
||||
|
||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||
FILE_PATH = BASE_DIR / "data" / "responses.csv"
|
||||
@ -15,43 +17,75 @@ def read_data(filename: Path) -> pd.DataFrame:
|
||||
return pd.read_csv(filename)
|
||||
|
||||
|
||||
QUESTIONS = {
|
||||
"b": "Es plānoju samazināt pārtikas atkritumus mājsaimniecībā",
|
||||
"c": "Kādā veidā Jūs samaziniet savu atkritumu daudzumu?",
|
||||
"d": "Ražotu dzērienu vietā (limonādes, ūdens pudelēs, alkoholiskie dzērieni) es dzeršu krāna ūdeni.",
|
||||
"e": "Kāda ir Jūsu uztura izvēle?",
|
||||
"f": "Kuras no sekojošām rīcībām Jūs būtu gatavi veikt?",
|
||||
"h": "Kāda veida transportlīdzekļus Jūs izmantojat?",
|
||||
"i": "Ja esat automašīnas īpašnieks, kuru no minētajām iespējām Jūs izvēlētos, lai būtu videi draudzīgāks?",
|
||||
"k": "Kurš no sekojošiem apgalvojumiem Jums ir tuvāks?",
|
||||
"l": "Kuras no sekojošām darbībām Jūs pārsvarā veicat ar informācijas un komunikācijas tehnoloģiju (IKT) ierīcēm (telefona, datora, televizora u.c.) un to lietošanu?",
|
||||
"m": "Kādas darbības Jūs mēģinat veikt, lai samazinātu enerģijas patēriņu?",
|
||||
"o": "Kādā mājokļa tipā Jūs dzīvojat?",
|
||||
"q": "Vai Jūs atteiktos no liekas mājokļa platības?",
|
||||
"s": "Vai Jūsu dzīvesvieta ir papildus nosiltināta?",
|
||||
"u": "Kurš no apgalvojumiem atbilst Jūsu dzīves situācijai?",
|
||||
"v": "Kurš no šiem apgalvojumiem ir patiess par Jūsu mājdzīvniekiem?",
|
||||
"w": "Kurš no apgalvojumiem par pārvietošanos brīvdienās un atvaļinājumos Jums ir patiess?",
|
||||
"y": "Kurš no šiem apgalvojumiem par apģērbu un apavu iegādi attiecas uz Jums?",
|
||||
"z": "Kurš no apgalvojumiem par Jums ir patiess?",
|
||||
}
|
||||
|
||||
|
||||
def individual_charts(data: pd.DataFrame) -> None:
|
||||
for column, question in QUESTIONS.items():
|
||||
checkbox.draw(data, question=question, filename=EXPORT_DIR / "individual" / f"{column}.png")
|
||||
|
||||
|
||||
def correlation_charts(data: pd.DataFrame) -> None:
|
||||
QUESTIONS: dict[str, str] = {
|
||||
"b": "Es plānoju samazināt pārtikas atkritumus mājsaimniecībā",
|
||||
"c": "Kādā veidā Jūs samaziniet savu atkritumu daudzumu?",
|
||||
"d": "Ražotu dzērienu vietā (limonādes, ūdens pudelēs, alkoholiskie dzērieni) es dzeršu krāna ūdeni.",
|
||||
"e": "Kāda ir Jūsu uztura izvēle?",
|
||||
"f": "Kuras no sekojošām rīcībām Jūs būtu gatavi veikt?",
|
||||
"h": "Kāda veida transportlīdzekļus Jūs izmantojat?",
|
||||
"i": "Ja esat automašīnas īpašnieks, kuru no minētajām iespējām Jūs izvēlētos, lai būtu videi draudzīgāks?",
|
||||
"k": "Kurš no sekojošiem apgalvojumiem Jums ir tuvāks?",
|
||||
"l": "Kuras no sekojošām darbībām Jūs pārsvarā veicat ar informācijas un komunikācijas tehnoloģiju (IKT) ierīcēm (telefona, datora, televizora u.c.) un to lietošanu?",
|
||||
"m": "Kādas darbības Jūs mēģinat veikt, lai samazinātu enerģijas patēriņu?",
|
||||
"o": "Kādā mājokļa tipā Jūs dzīvojat?",
|
||||
"q": "Vai Jūs atteiktos no liekas mājokļa platības?",
|
||||
"s": "Vai Jūsu dzīvesvieta ir papildus nosiltināta?",
|
||||
"u": "Kurš no apgalvojumiem atbilst Jūsu dzīves situācijai?",
|
||||
"v": "Kurš no šiem apgalvojumiem ir patiess par Jūsu mājdzīvniekiem?",
|
||||
"w": "Kurš no apgalvojumiem par pārvietošanos brīvdienās un atvaļinājumos Jums ir patiess?",
|
||||
"y": "Kurš no šiem apgalvojumiem par apģērbu un apavu iegādi attiecas uz Jums?",
|
||||
"z": "Kurš no apgalvojumiem par Jums ir patiess?",
|
||||
}
|
||||
export_path = EXPORT_DIR / "individual"
|
||||
|
||||
if not export_path.exists():
|
||||
export_path.mkdir()
|
||||
|
||||
for column, question in QUESTIONS.items():
|
||||
checkbox.draw(data, question=question, filename=export_path / f"{column}.png")
|
||||
|
||||
|
||||
def create_combinations() -> dict[str, Combination]:
|
||||
QUESTIONS = {
|
||||
"Es plānoju samazināt pārtikas atkritumus mājsaimniecībā",
|
||||
"Kāda ir Jūsu uztura izvēle?",
|
||||
"Kurš no sekojošiem apgalvojumiem Jums ir tuvāks?",
|
||||
"Kādā mājokļa tipā Jūs dzīvojat?",
|
||||
"Vai Jūs atteiktos no liekas mājokļa platības?",
|
||||
"Vai Jūs būtu ar mieru dzīvot koplietojamā mājoklī?",
|
||||
"Vai Jūsu dzīvesvieta ir papildus nosiltināta?",
|
||||
}
|
||||
|
||||
DEMOGRAPHIC = {
|
||||
"Kāds ir Jūsu dzimums?",
|
||||
"Kāds ir Jūsu vecums?",
|
||||
"Kāds ir augstākais Jūsu iegūtais izglītības līmenis?",
|
||||
# "Kurš no šiem variantiem atspoguļo Jūsu mājsaimniecības ikmēneša neto ienākumus?",
|
||||
"Kāds ir Jūsu pašreizējais nodarbinātības statuss?",
|
||||
"Kāda ir Jūsu dzīvesvieta?",
|
||||
}
|
||||
return {
|
||||
f"{i + 1}": Combination(str(pair[0]), str(pair[1]))
|
||||
for i, pair in enumerate(itertools.product(QUESTIONS, DEMOGRAPHIC))
|
||||
}
|
||||
|
||||
|
||||
def correlation_charts(data: pd.DataFrame) -> None:
|
||||
export_path = EXPORT_DIR / "correlation"
|
||||
|
||||
if not export_path.exists():
|
||||
export_path.mkdir()
|
||||
|
||||
for filename, comb in create_combinations().items():
|
||||
correlation.draw(data, comb, filename=export_path / f"{filename}.png")
|
||||
|
||||
|
||||
def main() -> None:
|
||||
data = read_data(FILE_PATH)
|
||||
individual_charts(data)
|
||||
correlation_charts(data)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
33
src/question/correlation.py
Normal file
33
src/question/correlation.py
Normal file
@ -0,0 +1,33 @@
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
import pandas as pd
|
||||
|
||||
|
||||
@dataclass
|
||||
class Combination:
|
||||
q1: str
|
||||
q2: str
|
||||
|
||||
|
||||
def draw(
|
||||
df: pd.DataFrame,
|
||||
comb: Combination,
|
||||
/,
|
||||
show: bool = False,
|
||||
filename: Optional[Path] = None,
|
||||
) -> None:
|
||||
chart = pd.crosstab(df[comb.q1], df[comb.q2])
|
||||
chart.plot(kind="bar")
|
||||
plt.figure(figsize=(16, 9))
|
||||
plt.title(comb.q1)
|
||||
plt.xlabel("")
|
||||
plt.ylabel("")
|
||||
|
||||
if filename:
|
||||
plt.savefig(filename)
|
||||
|
||||
if show:
|
||||
plt.show()
|
||||
Loading…
Reference in New Issue
Block a user