You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中聚合数据并绘制商品总销售额折线图?

Hey there! Let's walk through exactly how to aggregate your sales data by item and plot a line chart in Python. I'll use pandas for data manipulation and matplotlib (with an optional seaborn tip) for visualization—these are the standard go-to tools for this kind of task.

Step 1: Set up your data (or use your existing dataset)

First, let's assume you have a pandas DataFrame with your data. If you're starting from scratch, here's how you might create a sample dataset to test with:

import pandas as pd

# Sample dataset matching your structure
data = {
    'Item': ['Laptop', 'Phone', 'Laptop', 'Tablet', 'Phone', 'Laptop', 'Tablet'],
    'Date': ['2024-01-01', '2024-01-01', '2024-01-02', '2024-01-01', '2024-01-02', '2024-01-03', '2024-01-02'],
    'Sales': [1200, 800, 1300, 500, 750, 1150, 550]
}

df = pd.DataFrame(data)

If you're using your own data, just load it into a DataFrame using pd.read_csv('your_data.csv') (or the appropriate method for your file type, like pd.read_excel for Excel files).

Step 2: Aggregate total sales by Item

To calculate the total sales per item, we'll use pandas' groupby() method combined with sum(). This groups the data by the 'Item' column and sums up all the 'Sales' values for each unique product:

# Aggregate total sales per item
sales_by_item = df.groupby('Item')['Sales'].sum().reset_index()

# Optional: Rename the summed column for clearer labeling
sales_by_item = sales_by_item.rename(columns={'Sales': 'Total_Sales'})

# Check the aggregated result
print(sales_by_item)

The reset_index() is key here—it converts the grouped 'Item' from an index back into a regular column, which makes it much easier to use for plotting later on.

Step 3: Plot the line chart

Now let's visualize the aggregated data with a line chart. We'll start with matplotlib.pyplot, the foundational plotting library for Python:

import matplotlib.pyplot as plt

# Set up the figure size for better readability
plt.figure(figsize=(10, 6))

# Plot the line chart with markers for each data point
plt.plot(sales_by_item['Item'], sales_by_item['Total_Sales'], marker='o', linestyle='-', color='royalblue', linewidth=2)

# Add descriptive labels and title
plt.xlabel('Product Item', fontsize=12)
plt.ylabel('Total Sales', fontsize=12)
plt.title('Total Sales by Product Item', fontsize=14, pad=20)

# Optional: Add a light grid to make values easier to read
plt.grid(True, alpha=0.3)

# Display the plot
plt.show()

Optional: Use Seaborn for a more polished look

If you want a cleaner, more professional plot with minimal extra code, you can use seaborn (a wrapper around matplotlib):

import seaborn as sns

# Set a clean seaborn style
sns.set_style('whitegrid')

plt.figure(figsize=(10, 6))
sns.lineplot(data=sales_by_item, x='Item', y='Total_Sales', marker='o', color='royalblue', linewidth=2)

plt.xlabel('Product Item', fontsize=12)
plt.ylabel('Total Sales', fontsize=12)
plt.title('Total Sales by Product Item', fontsize=14, pad=20)

plt.show()

Quick Tips for Edge Cases:

  • If your dataset has missing values, handle them first with df.dropna() (remove rows with missing data) or df.fillna(0) (replace missing sales with 0) before aggregating.
  • To sort items by total sales (e.g., highest to lowest), add sales_by_item = sales_by_item.sort_values(by='Total_Sales', ascending=False) right before plotting.

内容的提问来源于stack exchange,提问作者Philip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:14:31