File size: 1,783 Bytes
b36e1d2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import pandas as pd
import re
from utils import create_plot, create_barplot

def dataframe_process(sheet):
    # Create dataframe
    df = pd.DataFrame(sheet.get_all_records())
    df['date'] = pd.to_datetime(df['date'])
    df['week'] = df['date'].dt.to_period('W')

    #Per day
    daily_total=df[['concept','amount','category','date']].groupby('date').sum().reset_index()
    daily_total['month_day'] = daily_total['date'].dt.strftime('%m-%d')

    

    fig = create_plot(daily_total['month_day'],daily_total['amount'])

    daily_total=daily_total.sort_values(by='date', ascending=False)
    daily_total=daily_total[['date', 'amount']]
    todays_amount=daily_total.iloc[0]['amount']
    todays_date=daily_total.iloc[0]['date']
    day_month = todays_date.strftime('%m-%d-%Y')

    #Per week
    # Group by 'week' and sum the values
    weekly_df = df[['concept','amount','category','week']].groupby('week').sum().reset_index()
    weekly_df=weekly_df.sort_values(by='week', ascending=True)
    # weekly_df.index=weekly_df.index.strftime('%m-%d')
    current_week_amount="{:.2f}".format(weekly_df.iloc[-1]['amount'])
    weekly_df['week'] = weekly_df['week'].astype(str)
    weekly_df['week']=weekly_df['week'].apply(lambda x: re.sub(r'\d{4}-', '', x))

    fig2 = create_barplot(weekly_df['week'],weekly_df['amount'],"week","amount","expense per week")


    #Per category
    expenses_per_category=df[['concept','amount','category']].groupby('category').sum().reset_index()
    expenses_per_category=expenses_per_category.sort_values(by='amount', ascending=False)
    fig3 = create_barplot(expenses_per_category['category'],expenses_per_category['amount'],"category","amount","expense per category")

    return day_month, todays_amount, current_week_amount , fig, fig2, fig3