研究python数据分析和数据可视化实现销售数据的展示,学会python分析数据应用,主要掌握pandas和matplotlib的python扩展库的使用。
- 环境准备
确保已安装以下库:
pip install pandas matplotlib
- 数据加载与清洗
示例数据(假设 sales_data.csv):
日期,产品类别,销售额,销售量,地区
2023-01-01,电子产品,5000,10,北京
2023-01-02,服装,3000,15,上海
2023-01-03,食品,2000,20,广州
...
加载数据:
import pandas as pd
读取 CSV 文件
df = pd.read_csv("sales_data.csv")
查看前5行
print(df.head())
查看数据信息(列类型、缺失值等)
print(df.info())
数据清洗:
处理缺失值(填充或删除)
df.fillna(0, inplace=True) # 用0填充缺失值
或 df.dropna(inplace=True) # 删除缺失值行
转换日期格式
df["日期"] = pd.to_datetime(df["日期"])
删除重复数据
df.drop_duplicates(inplace=True)
- 数据分析
基础统计:
总销售额、平均销售额
total_sales = df["销售额"].sum()
average_sales = df["销售额"].mean()
print(f"总销售额: {total_sales}, 平均销售额: {average_sales}")
按产品类别汇总
category_sales = df.groupby("产品类别")["销售额"].sum().sort_values(ascending=False)
print(category_sales)
高级分析:
按地区和时间统计销售额
df["月份"] = df["日期"].dt.month # 提取月份
region_month_sales = df.groupby(["地区", "月份"])["销售额"].sum().unstack()
print(region_month_sales)
- 数据可视化
折线图(销售趋势):
import matplotlib.pyplot as plt
按月统计总销售额
monthly_sales = df.groupby("月份")["销售额"].sum()
plt.figure(figsize=(10, 6))
plt.plot(monthly_sales.index, monthly_sales.values, marker='o', linestyle='-')
plt.title("月度销售趋势")
plt.xlabel("月份")
plt.ylabel("销售额(元)")
plt.grid(True)
plt.show()
柱状图(产品类别对比):
category_sales = df.groupby("产品类别")["销售额"].sum()
plt.figure(figsize=(10, 6))
category_sales.plot(kind='bar', color=['skyblue', 'lightgreen', 'salmon'])
plt.title("各产品类别销售额对比")
plt.xlabel("产品类别")
plt.ylabel("销售额(元)")
plt.xticks(rotation=45)
plt.show()
饼图(地区销售占比):
region_sales = df.groupby("地区")["销售额"].sum()
plt.figure(figsize=(8, 8))
plt.pie(region_sales, labels=region_sales.index, autopct='%1.1f%%', startangle=90)
plt.title("各地区销售额占比")
plt.show()
箱线图(销售额分布):
plt.figure(figsize=(10, 6))
df.boxplot(column="销售额", by="产品类别", grid=False)
plt.title("不同产品类别销售额分布")
plt.suptitle("") # 移除默认标题
plt.xlabel("产品类别")
plt.ylabel("销售额(元)")
plt.show()
- 完整分析报告示例
生成月度销售报告
monthly_report = df.groupby("月份").agg({
"销售额": ["sum", "mean"],
"销售量": "sum"
}).reset_index()
print("月度销售报告:")
print(monthly_report)
可视化总销售额和销售量
fig, ax1 = plt.subplots(figsize=(12, 6))
color = 'tab:red'
ax1.set_xlabel('月份')
ax1.set_ylabel('销售额(元)', color=color)
ax1.plot(monthly_report["月份"], monthly_report["销售额"]["sum"], color=color, marker='o')
ax1.tick_params(axis='y', labelcolor=color)
ax2 = ax1.twinx()
color = 'tab:blue'
ax2.set_ylabel('销售量', color=color)
ax2.plot(monthly_report["月份"], monthly_report["销售量"]["sum"], color=color, marker='s', linestyle='--')
ax2.tick_params(axis='y', labelcolor=color)
plt.title("月度销售额与销售量对比")
plt.show()
-
进阶技巧
-
Seaborn 美化图表:
import seaborn as sns
sns.set_theme(style="whitegrid") # 设置主题
- 动态可视化:
- 使用 Plotly或 Pyecharts生成交互式图表。
- 数据透视表:
pivot_table = pd.pivot_table(df, values='销售额', index='地区', columns='产品类别', aggfunc='sum')
- 学习资源