Ανάλυση Εφοδιαστικής Αλυσίδας με χρήση Python
April 16, 2023ο εφοδιαστική αλυσίδα είναι το δίκτυο παραγωγής και 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:
stock_chart = px.line(data, x='SKU', y='Stock levels', title="Stock Levels by SKU") stock_chart.show()

Τώρα ας ρίξουμε μια ματιά στην ποσότητα παραγγελίας κάθε SKU:
order_quantity_chart = px.bar(data, x='SKU', y='Order quantities', title="Order Quantity by SKU") order_quantity_chart.show()

Ανάλυση κόστους
Τώρα ας αναλύσουμε το κόστος αποστολής των Μεταφορέων:
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. Μη διστάσετε να κάνετε πολύτιμες ερωτήσεις στην παρακάτω ενότητα σχολίων.