十种常用数据分析方法

描述性统计分析(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())
  ```

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

**判断**: 发现异常交易,防范欺诈行为。识别异常用户行为,进行风险控制。
相关推荐
泰迪智能科技0128 分钟前
高校深度学习视觉应用平台产品介绍
人工智能·深度学习
盛派网络小助手1 小时前
微信 SDK 更新 Sample,NCF 文档和模板更新,更多更新日志,欢迎解锁
开发语言·人工智能·后端·架构·c#
Eric.Lee20211 小时前
Paddle OCR 中英文检测识别 - python 实现
人工智能·opencv·计算机视觉·ocr检测
cd_farsight1 小时前
nlp初学者怎么入门?需要学习哪些?
人工智能·自然语言处理
AI明说1 小时前
评估大语言模型在药物基因组学问答任务中的表现:PGxQA
人工智能·语言模型·自然语言处理·数智药师·数智药学
Focus_Liu2 小时前
NLP-UIE(Universal Information Extraction)
人工智能·自然语言处理
PowerBI学谦2 小时前
使用copilot轻松将电子邮件转为高效会议
人工智能·copilot
audyxiao0012 小时前
AI一周重要会议和活动概览
人工智能·计算机视觉·数据挖掘·多模态
Jeremy_lf2 小时前
【生成模型之三】ControlNet & Latent Diffusion Models论文详解
人工智能·深度学习·stable diffusion·aigc·扩散模型