赞
踩
使用场景:用来总结数据的基本特征,如平均值、中位数、标准差等。
优势:简单易懂,快速总结数据。
劣势:无法深入挖掘数据的潜在关系。
模拟数据及示例代码:
- 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%分位数和最大值。通过这些数据,可以初步了解数据的分布情况。
判断:识别出用户实际支付金额的均值和标准差,帮助定价策略。了解各个商品类别的销量分布情况,便于库存管理。
- 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_matrix = df.corr()
- print(correlation_matrix)
结果: 生成变量之间的相关系数矩阵,了解每对变量之间的相关程度。
判断:
- 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值判断是否拒绝原假设。
判断:
- 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值等。
判断:
- 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())
结果: 每个聚类的样本数量分布,了解数据的聚类情况。
判断:
- 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()
结果: 分解时间序列,得到趋势、季节性和残差成分。
判断:
- 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())
结果: 生成关联规则,包括支持度、置信度和提升度。
判断:
- 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分数。
判断:
- 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())
结果: 识别出异常样本的数量和分布。
判断: 发现异常交易,防范欺诈行为。识别异常用户行为,进行风险控制。
(交个朋友/技术接单/ai办公,性价比资源,注明来意)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。