agent: |
TQ3z2hSLWJ1jwVqOhArlDaily AWS Cost Trends
Daily AWS Cost Trends
There was a problem that the LLM was not able to address. Please rephrase your prompt and try again.
This task conducts a temporal analysis, showcasing daily AWS expenses over a set duration. It offers a day-by-day breakdown of AWS spending trends. The accompanying line graph vividly displays these fluctuations, where peaks signify higher costs and troughs indicate savings. This visual aid empowers users to pinpoint spending patterns, anomalies, or unexpected cost surges, thus facilitating enhanced budgetary foresight and efficient cost control.
inputs
outputs
import pandas as pd
from datetime import datetime, timedelta
# Define last_n_days parameter
#last_n_days = 30 # You can change this value as needed
if df is not None:
#print("Analyzing and visualizing daily AWS costs...")
# Filter out negative values
filter_condition = (df['lineItem/UnblendedCost'] >= 0) #| (df['lineItem/UnblendedCost'] <= -0.001)
df = df[filter_condition]
# Convert 'lineItem/UsageStartDate' to datetime
df['lineItem/UsageStartDate'] = pd.to_datetime(df['lineItem/UsageStartDate'])
# Extract the day of the month and create a new column 'day'
df['day'] = df['lineItem/UsageStartDate'].dt.date
# Get the maximum date in the dataset
max_date = df['day'].max()
# Calculate the start date based on the max date and last_n_days
start_date = max_date - timedelta(days=last_n_days)
# Filter the DataFrame to only include dates greater than or equal to the start date
filtered_df = df[df['day'] >= start_date]
# Group by day and sum 'lineItem/UnblendedCost' for each group
daily_costs = filtered_df.groupby('day')['lineItem/UnblendedCost'].sum()
# Extract x and y values
x = daily_costs.index.tolist() # This gets the dates
y = daily_costs.values.tolist() # This gets the corresponding costs
#print(df.head()) # Print the first few rows of the original DataFrame
#print(daily_costs) # Print the daily costs after grouping and summing
#print(y) # Print the y values extracted from daily_costs
# Set the properties for your plot
context.plot.xlabel = 'Date'
context.plot.ylabel = 'Cost ($)'
context.plot.title = f'Daily AWS Costs (Last {last_n_days} Days)'
context.plot.add_trace(name=f'Daily AWS Costs (Last {last_n_days} Days)', xpts=x, ypts=y, tracetype="lines")
else:
print("Failed to fetch data. Exiting.")
copied