파이썬 데이터 로드
import pandas as pd
factories = pd.read_csv(r"6장\tbl_factory.csv")
warehouse = pd.read_csv(r"6장\tbl_warehouse.csv")
cost = pd.read_csv(r"6장\rel_cost.csv")
trans = pd.read_csv(r"6장\tbl_transaction.csv")
데이터 확인
- 공장 데이터 (tbl_factory.csv)
- 창고 데이터 (tbl_warehouse.csv)
- 운송 비용 데이터 (rel_cost.csv)
- 고장 부품 운송 실적 (tbl_transaction.csv)
데이터 및 메지 및 합치
# 운송 실적 + 비용
join_data = pd.merge(trans, cost, left_on=["ToFC", "FromWH"], right_on=["FCID", "WHID"], how="left")
# 공장 정보 추가
join_data = pd.merge(join_data, factories, left_on="ToFC", right_on="FCID", how="left")
# 창고 정보 추가
join_data = pd.merge(join_data, warehouse, left_on="FromWH", right_on="WHID", how="left")
# 결과 정보
join_data = join_data[["TransactionDate", "Quantity", "Cost", "ToFC", "FCName", "FCDemand", "FromWH", "WHName", "WHSupply", "WHRegion"]]
분그 및 진단 보고
north_data = join_data[join_data['WHRegion'] == '북부']
south_data = join_data[join_data['WHRegion'] == '남부']
print("북부 총비용" + str(north_data["Cost"].sum()) + "만원")
print("남부 총비용" + str(south_data["Cost"].sum()) + "만원")
print("북부 총부품 운송개수" + str(north_data["Quantity"].sum()) + "개")
print("남부 총부품 운송개수" + str(south_data["Quantity"].sum()) + "개")
tmp = (north_data["Cost"].sum() / north_data["Quantity"].sum()) * 10000
print("북부지사 부품 1개당 운송비용:" + str(int(tmp)) + "원")
tmp = (south_data["Cost"].sum() / south_data["Quantity"].sum()) * 10000
print("남부지사 부품 1개당 운송비용:" + str(int(tmp)) + "원")
결과
구분총비용(만원)총운송개수1개당 운송비용(원)
| 북부 | 2,189.3 | 49,146개 | 445원 |
| 남부 | 2,062.0 | 50,214개 | 410원 |
평균 운송비용 비교
cost_chk = pd.merge(cost, factories, how="left")
print("북부지사 평균운송 비율:" + str(cost_chk[cost_chk["FCRegion"] == "북부"]["Cost"].mean()))
print("남부지사 평균운송 비율:" + str(cost_chk[cost_chk["FCRegion"] == "남부"]["Cost"].mean()))
결과:
- 북부지사 평균운송 비율: 1.075
- 남부지사 평균운송 비율: 1.05
두 지사의 평균 운송비용 차이는 거의 없음을 확인.
결론 및 인사이트
- 남부가 단가 면에서 좀 더 효율적이나, 두 지역 모두 유사한 비용 구조를 가지고 있음.
- 창고→공장 간 운송에 따라 비용 최적화의 잠재성이 있음.
- 향후 운송비 절감을 위해:
- 거리 기반 경로 최적화
- 창고 재배치 시뮬레이션 고려
- 부품 재고 조정 등을 종합적으로 고려할 필요.
🚛 물류 네트워크 분석, 왜 그래프부터 배울까? (NetworkX 첫걸음)
1️⃣ 왜 배워야 하나요? (도입)
현대의 물류 시스템은 단순히 창고에서 공장으로 물건을 보내는 것을 넘어서, 다양한 창고와 공장 간의 복잡한 네트워크를 통해 운영됩니다.
✅ 이 네트워크를 이해하고 효율화하려면? 👉 데이터를 그래프(Graph) 로 표현하고 분석하는 능력이 필요합니다.
그래프 요소물류 의미| 노드 (Node) | 창고, 공장 |
| 간선 (Edge) | 운송 경로 |
NetworkX는 이런 네트워크를 직관적으로 시각화하고 분석할 수 있는 파이썬 라이브러리입니다.
2️⃣ 코드와 함께 쉽게 배우기 (기초 그래프)
📌 단계별 코드 작성
import networkx as nx
import matplotlib.pyplot as plt
# 1. 그래프 생성
G = nx.Graph()
# 2. 노드 추가 (창고/공장)
G.add_node("nodeA")
G.add_node("nodeB")
G.add_node("nodeC")
# 3. 간선 추가 (운송 경로)
G.add_edge("nodeA", "nodeB")
G.add_edge("nodeB", "nodeC")
G.add_edge("nodeC", "nodeA")
# 4. 노드 위치 설정
pos = {
"nodeA": (0, 0),
"nodeB": (1, 1),
"nodeC": (0, 1)
}
# 5. 시각화
nx.draw(G, pos, with_labels=True)
plt.show()
✅ 핵심 포인트:
- Graph() : 무방향 그래프 생성
- add_node() : 거점(창고/공장) 추가
- add_edge() : 노드 간 경로 추가
- draw() : 시각화
3️⃣ 결과 (시각화)

- 세 개의 노드가 삼각형 형태로 연결되어 네트워크의 구조를 직관적으로 보여줍니다.
- 이처럼 노드와 간선만으로도 복잡한 관계를 한눈에 파악할 수 있어요.
4️⃣ 앞으로 어디에 쓰이나요? (물류 연결)
이렇게 만들어진 네트워크 구조는 앞으로 다양한 물류 분석에 활용됩니다:
| 활용 분야 | 내용 |
| 💸 비용 계산 | 창고 → 공장 간 운송 비용 산출 |
| 🛣️ 경로 최적화 | 최적의 이동 경로 탐색 |
| 🔗 공급망 분석 | 병목 지점, 리스크 파악 |
✅ 이 단계에서 우리는 보여주는 것 → 분석하는 것 → 최적화/의사결정 으로 이어지는 흐름을 배웁니다.
✅ 정리
- NetworkX는 복잡한 관계와 흐름을 직관적으로 보여주고 분석하는 최고의 도구
- 물류 시스템도 결국 네트워크!
- 오늘 배운 내용은 앞으로 진행할 비용 분석, 경로 최적화, 시뮬레이션의 뼈대가 됩니다.
'인공지능' 카테고리의 다른 글
| 💰 물류 운송비용 함수 작성 & 최적화 (4) | 2025.07.11 |
|---|---|
| 물류 최적화의 첫걸음: NetworkX로 가중치 네트워크 그리기 (2) | 2025.07.08 |
| 고객 데이터를 클러스터링하고 PCA로 시각화하기 (1) | 2025.07.03 |
| K-Means 클러스터링 (1) | 2025.07.03 |
| 데이터 전처리 및 집계 분석 (0) | 2025.07.01 |