Практические примеры агрегирования
1. Анализ данных о продажах
sales_data = [
{"product": "Laptop", "category": "Electronics", "price": 1000, "quantity": 5},
{"product": "Phone", "category": "Electronics", "price": 500, "quantity": 10},
{"product": "Book", "category": "Literature", "price": 20, "quantity": 50}
]
## Total revenue calculation
def calculate_total_revenue(data):
return sum(item['price'] * item['quantity'] for item in data)
## Category-wise revenue
def category_revenue_breakdown(data):
category_revenue = {}
for item in data:
category = item['category']
revenue = item['price'] * item['quantity']
category_revenue[category] = category_revenue.get(category, 0) + revenue
return category_revenue
2. Отслеживание успеваемости студентов
graph TD
A[Student Performance Analysis]
A --> B[Average Score]
A --> C[Top Performers]
A --> D[Subject Breakdown]
students = [
{"name": "Alice", "math": 85, "science": 90, "english": 88},
{"name": "Bob", "math": 75, "science": 80, "english": 82},
{"name": "Charlie", "math": 95, "science": 92, "english": 90}
]
## Calculate average scores
def calculate_subject_averages(students):
return {
"math": sum(student['math'] for student in students) / len(students),
"science": sum(student['science'] for student in students) / len(students),
"english": sum(student['english'] for student in students) / len(students)
}
## Find top performers
def find_top_performers(students, subject, top_n=2):
return sorted(students, key=lambda x: x[subject], reverse=True)[:top_n]
3. Управление запасами
Метрика |
Метод расчета |
Назначение |
Общий запас |
Сумма количеств |
Уровень запасов |
Товары с низким запасом |
Фильтрация товаров ниже порога |
Пополнение запасов |
Средняя цена |
Среднее значение цен товаров |
Ценовая стратегия |
inventory = [
{"name": "Shirt", "price": 25, "quantity": 100},
{"name": "Pants", "price": 50, "quantity": 75},
{"name": "Shoes", "price": 80, "quantity": 50}
]
## Identify low stock items
def find_low_stock_items(inventory, threshold=60):
return [item for item in inventory if item['quantity'] < threshold]
## Calculate total inventory value
def calculate_inventory_value(inventory):
return sum(item['price'] * item['quantity'] for item in inventory)
4. Продвинутое преобразование данных
def transform_and_aggregate(data, transformation_func, aggregation_func):
transformed_data = [transformation_func(item) for item in data]
return aggregation_func(transformed_data)
## Example usage in LabEx Python environment
def normalize_price(item):
return item['price'] / 100
def total_normalized_value(normalized_prices):
return sum(normalized_prices)
5. Агрегирование, устойчивое к ошибкам
def safe_aggregation(data, key, default_value=0):
try:
return sum(item.get(key, default_value) for item in data)
except Exception as e:
print(f"Aggregation error: {e}")
return None
Основные выводы
- Используйте списковые включения для кратких преобразований
- Используйте методы словарей для гибкого агрегирования
- Реализуйте обработку ошибок для надежной обработки данных
- Выбирайте подходящие методы агрегирования на основе структуры данных
Это комплексное руководство демонстрирует практические подходы к агрегированию и анализу данных в списках словарей, показывая гибкость и эффективность манипуляций с данными в Python.