前言:Python 是进行数据分析和可视化的强大工具,常用的库包括 Pandas、NumPy、Matplotlib 和 Seaborn。以下是一个基本的教程概述,介绍了如何使用这些库来进行数据分析和可视化:
pip install pandas numpy matplotlib seaborn
通过一个商城数据分析和可视化的示例来展示如何使用 Python 进行数据分析和可视化。假设你有一个包含商城交易数据的 CSV 文件,文件名为 sales_data.csv,其中包含以下字段:
order_id
: 订单IDproduct
: 产品名称quantity
: 购买数量price
: 单价total_amount
: 总金额(通常是 quantity 和 price 的乘积)order_date
: 订单日期customer_id
: 顾客IDimport pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 加载数据
data = pd.read_csv('sales_data.csv')
# 查看数据的前几行
print(data.head())
确保数据的格式和类型正确。
# 确保日期列为日期格式
data['order_date'] = pd.to_datetime(data['order_date'])
# 检查数据的基本信息
print(data.info())
# 计算总金额(如果数据中没有此列)
data['total_amount'] = data['quantity'] * data['price']
描述性统计
# 描述性统计
print(data.describe())
# 按产品进行分组并计算总销售额
product_sales = data.groupby('product')['total_amount'].sum().reset_index()
print(product_sales)
时间序列分析
按月计算总销售额趋势:
# 以月份为单位汇总销售额
data['month'] = data['order_date'].dt.to_period('M')
monthly_sales = data.groupby('month')['total_amount'].sum().reset_index()
# 转换为 DataFrame 的日期时间格式
monthly_sales['month'] = monthly_sales['month'].dt.to_timestamp()
print(monthly_sales)
产品销售总额
# 绘制产品销售总额的条形图
plt.figure(figsize=(10, 6))
sns.barplot(x='product', y='total_amount', data=product_sales, palette='viridis')
plt.xticks(rotation=45)
plt.xlabel('Product')
plt.ylabel('Total Sales Amount')
plt.title('Total Sales Amount by Product')
plt.show()
销售额时间趋势:
# 绘制月销售额趋势图
plt.figure(figsize=(12, 6))
plt.plot(monthly_sales['month'], monthly_sales['total_amount'], marker='o')
plt.xlabel('Month')
plt.ylabel('Total Sales Amount')
plt.title('Monthly Sales Trend')
plt.grid(True)
plt.xticks(rotation=45)
plt.show()
顾客购买行为分析
假设我们想分析每个顾客的购买总额:
# 计算每个顾客的总购买额
customer_sales = data.groupby('customer_id')['total_amount'].sum().reset_index()
# 绘制顾客购买总额的直方图
plt.figure(figsize=(10, 6))
sns.histplot(customer_sales['total_amount'], bins=30, kde=True)
plt.xlabel('Total Sales Amount')
plt.ylabel('Number of Customers')
plt.title('Distribution of Total Sales Amount per Customer')
plt.show()
通过上述分析,你可以获取以下信息:
请参考整体代码,如下:
# sales_data_analysis.py
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 设置可视化风格
sns.set(style="whitegrid")
def load_data(file_path):
"""加载数据"""
data = pd.read_csv(file_path)
data['order_date'] = pd.to_datetime(data['order_date'])
if 'total_amount' not in data.columns:
data