# Converting the DateTime column to datetime format and extracting the date
bakery_data['DateTime'] = pd.to_datetime(bakery_data['DateTime'])
bakery_data['Date'] = bakery_data['DateTime'].dt.date

# Aggregating data as per the requirements

# Daily transaction count
daily_transaction_count = bakery_data.groupby('Date')['TransactionNo'].nunique()

# Daily total item count (assuming each row represents one item sold)
daily_item_count = bakery_data.groupby('Date')['Items'].count()

# Convert DayType to numeric (weekday -> 0, weekend -> 1)
bakery_data['DayTypeNumeric'] = bakery_data['DayType'].apply(lambda x: 0 if x == 'Weekday' else 1)

# Daily DayType
daily_day_type = bakery_data.groupby('Date')['DayTypeNumeric'].first()

# Sales count by Daypart
sales_by_daypart = bakery_data.groupby(['Date', 'Daypart'])['Items'].count().unstack(fill_value=0)

# Sales count by Item
sales_by_item = bakery_data.groupby(['Date', 'Items'])['Items'].count().unstack(fill_value=0)

# Combining all the aggregated data into one dataframe
combined_data = pd.DataFrame({
    'DailyTransactionCount': daily_transaction_count,
    'DailyItemCount': daily_item_count,
    'DayType': daily_day_type
}).join(sales_by_daypart).join(sales_by_item)

combined_data