十种常用数据分析方法

描述性统计分析(Descriptive Statistics)

  • 使用场景:用来总结数据的基本特征,如平均值、中位数、标准差等。

  • 优势:简单易懂,快速总结数据。

  • 劣势:无法深入挖掘数据的潜在关系。

  • 模拟数据及示例代码

    python 复制代码
    import pandas as pd
    import numpy as np
    
    # 生成模拟数据
    data = {
        "user_log_acct": ["linfbi007", "13601089905_p", "jd_UbSjKwFGOfbv"] * 100,
        "parent_sale_ord_id": np.random.randint(100000000000, 200000000000, size=300),
        "sale_ord_id": np.random.randint(100000000000, 200000000000, size=300),
        "sale_ord_tm": pd.date_range(start="2023-01-01", periods=300, freq="H").tolist(),
        "item_sku_id": np.random.randint(100000000, 200000000, size=300),
        "item_name": ["冰箱", "洗衣机", "电视"] * 100,
        "brandname": ["新飞", "海尔", "小米"] * 100,
        "sale_qtty": np.random.randint(1, 5, size=300),
        "item_first_cate_name": ["家用电器"] * 300,
        "item_second_cate_name": ["大家电"] * 300,
        "item_third_cate_name": ["冰箱", "洗衣机", "电视"] * 100,
        "before_prefr_unit_price": np.random.uniform(1000, 2000, size=300),
        "after_prefr_unit_price": np.random.uniform(800, 1500, size=300),
        "user_actual_pay_amount": np.random.uniform(700, 1400, size=300),
        "sale_ord_valid_flag": [1] * 300,
        "cancel_flag": [0] * 300,
        "check_account_tm": pd.date_range(start="2023-01-01", periods=300, freq="H").tolist(),
        "total_offer_amount": np.random.uniform(100, 500, size=300),
        "self_ord_flag": [1, 0] * 150,
        "user_site_city_id": np.random.randint(1, 100, size=300),
        "user_site_province_id": np.random.randint(1, 30, size=300),
        "user_lv_cd": [0, 1, 2] * 100
    }
    
    df = pd.DataFrame(data)
    
    # 描述性统计分析
    desc_stats = df.describe()
    print(desc_stats)

结果: 描述性统计结果包括每个数值字段的计数、平均值、标准差、最小值、25%分位数、50%分位数、75%分位数和最大值。通过这些数据,可以初步了解数据的分布情况。

判断:识别出用户实际支付金额的均值和标准差,帮助定价策略。了解各个商品类别的销量分布情况,便于库存管理。
2.

数据可视化(Data Visualization)

  • 使用场景:通过图表展示数据,发现趋势和模式。

  • 优势:直观易懂,便于发现数据中的规律。

  • 劣势:图表的准确性和美观度受数据和设计影响。

  • 模拟数据及示例代码

    python 复制代码
    import matplotlib.pyplot as plt
    
    # 销售数量分布图
    plt.figure(figsize=(10, 6))
    df['sale_qtty'].hist(bins=20)
    plt.title('Sales Quantity Distribution')
    plt.xlabel('Quantity')
    plt.ylabel('Frequency')
    plt.show()
  • 结果: 通过绘制销售数量的直方图,可以看到不同销售数量的频率分布,判断出哪些销售量区间是最常见的。

  • 判断:确定销售数量的常见区间,便于营销策略的制定。识别异常销售量,分析其原因。

相关性分析(Correlation Analysis)

  • 使用场景:分析两个或多个变量之间的线性关系。

  • 优势:揭示变量间的关系,便于进一步建模。

  • 劣势:仅限于线性关系,无法捕捉非线性关系。

  • 模拟数据及示例代码

    python 复制代码
    # 相关性分析
    correlation_matrix = df.corr()
    print(correlation_matrix)

结果: 生成变量之间的相关系数矩阵,了解每对变量之间的相关程度。

判断

  • 确定价格和销量之间的关系,优化定价策略。
  • 识别促销活动对实际支付金额的影响,调整促销方案。

假设检验(Hypothesis Testing)

  • 使用场景:验证假设,判断样本数据是否支持某个假设。

  • 优势:提供统计依据,支持决策。

  • 劣势:需要设定显著性水平,结果受样本量影响。

  • 模拟数据及示例代码

    python 复制代码
    from scipy import stats
    
    # 检验用户实际支付金额的均值是否为1000
    t_stat, p_value = stats.ttest_1samp(df['user_actual_pay_amount'], 1000)
    print(f"T-statistic: {t_stat}, P-value: {p_value}")

结果: 计算T统计量和P值,通过P值判断是否拒绝原假设。

判断

  • 如果P值小于显著性水平(如0.05),则拒绝原假设,说明用户实际支付金额显著不同于1000。
  • 帮助优化定价策略。

回归分析(Regression Analysis)

  • 使用场景:预测变量之间的关系,用于预测和因果分析。

  • 优势:能量化多个因素的影响,进行预测。

  • 劣势:需要满足一定假设,复杂模型需要更多计算资源。

  • 模拟数据及示例代码

    python 复制代码
    import statsmodels.api as sm
    
    # 线性回归分析
    X = df[['before_prefr_unit_price', 'total_offer_amount', 'sale_qtty']]
    y = df['user_actual_pay_amount']
    X = sm.add_constant(X)
    model = sm.OLS(y, X).fit()
    print(model.summary())

结果: 生成回归分析的详细报告,包括系数、标准误、P值等。

判断

  • 识别主要影响用户支付金额的因素,优化营销策略。
  • 通过模型进行销售预测,改进库存管理。

聚类分析(Clustering Analysis)

  • 使用场景:将数据分组,发现数据中的自然分类。

  • 优势:便于发现潜在的用户群体或商品类别。

  • 劣势:需要确定聚类数,结果解释较为复杂。

  • 模拟数据及示例代码

    python 复制代码
    from sklearn.cluster import KMeans
    
    # 聚类分析
    kmeans = KMeans(n_clusters=3)
    df['cluster'] = kmeans.fit_predict(df[['before_prefr_unit_price', 'total_offer_amount', 'sale_qtty']])
    print(df['cluster'].value_counts())

结果: 每个聚类的样本数量分布,了解数据的聚类情况。

判断

  • 识别不同用户群体,进行精准营销。
  • 分类商品,优化推荐系统。

时间序列分析(Time Series Analysis)

  • 使用场景:分析时间序列数据的趋势和季节性变化。

  • 优势:预测未来趋势,进行库存和资源规划。

  • 劣势:模型复杂,需要较长时间序列数据。

  • 模拟数据及示例代码

    python 复制代码
    from statsmodels.tsa.seasonal import seasonal_decompose
    
    # 时间序列分析
    df.set_index('sale_ord_tm', inplace=True)
    result = seasonal_decompose(df['user_actual_pay_amount'], model='additive', period=24)
    result.plot()
    plt.show()

结果: 分解时间序列,得到趋势、季节性和残差成分。

判断

  • 识别销售趋势,调整营销策略。
  • 预测季节性变化,优化库存管理。

频繁项集和关联规则挖掘(Association Rule Mining)

  • 使用场景:发现商品之间的购买关联,提高交叉销售。

  • 优势:揭示商品间的潜在关系,提升销售额。

  • 劣势:规则数量庞大,需筛选有意义的规则。

  • 模拟数据及示例代码

    python 复制代码
    from mlxtend.frequent_patterns import apriori, association_rules
    
    # 生成模拟购物篮数据
    basket = df.groupby(['sale_ord_id', 'item_name']).size().unstack().reset_index().fillna(0).set_index('sale_ord_id')
    
    # 频繁项集
    frequent_itemsets = apriori(basket, min_support=0.1, use_colnames=True)
    rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1)
    print(rules.head())

结果: 生成关联规则,包括支持度、置信度和提升度。

判断

  • 识别经常一起购买的商品,优化商品组合。
  • 提升交叉销售策略,提高销售额。

分类分析(Classification Analysis)

  • 使用场景:对用户或商品进行分类,用于精准营销或风险评估。

  • 优势:便于预测新样本的类别,优化策略。

  • 劣势:需大量标记数据,复杂模型需更多计算资源。

  • 模拟数据及示例代码

    python 复制代码
    from sklearn.model_selection import train_test_split
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.metrics import classification_report
    
    # 分类分析
    X = df[['before_prefr_unit_price', 'total_offer_amount', 'sale_qtty']]
    y = df['user_lv_cd']
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
    clf = RandomForestClassifier()
    clf.fit(X_train, y_train)
    y_pred = clf.predict(X_test)
    print(classification_report(y_test, y_pred))

结果: 生成分类报告,包括精确度、召回率和F1分数。

判断

  • 识别用户等级,进行精准营销。
  • 评估商品风险,优化库存策略。
复制代码
#### **异常检测(Anomaly Detection)**

* **使用场景**:检测异常交易或行为,防范风险。
* **优势**:发现异常情况,防止损失。
* **劣势**:模型复杂,需调整参数。
* **模拟数据及示例代码** :

  ```python
  from sklearn.ensemble import IsolationForest

  # 异常检测
  iso_forest = IsolationForest(contamination=0.1)
  df['anomaly'] = iso_forest.fit_predict(df[['user_actual_pay_amount', 'sale_qtty']])
  print(df['anomaly'].value_counts())
  ```

**结果**: 识别出异常样本的数量和分布。

**判断**: 发现异常交易,防范欺诈行为。识别异常用户行为,进行风险控制。
相关推荐
奔跑中的小象6 小时前
统信UOS + 天数AI卡部署SGLang服务手册
人工智能·uos·sglang·天数智芯
DevSecOps选型指南6 小时前
中国版Mythos,为何是悬镜安全灵脉CodeAI?
人工智能·安全
Shockang6 小时前
LangGraph 状态机实战
人工智能
刹那芳华19926 小时前
循环神经网络的从零开始实现(RNN)
人工智能·rnn·深度学习
阿童木写作6 小时前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
科技之门6 小时前
AI3D从建模到贴图、绑骨和动画的完整流程怎么做?V2Fun完整工作流指南
人工智能·3d·贴图
宇宙第一小趴菜6 小时前
二、机器学习的应用领域和发展史
人工智能·机器学习
前端开发江鸟6 小时前
我写过 MCP Server,却一直以为 MCP 只有 Tool
人工智能
天国梦7 小时前
自习室智能化升级避坑指南:天学网AI智习室方案实测与选型建议
大数据·人工智能
阿里云云原生7 小时前
可用性从 99.9% 跃升至 99.995%:畅捷通如何用 AI 重塑运维底座?
运维·网络·人工智能