Skip to the content.

Superstore Analysis

Proyek ini berfokus pada eksplorasi dan analisis dataset untuk menghasilkan insight yang bermakna dan mendukung pengambilan keputusan. Fokus utamanya adalah memahami data, melakukan berbagai analisis, dan memvisualisasikan temuan untuk mengomunikasikan hasil pengamatan secara efektif.

Tentang Proyek Ini

Proyek ini memusatkan perhatian pada analisis komprehensif sebuah dataset yang mencakup berbagai aspek seperti penjualan, informasi pelanggan, detail produk, dan segmen pasar. Tugas-tugas utama yang dikerjakan meliputi pengecekan kualitas data, exploratory data analysis (EDA), analisis statistik, serta visualisasi tren dan pola dalam dataset.

Tujuan

Tujuan utama proyek ini adalah mengekstrak insight yang dapat ditindaklanjuti dari dataset guna mendorong keputusan dan strategi bisnis. Melalui analisis dan visualisasi yang cermat, saya berupaya mengungkap tren, mengidentifikasi peluang, dan mengatasi tantangan yang ada dalam data.

User Story

Sebagai data analis, saya memvalidasi dataset secara teliti untuk memastikan kualitas dan integritas data. Proses ini mencakup pengecekan missing values, duplikat, statistik deskriptif, dan memastikan format data sudah sesuai. Dengan memanfaatkan teknik analitik yang lebih canggih, saya berupaya mengungkap pola dan korelasi tersembunyi yang dapat memandu pengambilan keputusan strategis.

Bagian Tambahan

EDA (Exploratory Data Analysis)

  1. Tren Penjualan dan Profit Tahunan: Mengamati tren penjualan dan profit dari tahun ke tahun. Klik Di Sini
  2. Penjualan per Kategori Produk: Mengidentifikasi kategori produk paling populer dan menampilkan 5 product_name teratas dari kategori tersebut. Klik Di Sini
  3. Distribusi Metode Pengiriman: Mengamati distribusi metode pengiriman yang digunakan. Klik Di Sini
  4. Pendapatan per Negara/Wilayah: Mengidentifikasi negara atau wilayah yang memberikan pendapatan tertinggi. Klik Di Sini
  5. Frekuensi Pembelian Pelanggan: Memahami seberapa sering pelanggan melakukan pembelian. Klik Di Sini
  6. Distribusi Prioritas Pesanan: Mengamati distribusi prioritas pesanan. Klik Di Sini
  7. Korelasi antara Diskon dan Profit: Menentukan apakah ada korelasi antara jumlah diskon yang diberikan dengan profit yang diperoleh. Klik Di Sini
  8. Profit Bulanan (Setelah Diskon): Melihat profit per bulan untuk setiap tahun. Klik Di Sini
  9. Rata-rata Profit (Setelah Diskon) per Pesanan: Menghitung rata-rata profit dari setiap pesanan tanpa outlier. Klik Di Sini
  10. Analisis RFM: Menentukan segmentasi pelanggan berdasarkan Recency, Frequency, dan Monetary. Klik Di Sini
  11. Distribusi Penjualan per Segmen Pelanggan: Memberikan gambaran distribusi pendapatan penjualan di berbagai segmen pelanggan. Klik Di Sini

Tentang Data

Data Penjualan Superstore: Deskripsi Kolom

Nama Kolom Deskripsi
order_id Identifikasi unik untuk setiap pesanan
order_date Tanggal pesanan dibuat
ship_date Tanggal pesanan dikirimkan
ship_mode Metode pengiriman (mis. Standard Class, Second Class, Same Day)
customer_name Nama pelanggan yang membuat pesanan
segment Segmen pelanggan (mis. Consumer, Corporate, Home Office)
state Negara bagian atau provinsi tempat pelanggan berada
country Negara tempat pelanggan berada
market Wilayah pasar (mis. APAC, EMEA, EU)
region Wilayah spesifik dalam pasar (mis. North, South, Oceania)
product_id Identifikasi unik untuk setiap produk
category Kategori produk (mis. Office Supplies, Furniture, Technology)
sub_category Sub-kategori produk (mis. Storage, Paper, Appliances)
product_name Nama produk
sales Jumlah penjualan untuk pesanan tersebut
quantity Jumlah produk yang dipesan
discount Diskon yang diterapkan pada pesanan
profit Profit yang diperoleh dari pesanan
shipping_cost Biaya pengiriman pesanan
order_priority Tingkat prioritas pesanan (mis. High, Medium, Low, Critical)
year Tahun pesanan dibuat

10 Sampel Data per Kolom

order_id order_date ship_date ship_mode customer_name segment state country market region product_id category sub_category product_name sales quantity discount profit shipping_cost order_priority year
AG-2011-2040 1/1/2011 1/6/2011 Standard Class Toby Braunhardt Consumer Constantine Algeria Africa Africa OFF-TEN-10000025 Office Supplies Storage Tenex Lockers, Blue 408 2 0 106.14 35.46 Medium 2011
IN-2011-47883 1/1/2011 1/8/2011 Standard Class Joseph Holt Consumer New South Wales Australia APAC Oceania OFF-SU-10000618 Office Supplies Supplies Acme Trimmer, High Speed 120 3 0.1 36.036 9.72 Medium 2011
HU-2011-1220 1/1/2011 1/5/2011 Second Class Annie Thurman Consumer Budapest Hungary EMEA EMEA OFF-TEN-10001585 Office Supplies Storage Tenex Box, Single Width 66 4 0 29.64 8.17 High 2011
IT-2011-3647632 1/1/2011 1/5/2011 Second Class Eugene Moren Home Office Stockholm Sweden EU North OFF-PA-10001492 Office Supplies Paper Enermax Note Cards, Premium 45 3 0.5 -26.055 4.82 High 2011
IN-2011-47883 1/1/2011 1/8/2011 Standard Class Joseph Holt Consumer New South Wales Australia APAC Oceania FUR-FU-10003447 Furniture Furnishings Eldon Light Bulb, Duo Pack 114 5 0.1 37.77 4.70 Medium 2011
IN-2011-47883 1/1/2011 1/8/2011 Standard Class Joseph Holt Consumer New South Wales Australia APAC Oceania OFF-PA-10001968 Office Supplies Paper Eaton Computer Printout Paper, 8.5 x 11 55 2 0.1 15.342 1.80 Medium 2011
CA-2011-1510 1/2/2011 1/6/2011 Standard Class Magdelene Morse Consumer Ontario Canada Canada Canada TEC-OKI-10002750 Technology Machines Okidata Inkjet, Wireless 314 1 0 3.12 24.10 Medium 2011
IN-2011-79397 1/3/2011 1/3/2011 Same Day Kean Nguyen Corporate New South Wales Australia APAC Oceania OFF-AP-10000304 Office Supplies Appliances Hoover Microwave, White 276 1 0.1 110.412 125.32 Critical 2011
ID-2011-80230 1/3/2011 1/9/2011 Standard Class Ken Lonsdale Consumer Auckland New Zealand APAC Oceania TEC-CO-10004182 Technology Copiers Hewlett Wireless Fax, Laser 912 4 0.4 -319.464 107.1 Low 2011

Import Library

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import datetime as dt
from datetime import date
from scipy.stats import mode
df = pd.read_excel('superstore_sales.xlsx')

Pengecekan Kualitas Data

Missing Values

print(df.isnull().sum())

image


Tipe Data

df.dtypes

image


Statistik Deskriptif

print(df.describe())

image


Pengecekan Duplikat

duplicate_rows = df.duplicated()

print("Duplicate Rows(True):", duplicate_rows.sum())
print("Duplicate Rows(False):", (len(duplicate_rows) - duplicate_rows.sum()))

image


1. Tren Penjualan dan Profit Tahunan

yearly_sales = df.groupby('year')['sales'].sum()
ax = yearly_sales.plot(kind='bar',color='darkblue', xlabel='Year', ylabel='Total Sales', title='Year to Year Sales Trend')

for i, v in enumerate(yearly_sales):
    ax.text(i, v + 0.03 * v, '${:,.0f}'.format(v), ha='center', va='bottom')
ax.set_ylim(0, max(yearly_sales) * 1.1)
ax.set_xticklabels(yearly_sales.index, rotation=45, ha='right')
plt.show()

image

yearly_profit = df.groupby('year')['profit'].sum()
ax = yearly_profit.plot(kind='bar',color='green', xlabel='Year', ylabel='Total profit', title='Year to Year profit Trend')

for i, v in enumerate(yearly_profit):
    ax.text(i, v + 0.03 * v, '${:,.0f}'.format(v), ha='center', va='bottom')
ax.set_ylim(0, max(yearly_profit) * 1.1)
ax.set_xticklabels(yearly_profit.index, rotation=45, ha='right')
plt.show()

image


2. Penjualan per Kategori Produk

category_sales = df.groupby('category')['sales'].sum().sort_values(ascending=False)
ax = category_sales.plot(kind='bar',color='darkblue', xlabel='Product Category', ylabel='Total Sales', title='Sales by Product Category')

for i, v in enumerate(category_sales):
    ax.text(i, v + 0.03 * v, '${:,.0f}'.format(v), ha='center', va='bottom')

ax.set_ylim(0, max(category_sales) * 1.1)
ax.set_xticklabels(category_sales.index, rotation=45, ha='right')
plt.show()

image

# fungsi untuk mempersingkat nilai 'product_name' yang panjang
def shorten_name(name, max_length=30):
    if len(name) > max_length:
        return name[:max_length] + '...'
    else:
        return name

# memfilter data untuk setiap kategori
technology_data = df[df['category'] == 'Technology']
furniture_data = df[df['category'] == 'Furniture']
office_supplies_data = df[df['category'] == 'Office Supplies']

# fungsi untuk mendapatkan 5 product_name teratas
def get_top_products(data):
    top_products = data.groupby('product_name')['sales'].sum().sort_values(ascending=False).head(5)
    top_products.index = top_products.index.map(shorten_name)
    return top_products

# Top 5 produk untuk setiap kategori
top_tech_products = get_top_products(technology_data)
top_furniture_products = get_top_products(furniture_data)
top_office_supplies_products = get_top_products(office_supplies_data)
# membuat bar chart untuk setiap kategori
fig, axs = plt.subplots(3, 1, figsize=(12, 18))

# Technology
axs[0].barh(top_tech_products.index, top_tech_products.values, color='skyblue')
axs[0].set_title('Top 5 Product - Technology')
axs[0].set_xlabel('Total Sales (K)')
axs[0].set_ylabel('Product Name')
for i, v in enumerate(top_tech_products.values):
    axs[0].text(v + 0.01 * v, i, '${:,.0f}K'.format(v / 1000), color='blue', va='center')

# Furniture
axs[1].barh(top_furniture_products.index, top_furniture_products.values, color='lightgreen')
axs[1].set_title('Top 5 Product - Furniture')
axs[1].set_xlabel('Total Sales (K)')
axs[1].set_ylabel('Product Name')
for i, v in enumerate(top_furniture_products.values):
    axs[1].text(v + 0.01 * v, i, '${:,.0f}K'.format(v / 1000), color='green', va='center')

# Office Supplies
axs[2].barh(top_office_supplies_products.index, top_office_supplies_products.values, color='salmon')
axs[2].set_title('Top 5 Product - Office Supplies')
axs[2].set_xlabel('Total Sales (K)')
axs[2].set_ylabel('Product Name')
for i, v in enumerate(top_office_supplies_products.values):
    axs[2].text(v + 0.01 * v, i, '${:,.0f}K'.format(v / 1000), color='red', va='center')

# menambahkan padding di sudut kiri
plt.subplots_adjust(left=0.3, right=0.9, top=0.9, bottom=0.1)

plt.tight_layout()
plt.show()

image


3. Distribusi Metode Pengiriman

sns.countplot(x='ship_mode', data=df, color='skyblue')
plt.title('Shipping Mode Distribution')

for p in plt.gca().patches:
    plt.gca().annotate('{:,.0f}'.format(p.get_height()), (p.get_x() + p.get_width() / 2., p.get_height()), 
                       ha='center', va='bottom', xytext=(0, 5), textcoords='offset points')

plt.ylim(0, max(df['ship_mode'].value_counts()) * 1.1)
plt.xlabel('Ship Mode')
plt.ylabel('Total Shipment')
plt.show()

image


4. Pendapatan per Negara/Wilayah

def format_thousands(x):
    return '${:.1f}K'.format(x / 1000)

top_10_countries_profit = df.groupby('country')['profit'].sum().sort_values(ascending=False).head(10)

ax = top_10_countries_profit.plot(kind='barh',color='green', xlabel='Total profit', ylabel='Country', title='Profit by Country (Top 10)')

for i, v in enumerate(top_10_countries_profit):
    ax.text(v + 0.02 * v, i, format_thousands(v), ha='left', va='center')

ax.set_xlim(0, max(top_10_countries_profit) * 1.15)

plt.show()

image


5. Frekuensi Pembelian Pelanggan

customer_frequency = df['customer_name'].value_counts()

plt.hist(customer_frequency, bins=30, color='skyblue', alpha=0.7)

# Median, Q1, Q3
median = np.percentile(customer_frequency, 50)
q1 = np.percentile(customer_frequency, 25)
q3 = np.percentile(customer_frequency, 75)

# mode_value adalah nilai yang paling sering muncul, mis: '68' | mode_count adalah berapa kali nilai tersebut muncul, mis: '68' muncul sebanyak 30 kali
mode_value = mode(customer_frequency)[0]
mode_count = mode(customer_frequency)[1]

# menambahkan garis untuk median, Q1, Q3
plt.axvline(x=median, color='red', linestyle='--', linewidth=1.5, label='Median: {:.0f}'.format(median))
plt.axvline(x=q1, color='green', linestyle='--', linewidth=1.5, label='Q1: {:.0f}'.format(q1))
plt.axvline(x=q3, color='orange', linestyle='--', linewidth=1.5, label='Q3: {:.0f}'.format(q3))

# menambahkan garis untuk mode
if mode_value >= plt.gca().get_xlim()[0] and mode_value <= plt.gca().get_xlim()[1]:
    plt.axvline(x=mode_value, color='purple', linestyle='--', linewidth=1.5, label='Mode: {:.0f} ({}x)'.format(mode_value, mode_count))
else:
    plt.text(mode_value, plt.gca().get_ylim()[1] * 0.6, 'Mode: {:.0f} ({} x)'.format(mode_value, mode_count), color='purple', ha='center', va='center')

plt.legend()

plt.xlabel('Purchase Frequency')
plt.ylabel('Total Customers')
plt.title('Customer Purchase Frequency')

plt.show()

image


6. Distribusi Prioritas Pesanan

# membuat Countplot
sns.countplot(x='order_priority', data=df, color='skyblue')

# menambahkan nilai numerik di atas bar
for p in plt.gca().patches:
    plt.gca().annotate('{:,.0f}'.format(p.get_height()), (p.get_x() + p.get_width() / 2., p.get_height()), 
                       ha='center', va='bottom', xytext=(0, 1), textcoords='offset points')

plt.title('Order Priority Distribution')
plt.xlabel('Order Priority')
plt.ylabel('Total Order')

plt.show()

image


7. Korelasi antara Diskon dan Profit

# membuat scatter plot antara Discount dan profit
sns.scatterplot(x='discount', y='profit', data=df, color='skyblue', alpha=0.8)

# variabel yang menghitung koefisien korelasi antara discount dan profit
correlation_coefficient = df['discount'].corr(df['profit'])

# menambahkan koefisien korelasi ke dalam plot
plt.text(0.2, -2000, 'Correlation Coefficient: {:.2f}'.format(correlation_coefficient), fontsize=10, color='red')

plt.xlabel('Discount (%)')
plt.ylabel('Profit')
plt.title('Correlation between Discount and Profit')

plt.show()

image


8. Profit Bulanan (Setelah Diskon)

def format_thousands(x):
    return '{:.1f}K'.format(x / 1000)

df['order_date'] = pd.to_datetime(df['order_date'])

df['year'] = df['order_date'].dt.year
df['month'] = df['order_date'].dt.month

monthly_profit = df.groupby(['year', 'month'])['profit'].sum()

fig, axes = plt.subplots(2, 2, figsize=(15, 10))

# melakukan looping untuk setiap sumbu subplot dan tahun yang sesuai dari 2011 hingga 2014
for ax, year in zip(axes.flatten(), range(2011, 2015)):
    data = monthly_profit.loc[year]
    ax.plot(data.index, data.values, marker='o', linestyle='-', alpha=0.5)
    ax.set_title('Monthly Profit by Year {}'.format(year))
    ax.set_xlabel('Months')
    ax.set_ylabel('Profit')
    
    for i, v in zip(data.index, data.values):
        ax.text(i, v * 1.02, format_thousands(v), ha='center', va='bottom')

    ax.set_ylim(0, max(data.values) * 1.08)

# menambahkan legenda
axes[0, 0].legend(['Profit'], loc='upper left')
axes[0, 1].legend(['Profit'], loc='upper left')
axes[1, 0].legend(['Profit'], loc='upper left')
axes[1, 1].legend(['Profit'], loc='upper left')

plt.tight_layout()
plt.show()

image


9. Rata-rata Profit (Setelah Diskon) per Pesanan

# menghitung statistik deskriptif profit per pesanan
order_income_stats = df.groupby('order_id')['profit'].sum().describe()

# menghitung IQR
Q1 = order_income_stats['25%']
Q3 = order_income_stats['75%']
IQR = Q3 - Q1

# mendefinisikan batas atas dan bawah tanpa outlier
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
avg_profit_order_no_outliers = df.groupby('order_id')['profit'].sum().loc[(df.groupby('order_id')['profit'].sum() >= lower_bound) & (df.groupby('order_id')['profit'].sum() <= upper_bound)]
avg_profit_order_no_outliers.describe()

Output :

| Statistic | Value | |———–|————–| | Count | 20500.000000 | | Mean | 32.443220 | | Std | 62.547835 | | Min | -133.548000 | | 25% | 1.500000 | | 50% | 17.252400 | | 75% | 59.400000 | | Max | 222.740000 |

plt.figure(figsize=(10, 6))
avg_profit_order_no_outliers.hist(bins=30, color='skyblue', edgecolor='black')
plt.xlabel('Profit per Order')
plt.ylabel('Total Order')
plt.title('Profit per Order Distribution without Outliers')

plt.text(0.5, 0.95, f"Count: {avg_profit_order_no_outliers.count()}", transform=plt.gca().transAxes)
plt.text(0.5, 0.9, f"Mean: {avg_profit_order_no_outliers.mean():.2f}", transform=plt.gca().transAxes)
plt.text(0.5, 0.85, f"Std: {avg_profit_order_no_outliers.std():.2f}", transform=plt.gca().transAxes)
plt.text(0.5, 0.8, f"Min: {avg_profit_order_no_outliers.min():.2f}", transform=plt.gca().transAxes)
plt.text(0.5, 0.75, f"25%: {avg_profit_order_no_outliers.quantile(0.25):.2f}", transform=plt.gca().transAxes)
plt.text(0.5, 0.7, f"50%: {avg_profit_order_no_outliers.quantile(0.50):.2f}", transform=plt.gca().transAxes)
plt.text(0.5, 0.65, f"75%: {avg_profit_order_no_outliers.quantile(0.75):.2f}", transform=plt.gca().transAxes)
plt.text(0.5, 0.6, f"Max: {avg_profit_order_no_outliers.max():.2f}", transform=plt.gca().transAxes)

plt.grid(False)
plt.show()

image


10. Analisis RFM

latest_date = df['order_date'].max()

# menghitung nilai Recency, Frequency, dan Monetary
rfm_table = df.groupby('customer_name').agg({
    'order_date': lambda x: (latest_date - x.max()).days,
    'order_id': 'count',
    'profit': 'sum'
})

# mengganti nama kolom menjadi Recency, Frequency, dan Monetary
rfm_table.rename(columns={
    'order_date': 'Recency',
    'order_id': 'Frequency',
    'profit': 'Monetary'
}, inplace=True)

# melakukan normalisasi nilai RFM
rfm_table['Recency'] = (rfm_table['Recency'] - rfm_table['Recency'].min()) / (rfm_table['Recency'].max() - rfm_table['Recency'].min())
rfm_table['Frequency'] = (rfm_table['Frequency'] - rfm_table['Frequency'].min()) / (rfm_table['Frequency'].max() - rfm_table['Frequency'].min())
rfm_table['Monetary'] = (rfm_table['Monetary'] - rfm_table['Monetary'].min()) / (rfm_table['Monetary'].max() - rfm_table['Monetary'].min())

# memberikan skor RFM
rfm_table['R_Score'] = pd.qcut(rfm_table['Recency'], 4, ['1', '2', '3', '4'])
rfm_table['F_Score'] = pd.qcut(rfm_table['Frequency'], 4, ['4', '3', '2', '1'])
rfm_table['M_Score'] = pd.qcut(rfm_table['Monetary'], 4, ['4', '3', '2', '1'])

# menggabungkan skor menjadi satu kolom
rfm_table['RFM_Score'] = rfm_table['R_Score'].astype(str) + rfm_table['F_Score'].astype(str) + rfm_table['M_Score'].astype(str)
rfm_table.sample(5)

Output :

| customer_name | Recency | Frequency | Monetary | R_Score | F_Score | M_Score | RFM_Score | |—————–|———-|———–|———-|———|———|———|———–| | Tamara Manning | 0.149533 | 0.329114 | 0.545024 | 4 | 4 | 2 | 442 | | Susan Gilcrest | 0.037383 | 0.367089 | 0.451475 | 2 | 3 | 4 | 234 | | Andy Reiter | 0.014019 | 0.075949 | 0.626710 | 1 | 4 | 1 | 141 | | Brian Moss | 0.077103 | 0.620253 | 0.710812 | 3 | 1 | 1 | 311 | | Joseph Airdo | 0.000000 | 0.594937 | 0.471780 | 1 | 1 | 4 | 114 |

plt.figure(figsize=(14, 18))

# membuat scatter plot untuk Recency dan Frequency
plt.subplot(3, 1, 1)
sns.scatterplot(x='Recency', y='Frequency', size='Monetary', sizes=(20, 200), hue='Monetary', data=rfm_table, palette='viridis', legend=False)
plt.title('Recency vs Frequency')
plt.xlabel('Recency')
plt.ylabel('Frequency')

# membuat scatter plot untuk Frequency dan Monetary
plt.subplot(3, 1, 2)
sns.scatterplot(x='Frequency', y='Monetary', size='Recency', sizes=(20, 200), hue='Recency', data=rfm_table, palette='viridis', legend=False)
plt.title('Frequency vs Monetary')
plt.xlabel('Frequency')
plt.ylabel('Monetary')

# membuat scatter plot untuk Recency dan Monetary
plt.subplot(3, 1, 3)
sns.scatterplot(x='Recency', y='Monetary', size='Frequency', sizes=(20, 200), hue='Frequency', data=rfm_table, palette='viridis', legend=False)
plt.title('Recency vs Monetary')
plt.xlabel('Recency')
plt.ylabel('Monetary')

plt.tight_layout()
plt.show()

image


11. Distribusi Penjualan per Segmen Pelanggan

Bagian ini memberikan gambaran distribusi pendapatan penjualan di berbagai segmen pelanggan.

sales_by_segment = df.groupby('segment')['sales'].sum().reset_index()
sales_numeric = sales_by_segment['sales'].copy()
# memformat tanpa notasi ilmiah atau koma
sales_by_segment['sales'] = sales_by_segment['sales'].apply(lambda x: f'${x:,.0f}')
print(sales_by_segment)

Output :

| segment | sales | |————–|————–| | Consumer | $6,507,949 | | Corporate | $3,824,698 | | Home Office | $2,309,855 |

segments = sales_by_segment['segment']

# warna untuk setiap segmen
colors = ['green', 'skyblue', 'orange']
plt.figure(figsize=(10, 7))

# fungsi untuk menampilkan persentase dan nilai absolut
def autopct_format(values):
    def my_format(pct):
        total = sum(values)
        val = int(round(pct*total/100.0))
        return f'{pct:.1f}%\n(${val:,.0f})'
    return my_format

plt.pie(sales_numeric, labels=segments, autopct=autopct_format(sales_numeric), startangle=140, colors=colors, shadow=True, explode=(0.05, 0, 0))
plt.title('Sales by Segment', fontsize=16)
plt.legend(segments, title="Segments", loc="center left", bbox_to_anchor=(1, 0, 0.5, 1))
plt.axis('equal')

plt.show()

image


Temuan dan Solusi Bisnis

1. Tren Penjualan dan Profit Tahunan

Data Penjualan:

Data Profit:

CAGR (Compound Annual Growth Rate) Penjualan

CAGR (Compound Annual Growth Rate) Profit

Ringkasan

Solusi Bisnis

Analisis CAGR untuk penjualan dan profit dari 2011 hingga 2014 menunjukkan tingkat pertumbuhan yang signifikan. Berikut beberapa solusi bisnis berdasarkan tren tersebut:


2. Penjualan per Kategori Produk

Penjualan per Kategori Produk:

TOP 5 Produk - Technology:

  1. Canon ImageCLASS 2200 = $62K
  2. Nokia Smart Phone = $72K
  3. Motorola Smartphone = $73K
  4. Cisco Smart Phone = $76K
  5. Apple Smart Phone = $87K

TOP 5 Produk - Furniture:

  1. Novimex Executive Leather = $41K
  2. SAFCO Executive Leather = $42K
  3. Harbour Creations Executive = $50K
  4. Office Star Executive = $51K
  5. Hon Executive Leather = $58K

TOP 5 Produk - Office Supplies:

  1. Smead Lockers = $29K
  2. Rogers File Cart = $29K
  3. Hoover Stove, Red = $32K
  4. Hoover Stove, White = $33K
  5. Eldon File Cart = $34K

Solusi Bisnis

Meningkatkan Pemasaran untuk Produk Teknologi Berdemand Tinggi

Memperluas Ragam Produk di Kategori Furniture dan Office Supplies

Mengoptimalkan Manajemen Inventaris dan Rantai Pasokan


3. Distribusi Metode Pengiriman

Distribusi Metode Pengiriman:

Insight

Solusi Bisnis

Mengoptimalkan Pengiriman Standard Class

Mempromosikan Pilihan Pengiriman Lebih Cepat

Memperluas dan Mempromosikan Same Day Shipping


4. Pendapatan per Negara/Wilayah

Temuan Pendapatan per Negara/Wilayah:

Insight

Solusi Bisnis

Penetrasi dan Ekspansi Pasar

Fokus pada Pasar Berkembang


5. Frekuensi Pembelian Pelanggan

Temuan Frekuensi Pembelian Pelanggan:

Insight

Solusi Bisnis

Kampanye Pemasaran yang Dipersonalisasi

Umpan Balik dan Keterlibatan


6. Distribusi Prioritas Pesanan

Temuan Distribusi Prioritas Pesanan:

Insight

Solusi Bisnis

Optimalisasi Alur Kerja

Komunikasi dengan Pelanggan


7. Korelasi antara Diskon dan Profit

Korelasi antara Diskon dan Profit:

Insight

Solusi Bisnis

Pemberian Diskon yang Tertarget


8. Profit Bulanan (Setelah Diskon)

Tahun 2011:

Tahun 2012:

Tahun 2013:

Tahun 2014:

Insight

Solusi Bisnis

Promosi Musiman

Optimalisasi Biaya


9. Rata-rata Profit (Setelah Diskon) per Pesanan

Insight

Solusi Bisnis

Analisis Profitabilitas

Manajemen Biaya


10. Distribusi Penjualan per Segmen Pelanggan

Insight

Solusi Bisnis

Strategi Pemasaran Tertarget

Optimalisasi Ragam Produk