add analysis module
This commit is contained in:
parent
86d0d6582d
commit
fb97703cdd
13
src/analysis/__main__.py
Normal file
13
src/analysis/__main__.py
Normal 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
5
src/analysis/io.py
Normal 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
6
src/analysis/metrics.py
Normal 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
9
src/analysis/plotting.py
Normal 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()
|
||||
0
src/exercises/__init__.py
Normal file
0
src/exercises/__init__.py
Normal file
11
src/resources/sales.csv
Normal file
11
src/resources/sales.csv
Normal 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
|
||||
|
Loading…
x
Reference in New Issue
Block a user