הכנה לשיעור הבא

גירוד וניתוח נתוני חלקי חילוף - Tesla Model S

🎯 מה נלמד בשיעור הבא?

נבנה מערכת Python שמושכת נתוני חלקי חילוף לטסלה Model S מהאינטרנט,
מנתחת מחירים, זמינות ומגמות שוק - כמו Data Scientist אמיתי!

1

🔑 השגת מפתח API

כדי לגשת לנתונים בצורה מקצועית, נשתמש ב-API. בצעו את השלבים הבאים:

📝 הרשמה ל-RapidAPI (חינם)

  1. היכנסו ל-rapidapi.com/signup
  2. הירשמו עם Google או אימייל
  3. חפשו "Car Parts API" או "Auto Parts"
  4. בחרו תוכנית חינמית (Free Tier)
  5. העתיקו את ה-API Key שלכם
⚠️

חשוב! שמרו את המפתח במקום בטוח. אל תשתפו אותו ואל תעלו אותו ל-GitHub!

לאחר ההרשמה, צרו קובץ בשם .env בתיקיית הפרויקט:

# קובץ .env - אל תעלו ל-GitHub!
RAPIDAPI_KEY="המפתח_שלכם_כאן"
2

⚙️ הכנת סביבת העבודה

התקינו את הספריות הנדרשות בטרמינל:

# התקנת ספריות
pip install requests pandas python-dotenv beautifulsoup4 matplotlib

צרו תיקיית פרויקט חדשה:

# יצירת מבנה תיקיות
mkdir tesla_parts_analysis
cd tesla_parts_analysis
mkdir data output
3

🕷️ קוד גירוד הנתונים

צרו קובץ scrape_tesla_parts.py והעתיקו את הקוד:

# scrape_tesla_parts.py - גירוד חלקי חילוף לטסלה
import requests
import pandas as pd
from dotenv import load_dotenv
import os
import json
from datetime import datetime

# טעינת משתני סביבה
load_dotenv()
API_KEY = os.getenv('RAPIDAPI_KEY')

def get_tesla_parts(part_type="brake"):
    """
    שליפת חלקי חילוף לטסלה Model S
    part_type: brake, battery, motor, suspension, body
    """
    
    # דוגמה עם API של RapidAPI
    url = "https://car-parts-api.p.rapidapi.com/parts"
    
    headers = {
        "X-RapidAPI-Key": API_KEY,
        "X-RapidAPI-Host": "car-parts-api.p.rapidapi.com"
    }
    
    params = {
        "make": "Tesla",
        "model": "Model S",
        "year": "2020-2024",
        "part_type": part_type
    }
    
    try:
        response = requests.get(url, headers=headers, params=params)
        response.raise_for_status()
        return response.json()
    except requests.exceptions.RequestException as e:
        print(f"שגיאה בשליפת נתונים: {e}")
        return None

def scrape_alternative_source():
    """
    גירוד מאתר חלופי (לדוגמה בלבד)
    בפועל נשתמש ב-API או באתרים שמאפשרים גירוד
    """
    
    # נתוני דוגמה - בשיעור נחליף ב-API אמיתי
    sample_data = [
        {"part": "Front Brake Pads", "price": 450, "vendor": "TeslaParts.com", "stock": 15},
        {"part": "Rear Brake Pads", "price": 380, "vendor": "EVSpares", "stock": 23},
        {"part": "Battery Module", "price": 5500, "vendor": "TeslaParts.com", "stock": 3},
        {"part": "Drive Unit Motor", "price": 8900, "vendor": "EVSpares", "stock": 2},
        {"part": "Air Suspension Compressor", "price": 1200, "vendor": "AutoZone", "stock": 8},
        {"part": "Touchscreen Display", "price": 1800, "vendor": "TeslaParts.com", "stock": 5},
        {"part": "Door Handle Assembly", "price": 320, "vendor": "EVSpares", "stock": 12},
        {"part": "Headlight Assembly", "price": 950, "vendor": "AutoZone", "stock": 6},
    ]
    
    return sample_data

def save_to_csv(data, filename):
    """שמירת הנתונים לקובץ CSV"""
    df = pd.DataFrame(data)
    df['scraped_date'] = datetime.now().strftime('%Y-%m-%d %H:%M')
    df.to_csv(f'data/{filename}', index=False, encoding='utf-8-sig')
    print(f"✅ נשמרו {len(df)} רשומות לקובץ {filename}")
    return df

# הרצה ראשית
if __name__ == "__main__":
    print("🚗 מתחיל גירוד חלקי חילוף לטסלה Model S...")
    
    # שליפת נתונים
    parts_data = scrape_alternative_source()
    
    # שמירה לקובץ
    df = save_to_csv(parts_data, 'tesla_parts.csv')
    
    # תצוגה מקדימה
    print("\n📊 תצוגה מקדימה:")
    print(df.to_string())
4

📊 קוד ניתוח הנתונים

צרו קובץ analyze_parts.py:

# analyze_parts.py - ניתוח נתוני חלקי החילוף
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family'] = 'Arial'

def load_and_analyze(csv_path):
    """טעינה וניתוח בסיסי של הנתונים"""
    
    df = pd.read_csv(csv_path)
    print("=" * 50)
    print("📈 ניתוח נתוני חלקי חילוף - Tesla Model S")
    print("=" * 50)
    
    # סטטיסטיקות בסיסיות
    print(f"\n🔢 סה\"כ חלקים: {len(df)}")
    print(f"💰 מחיר ממוצע: ${df['price'].mean():.2f}")
    print(f"💰 מחיר מינימום: ${df['price'].min()}")
    print(f"💰 מחיר מקסימום: ${df['price'].max()}")
    print(f"📦 מלאי ממוצע: {df['stock'].mean():.1f} יחידות")
    
    return df

def analyze_by_vendor(df):
    """ניתוח לפי ספק"""
    print("\n🏪 ניתוח לפי ספק:")
    vendor_stats = df.groupby('vendor').agg({
        'price': ['mean', 'count'],
        'stock': 'sum'
    }).round(2)
    print(vendor_stats)
    return vendor_stats

def find_best_deals(df, top_n=3):
    """מציאת העסקאות הטובות ביותר"""
    print(f"\n🏆 {top_n} החלקים הזולים ביותר:")
    cheapest = df.nsmallest(top_n, 'price')[['part', 'price', 'vendor']]
    print(cheapest.to_string(index=False))
    return cheapest

def create_visualizations(df):
    """יצירת גרפים"""
    fig, axes = plt.subplots(1, 2, figsize=(14, 5))
    
    # גרף 1: מחירים לפי חלק
    colors = ['#e31937' if x > df['price'].mean() else '#3b82f6' for x in df['price']]
    axes[0].barh(df['part'], df['price'], color=colors)
    axes[0].set_xlabel('Price ($)')
    axes[0].set_title('Tesla Model S Parts - Price Comparison')
    axes[0].axvline(df['price'].mean(), color='green', linestyle='--', label='Average')
    axes[0].legend()
    
    # גרף 2: התפלגות לפי ספק
    vendor_counts = df.groupby('vendor')['price'].sum()
    axes[1].pie(vendor_counts, labels=vendor_counts.index, autopct='%1.1f%%', 
            colors=['#e31937', '#3b82f6', '#10b981'])
    axes[1].set_title('Market Share by Vendor (Total Value)')
    
    plt.tight_layout()
    plt.savefig('output/tesla_parts_analysis.png', dpi=150, bbox_inches='tight')
    print("\n📊 גרפים נשמרו ל-output/tesla_parts_analysis.png")

# הרצה
if __name__ == "__main__":
    df = load_and_analyze('data/tesla_parts.csv')
    analyze_by_vendor(df)
    find_best_deals(df)
    create_visualizations(df)
📋 דוגמה לפלט הצפוי:
Part Price ($) Vendor Stock
Front Brake Pads 450 TeslaParts.com 15
Battery Module 5,500 TeslaParts.com 3
Drive Unit Motor 8,900 EVSpares 2
Air Suspension 1,200 AutoZone 8

✅ רשימת הכנה לשיעור

🚀 מוכנים לשיעור?

בשיעור נרחיב את הקוד, נחבר ל-API אמיתי,
ונבנה דשבורד אינטראקטיבי לניתוח מחירים!

כניסה למערכת הקורס חזרה לדף הראשי