Ανάλυση Εφοδιαστικής Αλυσίδας με χρήση Python

Ανάλυση Εφοδιαστικής Αλυσίδας με χρήση Python

April 16, 2023 0 By admin

ο εφοδιαστική αλυσίδα είναι το δίκτυο παραγωγής και logistics που εμπλέκεται στην παραγωγή και παράδοση αγαθών στους πελάτες. Και Ανάλυση Εφοδιαστικής Αλυσίδας σημαίνει ανάλυση διαφόρων στοιχείων μιας Εφοδιαστικής Αλυσίδας για να κατανοήσετε πώς να βελτιώσετε την αποτελεσματικότητα της Εφοδιαστικής Αλυσίδας για να δημιουργήσετε περισσότερη αξία για τους πελάτες. Έτσι, εάν θέλετε να μάθετε πώς να αναλύετε την Εφοδιαστική Αλυσίδα, αυτό το άρθρο είναι για εσάς. Σε αυτό το άρθρο, θα σας μεταφέρω στην εργασία της Ανάλυσης Εφοδιαστικής Αλυσίδας χρησιμοποιώντας Python.

Ανάλυση Εφοδιαστικής Αλυσίδας: Σύνολο δεδομένων

Για να αναλύσουμε την αλυσίδα εφοδιασμού μιας εταιρείας, χρειαζόμαστε δεδομένα για τα διάφορα στάδια της εφοδιαστικής αλυσίδας, όπως δεδομένα σχετικά με την προμήθεια, την κατασκευή, τη μεταφορά, τη διαχείριση αποθεμάτων, τις πωλήσεις και τα δημογραφικά στοιχεία πελατών.

Βρήκα ένα ιδανικό σύνολο δεδομένων για αυτήν την εργασία που περιλαμβάνει δεδομένα σχετικά με την αλυσίδα εφοδιασμού μιας startup Fashion and Beauty. Μπορείτε να κατεβάσετε το σύνολο δεδομένων από εδώ.

Στην παρακάτω ενότητα, θα σας μεταφέρω στην εργασία της Ανάλυσης Εφοδιαστικής Αλυσίδας χρησιμοποιώντας τη γλώσσα προγραμματισμού Python.

Ανάλυση Εφοδιαστικής Αλυσίδας με χρήση Python

Ας ξεκινήσουμε με το έργο της Ανάλυσης Εφοδιαστικής Αλυσίδας εισάγοντας τις απαραίτητες βιβλιοθήκες Python και σύνολο δεδομένων:

import pandas as pd
import plotly.express as px
import plotly.io as pio
import plotly.graph_objects as go
pio.templates.default = "plotly_white"

data = pd.read_csv("supply_chain_data.csv")
print(data.head())
  Product type   SKU      Price  Availability  Number of products sold  \
0     haircare  SKU0  69.808006            55                      802   
1     skincare  SKU1  14.843523            95                      736   
2     haircare  SKU2  11.319683            34                        8   
3     skincare  SKU3  61.163343            68                       83   
4     skincare  SKU4   4.805496            26                      871   

   Revenue generated Customer demographics  Stock levels  Lead times  \
0        8661.996792            Non-binary            58           7   
1        7460.900065                Female            53          30   
2        9577.749626               Unknown             1          10   
3        7766.836426            Non-binary            23          13   
4        2686.505152            Non-binary             5           3   

   Order quantities  ...  Location Lead time  Production volumes  \
0                96  ...    Mumbai        29                 215   
1                37  ...    Mumbai        23                 517   
2                88  ...    Mumbai        12                 971   
3                59  ...   Kolkata        24                 937   
4                56  ...     Delhi         5                 414   

  Manufacturing lead time Manufacturing costs  Inspection results  \
0                      29           46.279879             Pending   
1                      30           33.616769             Pending   
2                      27           30.688019             Pending   
3                      18           35.624741                Fail   
4                       3           92.065161                Fail   

   Defect rates  Transportation modes   Routes       Costs  
0      0.226410                  Road  Route B  187.752075  
1      4.854068                  Road  Route B  503.065579  
2      4.580593                   Air  Route C  141.920282  
3      4.746649                  Rail  Route A  254.776159  
4      3.145580                   Air  Route A  923.440632  

[5 rows x 24 columns]

Ας ρίξουμε μια ματιά στα περιγραφικά στατιστικά στοιχεία του συνόλου δεδομένων:

            Price  Availability  Number of products sold  Revenue generated  \
count  100.000000    100.000000               100.000000         100.000000   
mean    49.462461     48.400000               460.990000        5776.048187   
std     31.168193     30.743317               303.780074        2732.841744   
min      1.699976      1.000000                 8.000000        1061.618523   
25%     19.597823     22.750000               184.250000        2812.847151   
50%     51.239831     43.500000               392.500000        6006.352023   
75%     77.198228     75.000000               704.250000        8253.976921   
max     99.171329    100.000000               996.000000        9866.465458   

       Stock levels  Lead times  Order quantities  Shipping times  \
count    100.000000  100.000000        100.000000      100.000000   
mean      47.770000   15.960000         49.220000        5.750000   
std       31.369372    8.785801         26.784429        2.724283   
min        0.000000    1.000000          1.000000        1.000000   
25%       16.750000    8.000000         26.000000        3.750000   
50%       47.500000   17.000000         52.000000        6.000000   
75%       73.000000   24.000000         71.250000        8.000000   
max      100.000000   30.000000         96.000000       10.000000   

       Shipping costs   Lead time  Production volumes  \
count      100.000000  100.000000          100.000000   
mean         5.548149   17.080000          567.840000   
std          2.651376    8.846251          263.046861   
min          1.013487    1.000000          104.000000   
25%          3.540248   10.000000          352.000000   
50%          5.320534   18.000000          568.500000   
75%          7.601695   25.000000          797.000000   
max          9.929816   30.000000          985.000000   

       Manufacturing lead time  Manufacturing costs  Defect rates       Costs  
count                100.00000           100.000000    100.000000  100.000000  
mean                  14.77000            47.266693      2.277158  529.245782  
std                    8.91243            28.982841      1.461366  258.301696  
min                    1.00000             1.085069      0.018608  103.916248  
25%                    7.00000            22.983299      1.009650  318.778455  
50%                   14.00000            45.905622      2.141863  520.430444  
75%                   23.00000            68.621026      3.563995  763.078231  
max                   30.00000            99.466109      4.939255  997.413450  

Τώρα ας ξεκινήσουμε με την ανάλυση της Εφοδιαστικής Αλυσίδας εξετάζοντας τη σχέση μεταξύ της τιμής των προϊόντων και των εσόδων που δημιουργούνται από αυτά:

fig = px.scatter(data, x='Price', 
                 y='Revenue generated', 
                 color="Product type", 
                 hover_data=['Number of products sold'], 
                 trendline="ols")
fig.show()
Ανάλυση Εφοδιαστικής Αλυσίδας: Αριθμός πωληθέντων προϊόντων

Έτσι, η εταιρεία αντλεί περισσότερα έσοδα από προϊόντα περιποίησης δέρματος και όσο υψηλότερη είναι η τιμή των προϊόντων περιποίησης δέρματος, τόσο περισσότερα έσοδα δημιουργούν. Τώρα ας ρίξουμε μια ματιά στις πωλήσεις ανά τύπο προϊόντος:

sales_data = data.groupby('Product type')['Number of products sold'].sum().reset_index()

pie_chart = px.pie(sales_data, values="Number of products sold", names="Product type", 
                   title="Sales by Product Type", 
                   hover_data=['Number of products sold'],
                   hole=0.5,
                   color_discrete_sequence=px.colors.qualitative.Pastel)
                   
pie_chart.update_traces(textposition='inside', textinfo='percent+label')
pie_chart.show()
Πωλήσεις ανά τύπο προϊόντος

Έτσι, το 45% της επιχείρησης προέρχεται από προϊόντα περιποίησης δέρματος, το 29,5% από την περιποίηση μαλλιών και το 25,5% από τα καλλυντικά. Τώρα ας ρίξουμε μια ματιά στα συνολικά έσοδα που παράγονται από τους μεταφορείς:

total_revenue = data.groupby('Shipping carriers')['Revenue generated'].sum().reset_index()
fig = go.Figure()
fig.add_trace(go.Bar(x=total_revenue['Shipping carriers'], 
                     y=total_revenue['Revenue generated']))
fig.update_layout(title="Total Revenue by Shipping Carrier", 
                  xaxis_title="Shipping Carrier", 
                  yaxis_title="Revenue Generated")
fig.show()
Ανάλυση Εφοδιαστικής Αλυσίδας: Συνολικά έσοδα ανά μεταφορέα

Έτσι, η εταιρεία χρησιμοποιεί τρεις μεταφορείς για τη μεταφορά και ο Μεταφορέας Β βοηθά την εταιρεία να δημιουργήσει περισσότερα έσοδα. Τώρα ας ρίξουμε μια ματιά στον μέσο χρόνο παράδοσης και το μέσο κόστος κατασκευής για όλα τα προϊόντα της εταιρείας:

avg_lead_time = data.groupby('Product type')['Lead time'].mean().reset_index()
avg_manufacturing_costs = data.groupby('Product type')['Manufacturing costs'].mean().reset_index()
result = pd.merge(avg_lead_time, avg_manufacturing_costs, on='Product type')
result.rename(columns={'Lead time': 'Average Lead Time', 'Manufacturing costs': 'Average Manufacturing Costs'}, inplace=True)
print(result)
  Product type  Average Lead Time  Average Manufacturing Costs
0    cosmetics          13.538462                    43.052740
1     haircare          18.705882                    48.457993
2     skincare          18.000000                    48.993157

Ανάλυση SKU

Υπάρχει μια στήλη στο σύνολο δεδομένων ως SKU. Πρέπει να το έχετε ακούσει για πρώτη φορά. Έτσι, το SKU σημαίνει Μονάδες Διατήρησης Αποθεμάτων. Είναι σαν ειδικοί κωδικοί που βοηθούν τις εταιρείες να παρακολουθούν όλα τα διαφορετικά πράγματα που έχουν προς πώληση. Φανταστείτε ότι έχετε ένα μεγάλο κατάστημα παιχνιδιών με πολλά παιχνίδια. Κάθε παιχνίδι είναι διαφορετικό και έχει το όνομά του και την τιμή του, αλλά όταν θέλετε να μάθετε πόσα σας έχουν απομείνει, χρειάζεστε έναν τρόπο να τα αναγνωρίσετε. Έτσι δίνετε σε κάθε παιχνίδι έναν μοναδικό κωδικό, σαν έναν μυστικό αριθμό που μόνο το κατάστημα γνωρίζει. Αυτός ο μυστικός αριθμός ονομάζεται SKU.

Ελπίζω να καταλάβατε τώρα τι είναι το SKU. Τώρα ας αναλύσουμε τα έσοδα που παράγονται από κάθε SKU:

revenue_chart = px.line(data, x='SKU', 
                        y='Revenue generated', 
                        title="Revenue Generated by SKU")
revenue_chart.show()
Έσοδα που δημιουργούνται από SKU

Υπάρχει μια άλλη στήλη στο σύνολο δεδομένων ως επίπεδα μετοχών. Τα επίπεδα αποθεμάτων αναφέρονται στον αριθμό των προϊόντων που ένα κατάστημα ή μια επιχείρηση έχει στο απόθεμά της. Τώρα ας ρίξουμε μια ματιά στα επίπεδα μετοχών κάθε SKU:

stock_chart = px.line(data, x='SKU', 
                      y='Stock levels', 
                      title="Stock Levels by SKU")
stock_chart.show()
Ανάλυση Εφοδιαστικής Αλυσίδας: Επίπεδα αποθεμάτων ανά SKU

Τώρα ας ρίξουμε μια ματιά στην ποσότητα παραγγελίας κάθε SKU:

order_quantity_chart = px.bar(data, x='SKU', 
                              y='Order quantities', 
                              title="Order Quantity by SKU")
order_quantity_chart.show()
Ποσότητα παραγγελίας ανά SKU

Ανάλυση κόστους

Τώρα ας αναλύσουμε το κόστος αποστολής των Μεταφορέων:

shipping_cost_chart = px.bar(data, x='Shipping carriers', 
                             y='Shipping costs', 
                             title="Shipping Costs by Carrier")
shipping_cost_chart.show()
Έξοδα αποστολής ανά μεταφορέα

Σε μία από τις παραπάνω απεικονίσεις, ανακαλύψαμε ότι ο Μεταφορέας Β βοηθά την εταιρεία σε περισσότερα έσοδα. Είναι επίσης ο πιο δαπανηρός Μεταφορέας μεταξύ των τριών. Τώρα ας ρίξουμε μια ματιά στην κατανομή κόστους ανά τρόπο μεταφοράς:

transportation_chart = px.pie(data, 
                              values="Costs", 
                              names="Transportation modes", 
                              title="Cost Distribution by Transportation Mode",
                              hole=0.5,
                              color_discrete_sequence=px.colors.qualitative.Pastel)
transportation_chart.show()
Ανάλυση Εφοδιαστικής Αλυσίδας: Κατανομή κόστους ανά τρόπο μεταφοράς

Έτσι, η εταιρεία ξοδεύει περισσότερα σε Οδικούς και Σιδηροδρομικούς τρόπους μεταφοράς για τη μεταφορά εμπορευμάτων.

Ανάλυση ποσοστού ελαττωμάτων

Το ποσοστό ελαττωμάτων στην αλυσίδα εφοδιασμού αναφέρεται στο ποσοστό των προϊόντων που έχουν κάτι λάθος ή βρέθηκαν σπασμένα μετά την αποστολή. Ας ρίξουμε μια ματιά στο μέσο ποσοστό ελαττωμάτων όλων των τύπων προϊόντων:

defect_rates_by_product = data.groupby('Product type')['Defect rates'].mean().reset_index()

fig = px.bar(defect_rates_by_product, x='Product type', y='Defect rates',
             title="Average Defect Rates by Product Type")
fig.show()
Μέση ποσοστά ελαττωμάτων ανά τύπο προϊόντος

Έτσι, το ποσοστό ελαττωμάτων των προϊόντων περιποίησης μαλλιών είναι υψηλότερο. Τώρα ας ρίξουμε μια ματιά στα ποσοστά ελαττωμάτων ανά τρόπο μεταφοράς:

pivot_table = pd.pivot_table(data, values="Defect rates", 
                             index=['Transportation modes'], 
                             aggfunc="mean")

transportation_chart = px.pie(values=pivot_table["Defect rates"], 
                              names=pivot_table.index, 
                              title="Defect Rates by Transportation Mode",
                              hole=0.5,
                              color_discrete_sequence=px.colors.qualitative.Pastel)
transportation_chart.show()
Ανάλυση Εφοδιαστικής Αλυσίδας: Ποσοστά ελαττωμάτων ανά τρόπο μεταφοράς

Οι οδικές μεταφορές έχουν ως αποτέλεσμα υψηλότερο ποσοστό ελαττωμάτων και οι αεροπορικές μεταφορές έχουν το χαμηλότερο ποσοστό ελαττωμάτων.

Έτσι μπορείτε να αναλύσετε την αλυσίδα εφοδιασμού μιας εταιρείας χρησιμοποιώντας τη γλώσσα προγραμματισμού Python.

Περίληψη

Ανάλυση Εφοδιαστικής Αλυσίδας σημαίνει ανάλυση διαφόρων στοιχείων μιας Εφοδιαστικής Αλυσίδας για να κατανοήσετε πώς να βελτιώσετε την αποτελεσματικότητα της Εφοδιαστικής Αλυσίδας για να δημιουργήσετε περισσότερη αξία για τους πελάτες. Ελπίζω να σας άρεσε αυτό το άρθρο σχετικά με την Ανάλυση Εφοδιαστικής Αλυσίδας με χρήση Python. Μη διστάσετε να κάνετε πολύτιμες ερωτήσεις στην παρακάτω ενότητα σχολίων.