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