add analysis module #5

Merged
schaermicha1 merged 1 commits from sw4_analyis_module into master 2026-03-13 18:50:20 +01:00
11 changed files with 44 additions and 0 deletions
Showing only changes of commit fb97703cdd - Show all commits

13
src/analysis/__main__.py Normal file
View File

@ -0,0 +1,13 @@
from analysis.io import load_sales
from analysis.metrics import revenue_per_day
from analysis.plotting import plot_daily_revenue
def main() -> None:
df = load_sales("resources/sales.csv")
daily = revenue_per_day(df)
plot_daily_revenue(daily)
if __name__ == "__main__":
main()

5
src/analysis/io.py Normal file
View File

@ -0,0 +1,5 @@
import pandas as pd
def load_sales(path: str) -> pd.DataFrame:
return pd.read_csv(path, sep=",", encoding="utf-8")

6
src/analysis/metrics.py Normal file
View File

@ -0,0 +1,6 @@
import pandas as pd
def revenue_per_day(df: pd.DataFrame) -> pd.Series:
revenue = df["quantity"] * df["unit_price"]
return revenue.groupby(df["day"]).sum()

9
src/analysis/plotting.py Normal file
View File

@ -0,0 +1,9 @@
import matplotlib.pyplot as plt
import pandas as pd
def plot_daily_revenue(daily: pd.Series) -> None:
daily.plot(kind="bar")
plt.title("Daily Revenue")
plt.tight_layout()
plt.show()

View File

11
src/resources/sales.csv Normal file
View File

@ -0,0 +1,11 @@
day,product,quantity,unit_price,region
Mon,Notebook,3,899.0,West
Mon,Mouse,12,25.0,West
Tue,Notebook,2,899.0,Ost
Tue,Keyboard,5,70.0,Ost
Wed,Monitor,4,220.0,West
Wed,Mouse,10,25.0,Nord
Thu,Keyboard,6,70.0,Sued
Thu,Monitor,3,220.0,Ost
Fri,Notebook,1,899.0,Nord
Fri,Mouse,15,25.0,Sued
1 day product quantity unit_price region
2 Mon Notebook 3 899.0 West
3 Mon Mouse 12 25.0 West
4 Tue Notebook 2 899.0 Ost
5 Tue Keyboard 5 70.0 Ost
6 Wed Monitor 4 220.0 West
7 Wed Mouse 10 25.0 Nord
8 Thu Keyboard 6 70.0 Sued
9 Thu Monitor 3 220.0 Ost
10 Fri Notebook 1 899.0 Nord
11 Fri Mouse 15 25.0 Sued