Collecting Online Sales Data:
def collect_online_sales_data(api_url, headers):
response = requests.get(api_url, headers=headers)
data = response.json()
return pd.DataFrame(data)
Collecting POS Data:
def collect_pos_data(db_connection_string, query):
engine = create_engine(db_connection_string)
data = pd.read_sql_query(query, engine)
return data
Collecting Logistics Data:
def collect_logistics_data(csv_file_path):
return pd.read_csv(csv_file_path)
Cleaning the Data:
def clean_data(df):
df = df.dropna(subset=['sales', 'date'])
df['date'] = pd.to_datetime(df['date'])
df = df.fillna(0)
return df
Analyzing Sales:
def analyze_sales(df):
daily_sales = df.groupby('date').agg({'sales': 'sum'}).reset_index()
return daily_sales
Identifying Top-Selling Products:
def get_top_selling_products(df, top_n=10):
top_products = df.groupby('product_id').agg({'sales': 'sum'}).sort_values(by='sales', ascending=False).head(top_n)
return top_products
SARIMA Forecasting:
def sarima_forecasting(df, order, seasonal_order):
model = SARIMAX(df['sales'], order=order, seasonal_order=seasonal_order)
model_fit = model.fit(disp=False)
forecast = model_fit.forecast(steps=30)
return forecast
Prophet Forecasting:
def prophet_forecasting(df):
df = df.rename(columns={'date': 'ds', 'sales': 'y'})
model = Prophet()
model.fit(df)
future = model.make_future_dataframe(periods=30)
forecast = model.predict(future)
return forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']]
Inventory Recommendations:
def recommend_inventory_levels(forecast):
inventory_levels = forecast[['ds', 'yhat']].copy()
inventory_levels['recommended_inventory'] = inventory_levels['yhat'] * 1.2 # 20% buffer
return inventory_levels
This function calculates recommended inventory levels by adding a 20% buffer to the forecasted sales.
Marketing Recommendations:
def recommend_marketing_strategies(df):
low_sales_products = df[df['sales'] < df['sales'].quantile(0.25)]
high_inventory_products = df[df['inventory'] > df['inventory'].quantile(0.75)]
target_products = pd.merge(low_sales_products, high_inventory_products, on='product_id')
return target_products
clean_data function.