活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

企业级数据分析案例研究使用pandas解决实际业务问题从销售预测到客户行为分析全方位提升决策能力创造商业价值

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-1 21:10:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

企业级数据分析是现代企业决策的重要基础,它能够帮助企业从海量数据中提取有价值的信息,从而做出更明智的决策。Python的pandas库作为数据分析的强大工具,提供了灵活高效的数据结构和数据分析工具,使得企业能够轻松处理和分析各种类型的数据。本文将通过实际案例,展示如何使用pandas解决企业中的实际业务问题,从销售预测到客户行为分析,全方位提升企业的决策能力,创造商业价值。

pandas基础

pandas是Python的一个开源数据分析库,它提供了高性能、易于使用的数据结构和数据分析工具。pandas的核心数据结构是Series(一维数组)和DataFrame(二维表格型数据结构),它们能够处理各种类型的数据,包括数值型、时间序列、非结构化数据等。
  1. # 导入pandas库
  2. import pandas as pd
  3. import numpy as np
  4. # 创建Series
  5. s = pd.Series([1, 3, 5, np.nan, 6, 8])
  6. print("Series示例:")
  7. print(s)
  8. # 创建DataFrame
  9. data = {'Name': ['John', 'Anna', 'Peter', 'Linda'],
  10.         'Age': [28, 34, 29, 42],
  11.         'City': ['New York', 'Paris', 'Berlin', 'London']}
  12. df = pd.DataFrame(data)
  13. print("\nDataFrame示例:")
  14. print(df)
复制代码

pandas提供了丰富的数据操作功能,包括数据清洗、数据转换、数据聚合、数据可视化等,这些功能使得pandas成为企业级数据分析的理想工具。

数据准备与清洗

在进行数据分析之前,数据准备和清洗是必不可少的步骤。原始数据往往存在缺失值、异常值、重复值等问题,需要通过pandas进行处理。
  1. # 读取数据
  2. # 假设我们有一个销售数据文件'sales_data.csv'
  3. sales_data = pd.read_csv('sales_data.csv')
  4. # 查看数据基本信息
  5. print("数据基本信息:")
  6. print(sales_data.info())
  7. # 查看数据前5行
  8. print("\n数据前5行:")
  9. print(sales_data.head())
  10. # 检查缺失值
  11. print("\n缺失值统计:")
  12. print(sales_data.isnull().sum())
  13. # 处理缺失值
  14. # 对于数值型列,可以用均值填充
  15. numeric_cols = sales_data.select_dtypes(include=['int64', 'float64']).columns
  16. sales_data[numeric_cols] = sales_data[numeric_cols].fillna(sales_data[numeric_cols].mean())
  17. # 对于分类列,可以用众数填充
  18. categorical_cols = sales_data.select_dtypes(include=['object']).columns
  19. for col in categorical_cols:
  20.     sales_data[col] = sales_data[col].fillna(sales_data[col].mode()[0])
  21. # 检查重复值
  22. print("\n重复值数量:")
  23. print(sales_data.duplicated().sum())
  24. # 删除重复值
  25. sales_data = sales_data.drop_duplicates()
  26. # 处理异常值
  27. # 以销售额为例,假设我们认为低于0或高于10000的销售额是异常值
  28. sales_data = sales_data[(sales_data['sales_amount'] >= 0) & (sales_data['sales_amount'] <= 10000)]
  29. # 数据类型转换
  30. # 假设日期列是字符串类型,需要转换为日期类型
  31. sales_data['order_date'] = pd.to_datetime(sales_data['order_date'])
  32. # 创建新的特征
  33. # 例如,从日期中提取年、月、日
  34. sales_data['year'] = sales_data['order_date'].dt.year
  35. sales_data['month'] = sales_data['order_date'].dt.month
  36. sales_data['day'] = sales_data['order_date'].dt.day
  37. # 保存处理后的数据
  38. sales_data.to_csv('cleaned_sales_data.csv', index=False)
复制代码

通过上述步骤,我们完成了数据的读取、检查、缺失值处理、重复值删除、异常值处理、数据类型转换和特征创建等操作,为后续的分析工作奠定了基础。

销售预测案例分析

销售预测是企业决策的重要依据,它可以帮助企业合理安排生产计划、库存管理和人力资源配置。下面我们将使用pandas进行销售数据的分析和预测。
  1. # 导入必要的库
  2. import pandas as pd
  3. import numpy as np
  4. import matplotlib.pyplot as plt
  5. from sklearn.model_selection import train_test_split
  6. from sklearn.linear_model import LinearRegression
  7. from sklearn.metrics import mean_squared_error, r2_score
  8. # 读取清洗后的销售数据
  9. sales_data = pd.read_csv('cleaned_sales_data.csv')
  10. sales_data['order_date'] = pd.to_datetime(sales_data['order_date'])
  11. # 按月汇总销售数据
  12. monthly_sales = sales_data.groupby(['year', 'month'])['sales_amount'].sum().reset_index()
  13. monthly_sales['date'] = pd.to_datetime(monthly_sales['year'].astype(str) + '-' + monthly_sales['month'].astype(str) + '-01')
  14. # 可视化月度销售趋势
  15. plt.figure(figsize=(12, 6))
  16. plt.plot(monthly_sales['date'], monthly_sales['sales_amount'])
  17. plt.title('Monthly Sales Trend')
  18. plt.xlabel('Date')
  19. plt.ylabel('Sales Amount')
  20. plt.grid(True)
  21. plt.show()
  22. # 分析季节性因素
  23. # 计算每个月的平均销售额
  24. monthly_avg = sales_data.groupby('month')['sales_amount'].mean().reset_index()
  25. # 可视化月度平均销售额
  26. plt.figure(figsize=(10, 6))
  27. plt.bar(monthly_avg['month'], monthly_avg['sales_amount'])
  28. plt.title('Average Sales by Month')
  29. plt.xlabel('Month')
  30. plt.ylabel('Average Sales Amount')
  31. plt.xticks(range(1, 13))
  32. plt.grid(True, axis='y')
  33. plt.show()
  34. # 分析产品销售情况
  35. product_sales = sales_data.groupby('product_category')['sales_amount'].sum().sort_values(ascending=False)
  36. # 可视化产品类别销售情况
  37. plt.figure(figsize=(10, 6))
  38. product_sales.plot(kind='bar')
  39. plt.title('Sales by Product Category')
  40. plt.xlabel('Product Category')
  41. plt.ylabel('Sales Amount')
  42. plt.grid(True, axis='y')
  43. plt.show()
  44. # 分析地区销售情况
  45. region_sales = sales_data.groupby('region')['sales_amount'].sum().sort_values(ascending=False)
  46. # 可视化地区销售情况
  47. plt.figure(figsize=(10, 6))
  48. region_sales.plot(kind='bar')
  49. plt.title('Sales by Region')
  50. plt.xlabel('Region')
  51. plt.ylabel('Sales Amount')
  52. plt.grid(True, axis='y')
  53. plt.show()
  54. # 构建销售预测模型
  55. # 创建时间序列特征
  56. monthly_sales['month_num'] = range(1, len(monthly_sales) + 1)
  57. monthly_sales['month_sin'] = np.sin(2 * np.pi * monthly_sales['month'] / 12)
  58. monthly_sales['month_cos'] = np.cos(2 * np.pi * monthly_sales['month'] / 12)
  59. # 准备特征和目标变量
  60. X = monthly_sales[['month_num', 'month_sin', 'month_cos']]
  61. y = monthly_sales['sales_amount']
  62. # 划分训练集和测试集
  63. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  64. # 创建并训练线性回归模型
  65. model = LinearRegression()
  66. model.fit(X_train, y_train)
  67. # 在测试集上进行预测
  68. y_pred = model.predict(X_test)
  69. # 评估模型
  70. mse = mean_squared_error(y_test, y_pred)
  71. r2 = r2_score(y_test, y_pred)
  72. print(f"Mean Squared Error: {mse}")
  73. print(f"R-squared: {r2}")
  74. # 可视化预测结果
  75. plt.figure(figsize=(12, 6))
  76. plt.plot(monthly_sales['date'], monthly_sales['sales_amount'], label='Actual')
  77. plt.plot(monthly_sales.loc[X_test.index, 'date'], y_pred, 'ro', label='Predicted')
  78. plt.title('Sales Prediction')
  79. plt.xlabel('Date')
  80. plt.ylabel('Sales Amount')
  81. plt.legend()
  82. plt.grid(True)
  83. plt.show()
  84. # 预测未来3个月的销售
  85. last_month_num = monthly_sales['month_num'].max()
  86. future_months = []
  87. for i in range(1, 4):
  88.     future_month_num = last_month_num + i
  89.     future_month = (monthly_sales.iloc[-1]['month'] + i - 1) % 12 + 1
  90.     future_year = monthly_sales.iloc[-1]['year'] + (monthly_sales.iloc[-1]['month'] + i - 1) // 12
  91.     future_month_sin = np.sin(2 * np.pi * future_month / 12)
  92.     future_month_cos = np.cos(2 * np.pi * future_month / 12)
  93.     future_months.append([future_month_num, future_month_sin, future_month_cos])
  94. future_sales = model.predict(future_months)
  95. # 创建未来日期
  96. future_dates = []
  97. for i in range(1, 4):
  98.     future_month = (monthly_sales.iloc[-1]['month'] + i - 1) % 12 + 1
  99.     future_year = monthly_sales.iloc[-1]['year'] + (monthly_sales.iloc[-1]['month'] + i - 1) // 12
  100.     future_dates.append(pd.to_datetime(f'{future_year}-{future_month}-01'))
  101. # 可视化历史销售和未来预测
  102. plt.figure(figsize=(12, 6))
  103. plt.plot(monthly_sales['date'], monthly_sales['sales_amount'], label='Historical Sales')
  104. plt.plot(future_dates, future_sales, 'ro-', label='Predicted Sales')
  105. plt.title('Sales Forecast')
  106. plt.xlabel('Date')
  107. plt.ylabel('Sales Amount')
  108. plt.legend()
  109. plt.grid(True)
  110. plt.show()
  111. # 输出预测结果
  112. for i, (date, sales) in enumerate(zip(future_dates, future_sales)):
  113.     print(f"Predicted sales for {date.strftime('%Y-%m')}: ${sales:,.2f}")
复制代码

通过上述分析,我们不仅了解了销售的趋势、季节性因素、产品类别和地区的销售情况,还构建了一个销售预测模型,可以预测未来几个月的销售情况。这些分析结果可以帮助企业制定更精准的销售策略和生产计划。

客户行为分析

客户行为分析是企业了解客户需求、优化产品和服务、提高客户满意度和忠诚度的重要手段。下面我们将使用pandas进行客户行为分析。
  1. # 导入必要的库
  2. import pandas as pd
  3. import numpy as np
  4. import matplotlib.pyplot as plt
  5. import seaborn as sns
  6. from sklearn.cluster import KMeans
  7. from sklearn.preprocessing import StandardScaler
  8. # 读取客户数据
  9. # 假设我们有一个客户数据文件'customer_data.csv'
  10. customer_data = pd.read_csv('customer_data.csv')
  11. # 查看数据基本信息
  12. print("客户数据基本信息:")
  13. print(customer_data.info())
  14. # 查看数据前5行
  15. print("\n客户数据前5行:")
  16. print(customer_data.head())
  17. # 客户 demographic 分析
  18. # 年龄分布
  19. plt.figure(figsize=(10, 6))
  20. plt.hist(customer_data['age'], bins=20, edgecolor='black')
  21. plt.title('Age Distribution')
  22. plt.xlabel('Age')
  23. plt.ylabel('Count')
  24. plt.grid(True, axis='y')
  25. plt.show()
  26. # 性别分布
  27. gender_counts = customer_data['gender'].value_counts()
  28. plt.figure(figsize=(8, 6))
  29. plt.pie(gender_counts, labels=gender_counts.index, autopct='%1.1f%%')
  30. plt.title('Gender Distribution')
  31. plt.show()
  32. # 地区分布
  33. region_counts = customer_data['region'].value_counts()
  34. plt.figure(figsize=(10, 6))
  35. region_counts.plot(kind='bar')
  36. plt.title('Customer Distribution by Region')
  37. plt.xlabel('Region')
  38. plt.ylabel('Count')
  39. plt.grid(True, axis='y')
  40. plt.show()
  41. # 客户购买行为分析
  42. # 计算客户的购买频率、购买金额和最近购买时间
  43. # 假设我们有订单数据文件'order_data.csv'
  44. order_data = pd.read_csv('order_data.csv')
  45. order_data['order_date'] = pd.to_datetime(order_data['order_date'])
  46. # 计算每个客户的购买频率
  47. purchase_frequency = order_data.groupby('customer_id')['order_id'].count().reset_index()
  48. purchase_frequency.columns = ['customer_id', 'purchase_frequency']
  49. # 计算每个客户的总购买金额
  50. total_purchase = order_data.groupby('customer_id')['order_amount'].sum().reset_index()
  51. total_purchase.columns = ['customer_id', 'total_purchase']
  52. # 计算每个客户的最近购买时间
  53. last_purchase = order_data.groupby('customer_id')['order_date'].max().reset_index()
  54. last_purchase.columns = ['customer_id', 'last_purchase_date']
  55. last_purchase['days_since_last_purchase'] = (pd.to_datetime('today') - last_purchase['last_purchase_date']).dt.days
  56. # 合并客户行为指标
  57. customer_behavior = customer_data.merge(purchase_frequency, on='customer_id', how='left')
  58. customer_behavior = customer_behavior.merge(total_purchase, on='customer_id', how='left')
  59. customer_behavior = customer_behavior.merge(last_purchase[['customer_id', 'days_since_last_purchase']], on='customer_id', how='left')
  60. # 填充缺失值
  61. customer_behavior['purchase_frequency'] = customer_behavior['purchase_frequency'].fillna(0)
  62. customer_behavior['total_purchase'] = customer_behavior['total_purchase'].fillna(0)
  63. customer_behavior['days_since_last_purchase'] = customer_behavior['days_since_last_purchase'].fillna(365)  # 假设一年没购买
  64. # 计算平均订单价值
  65. customer_behavior['avg_order_value'] = customer_behavior['total_purchase'] / customer_behavior['purchase_frequency']
  66. customer_behavior['avg_order_value'] = customer_behavior['avg_order_value'].fillna(0)
  67. # 客户细分 - 使用RFM模型
  68. # R (Recency): 最近一次购买时间
  69. # F (Frequency): 购买频率
  70. # M (Monetary): 购买总金额
  71. # 标准化RFM指标
  72. scaler = StandardScaler()
  73. rfm_scaled = scaler.fit_transform(customer_behavior[['days_since_last_purchase', 'purchase_frequency', 'total_purchase']])
  74. # 使用K-means进行客户细分
  75. kmeans = KMeans(n_clusters=5, random_state=42)
  76. customer_behavior['segment'] = kmeans.fit_predict(rfm_scaled)
  77. # 分析每个客户细分的特点
  78. segment_analysis = customer_behavior.groupby('segment').agg({
  79.     'customer_id': 'count',
  80.     'days_since_last_purchase': 'mean',
  81.     'purchase_frequency': 'mean',
  82.     'total_purchase': 'mean',
  83.     'avg_order_value': 'mean'
  84. }).reset_index()
  85. segment_analysis.columns = ['segment', 'count', 'avg_days_since_last_purchase', 'avg_frequency', 'avg_total_purchase', 'avg_order_value']
  86. print("\n客户细分分析:")
  87. print(segment_analysis)
  88. # 可视化客户细分
  89. plt.figure(figsize=(12, 8))
  90. plt.scatter(customer_behavior['days_since_last_purchase'], customer_behavior['total_purchase'],
  91.             c=customer_behavior['segment'], cmap='viridis', alpha=0.6)
  92. plt.title('Customer Segmentation')
  93. plt.xlabel('Days Since Last Purchase')
  94. plt.ylabel('Total Purchase')
  95. plt.colorbar(label='Segment')
  96. plt.grid(True)
  97. plt.show()
  98. # 为每个细分命名
  99. segment_names = {
  100.     0: 'Champions',  # 高价值、高频购买、最近购买
  101.     1: 'Loyal Customers',  # 高频购买、中等价值
  102.     2: 'Potential Loyalists',  # 最近购买、高频购买但价值不高
  103.     3: 'At Risk',  # 高价值但很久没购买
  104.     4: 'Lost'  # 很久没购买、低频购买、低价值
  105. }
  106. customer_behavior['segment_name'] = customer_behavior['segment'].map(segment_names)
  107. # 分析每个细分的客户特征
  108. segment_profile = customer_behavior.groupby('segment_name').agg({
  109.     'customer_id': 'count',
  110.     'age': 'mean',
  111.     'gender': lambda x: x.value_counts().index[0],
  112.     'region': lambda x: x.value_counts().index[0],
  113.     'days_since_last_purchase': 'mean',
  114.     'purchase_frequency': 'mean',
  115.     'total_purchase': 'mean'
  116. }).reset_index()
  117. segment_profile.columns = ['segment_name', 'count', 'avg_age', 'most_common_gender', 'most_common_region',
  118.                           'avg_days_since_last_purchase', 'avg_frequency', 'avg_total_purchase']
  119. print("\n客户细分画像:")
  120. print(segment_profile)
  121. # 可视化每个细分的客户数量
  122. plt.figure(figsize=(10, 6))
  123. segment_counts = customer_behavior['segment_name'].value_counts()
  124. segment_counts.plot(kind='bar')
  125. plt.title('Customer Segment Distribution')
  126. plt.xlabel('Segment')
  127. plt.ylabel('Count')
  128. plt.grid(True, axis='y')
  129. plt.show()
  130. # 客户流失分析
  131. # 定义流失客户:超过90天未购买
  132. churn_threshold = 90
  133. customer_behavior['is_churned'] = customer_behavior['days_since_last_purchase'] > churn_threshold
  134. # 计算流失率
  135. churn_rate = customer_behavior['is_churned'].mean()
  136. print(f"\n客户流失率: {churn_rate:.2%}")
  137. # 分析流失客户的特征
  138. churned_customers = customer_behavior[customer_behavior['is_churned'] == 1]
  139. active_customers = customer_behavior[customer_behavior['is_churned'] == 0]
  140. # 比较流失客户和活跃客户的特征
  141. comparison = pd.DataFrame({
  142.     'Feature': ['Age', 'Purchase Frequency', 'Total Purchase', 'Avg Order Value'],
  143.     'Churned Customers': [
  144.         churned_customers['age'].mean(),
  145.         churned_customers['purchase_frequency'].mean(),
  146.         churned_customers['total_purchase'].mean(),
  147.         churned_customers['avg_order_value'].mean()
  148.     ],
  149.     'Active Customers': [
  150.         active_customers['age'].mean(),
  151.         active_customers['purchase_frequency'].mean(),
  152.         active_customers['total_purchase'].mean(),
  153.         active_customers['avg_order_value'].mean()
  154.     ]
  155. })
  156. print("\n流失客户与活跃客户特征比较:")
  157. print(comparison)
  158. # 客户生命周期价值(CLV)分析
  159. # 简单CLV计算:平均订单价值 × 购买频率 × 客户生命周期(假设为3年)
  160. customer_lifetime = 3  # 年
  161. customer_behavior['clv'] = customer_behavior['avg_order_value'] * customer_behavior['purchase_frequency'] * 12 * customer_lifetime
  162. # 分析CLV分布
  163. plt.figure(figsize=(10, 6))
  164. plt.hist(customer_behavior['clv'], bins=30, edgecolor='black')
  165. plt.title('Customer Lifetime Value Distribution')
  166. plt.xlabel('CLV ($)')
  167. plt.ylabel('Count')
  168. plt.grid(True, axis='y')
  169. plt.show()
  170. # 按客户细分分析CLV
  171. segment_clv = customer_behavior.groupby('segment_name')['clv'].mean().sort_values(ascending=False)
  172. plt.figure(figsize=(10, 6))
  173. segment_clv.plot(kind='bar')
  174. plt.title('Average CLV by Customer Segment')
  175. plt.xlabel('Segment')
  176. plt.ylabel('Average CLV ($)')
  177. plt.grid(True, axis='y')
  178. plt.show()
  179. print("\n各客户细分的平均CLV:")
  180. print(segment_clv)
复制代码

通过上述分析,我们不仅了解了客户的人口统计特征,还深入分析了客户的购买行为、客户细分、客户流失和客户生命周期价值等方面。这些分析结果可以帮助企业制定针对性的营销策略,提高客户满意度和忠诚度,最大化客户价值。

综合决策支持

将销售预测和客户行为分析的结果结合起来,可以为企业提供更全面的决策支持。下面我们将展示如何整合这些分析结果,为企业决策提供支持。
  1. # 导入必要的库
  2. import pandas as pd
  3. import numpy as np
  4. import matplotlib.pyplot as plt
  5. # 假设我们已经有了销售预测和客户行为分析的结果
  6. # 读取销售预测结果
  7. sales_forecast = pd.read_csv('sales_forecast.csv')
  8. # 读取客户行为分析结果
  9. customer_behavior = pd.read_csv('customer_behavior_results.csv')
  10. # 1. 产品策略决策
  11. # 分析不同产品类别的销售趋势和客户偏好
  12. # 假设我们有产品销售数据
  13. product_sales = pd.read_csv('product_sales.csv')
  14. # 计算各产品类别的销售增长率和客户偏好
  15. product_sales['growth_rate'] = product_sales.groupby('product_category')['sales_amount'].pct_change() * 100
  16. product_preference = customer_behavior.groupby('favorite_category')['customer_id'].count().reset_index()
  17. product_preference.columns = ['product_category', 'customer_count']
  18. # 合并销售增长率和客户偏好
  19. product_strategy = product_sales.merge(product_preference, on='product_category', how='left')
  20. product_strategy = product_strategy.groupby('product_category').agg({
  21.     'sales_amount': 'sum',
  22.     'growth_rate': 'mean',
  23.     'customer_count': 'sum'
  24. }).reset_index()
  25. # 计算产品策略得分(综合考虑销售额、增长率和客户数量)
  26. product_strategy['strategy_score'] = (
  27.     product_strategy['sales_amount'] / product_strategy['sales_amount'].max() * 0.4 +
  28.     product_strategy['growth_rate'] / product_strategy['growth_rate'].max() * 0.3 +
  29.     product_strategy['customer_count'] / product_strategy['customer_count'].max() * 0.3
  30. )
  31. # 按策略得分排序
  32. product_strategy = product_strategy.sort_values('strategy_score', ascending=False)
  33. print("产品策略分析:")
  34. print(product_strategy)
  35. # 可视化产品策略
  36. plt.figure(figsize=(12, 8))
  37. plt.scatter(product_strategy['growth_rate'], product_strategy['sales_amount'],
  38.             s=product_strategy['customer_count']/10, alpha=0.6)
  39. for i, row in product_strategy.iterrows():
  40.     plt.text(row['growth_rate'], row['sales_amount'], row['product_category'])
  41. plt.title('Product Strategy Analysis')
  42. plt.xlabel('Growth Rate (%)')
  43. plt.ylabel('Sales Amount ($)')
  44. plt.grid(True)
  45. plt.show()
  46. # 2. 营销策略决策
  47. # 基于客户细分制定不同的营销策略
  48. # 假设我们已经有客户细分结果
  49. customer_segments = customer_behavior.groupby('segment_name').agg({
  50.     'customer_id': 'count',
  51.     'clv': 'mean',
  52.     'days_since_last_purchase': 'mean',
  53.     'purchase_frequency': 'mean'
  54. }).reset_index()
  55. customer_segments.columns = ['segment_name', 'customer_count', 'avg_clv', 'avg_days_since_last_purchase', 'avg_frequency']
  56. # 为每个客户细分制定营销策略
  57. marketing_strategy = pd.DataFrame({
  58.     'segment_name': customer_segments['segment_name'],
  59.     'customer_count': customer_segments['customer_count'],
  60.     'avg_clv': customer_segments['avg_clv'],
  61.     'priority': ['High', 'High', 'Medium', 'Medium', 'Low'],
  62.     'marketing_action': [
  63.         'Loyalty programs, exclusive offers',
  64.         'Cross-selling, up-selling',
  65.         'Targeted promotions, engagement campaigns',
  66.         'Reactivation campaigns, special discounts',
  67.         'Limited resources, minimal marketing'
  68.     ],
  69.     'expected_roi': [5.2, 4.1, 3.2, 2.5, 1.1]
  70. })
  71. print("\n营销策略分析:")
  72. print(marketing_strategy)
  73. # 可视化营销策略
  74. plt.figure(figsize=(12, 6))
  75. plt.bar(marketing_strategy['segment_name'], marketing_strategy['expected_roi'])
  76. plt.title('Expected ROI by Customer Segment')
  77. plt.xlabel('Segment')
  78. plt.ylabel('Expected ROI')
  79. plt.grid(True, axis='y')
  80. plt.show()
  81. # 3. 库存管理决策
  82. # 基于销售预测和产品策略制定库存管理计划
  83. # 假设我们有库存数据
  84. inventory_data = pd.read_csv('inventory_data.csv')
  85. # 合并销售预测和库存数据
  86. inventory_management = sales_forecast.merge(inventory_data, on='product_category', how='left')
  87. # 计算建议的库存水平(考虑销售预测和安全库存)
  88. inventory_management['suggested_inventory'] = inventory_management['forecasted_sales'] * 1.5  # 50%安全库存
  89. # 计算库存调整建议
  90. inventory_management['inventory_adjustment'] = inventory_management['suggested_inventory'] - inventory_management['current_inventory']
  91. # 根据产品策略得分调整库存优先级
  92. inventory_management = inventory_management.merge(product_strategy[['product_category', 'strategy_score']], on='product_category', how='left')
  93. inventory_management['priority'] = pd.cut(inventory_management['strategy_score'],
  94.                                           bins=[0, 0.3, 0.6, 1],
  95.                                           labels=['Low', 'Medium', 'High'])
  96. print("\n库存管理建议:")
  97. print(inventory_management[['product_category', 'current_inventory', 'forecasted_sales',
  98.                             'suggested_inventory', 'inventory_adjustment', 'priority']])
  99. # 可视化库存管理建议
  100. plt.figure(figsize=(12, 6))
  101. plt.bar(inventory_management['product_category'], inventory_management['current_inventory'], alpha=0.7, label='Current Inventory')
  102. plt.bar(inventory_management['product_category'], inventory_management['suggested_inventory'], alpha=0.7, label='Suggested Inventory')
  103. plt.title('Inventory Management Recommendations')
  104. plt.xlabel('Product Category')
  105. plt.ylabel('Inventory Level')
  106. plt.legend()
  107. plt.grid(True, axis='y')
  108. plt.show()
  109. # 4. 人力资源规划决策
  110. # 基于销售预测和客户需求制定人力资源规划
  111. # 假设我们有员工数据
  112. employee_data = pd.read_csv('employee_data.csv')
  113. # 计算当前员工生产力
  114. employee_data['productivity'] = employee_data['sales_handled'] / employee_data['hours_worked']
  115. # 计算需要的员工数量(基于销售预测)
  116. avg_productivity = employee_data['productivity'].mean()
  117. forecasted_sales = sales_forecast['forecasted_sales'].sum()
  118. required_hours = forecasted_sales / avg_productivity
  119. hours_per_employee = employee_data['hours_worked'].mean()
  120. required_employees = required_hours / hours_per_employee
  121. current_employees = len(employee_data)
  122. employee_gap = required_employees - current_employees
  123. print(f"\n人力资源规划:")
  124. print(f"当前员工数量: {current_employees}")
  125. print(f"预测需要的员工数量: {required_employees:.1f}")
  126. print(f"员工缺口: {employee_gap:.1f}")
  127. # 按部门分析人力资源需求
  128. # 假设销售预测可以按部门分解
  129. department_forecast = pd.read_csv('department_sales_forecast.csv')
  130. department_employee = employee_data.groupby('department')['employee_id'].count().reset_index()
  131. department_employee.columns = ['department', 'current_employees']
  132. department_hr_planning = department_forecast.merge(department_employee, on='department', how='left')
  133. department_hr_planning['required_employees'] = department_hr_planning['forecasted_sales'] / avg_productivity / hours_per_employee
  134. department_hr_planning['employee_gap'] = department_hr_planning['required_employees'] - department_hr_planning['current_employees']
  135. print("\n各部门人力资源规划:")
  136. print(department_hr_planning)
  137. # 可视化人力资源规划
  138. plt.figure(figsize=(12, 6))
  139. plt.bar(department_hr_planning['department'], department_hr_planning['current_employees'], alpha=0.7, label='Current Employees')
  140. plt.bar(department_hr_planning['department'], department_hr_planning['required_employees'], alpha=0.7, label='Required Employees')
  141. plt.title('Human Resource Planning by Department')
  142. plt.xlabel('Department')
  143. plt.ylabel('Number of Employees')
  144. plt.legend()
  145. plt.grid(True, axis='y')
  146. plt.show()
  147. # 5. 财务规划决策
  148. # 基于销售预测和成本结构制定财务规划
  149. # 假设我们有财务数据
  150. financial_data = pd.read_csv('financial_data.csv')
  151. # 计算历史财务指标
  152. financial_data['profit_margin'] = (financial_data['revenue'] - financial_data['cost']) / financial_data['revenue']
  153. financial_data['cost_ratio'] = financial_data['cost'] / financial_data['revenue']
  154. # 基于销售预测预测未来财务表现
  155. forecasted_revenue = sales_forecast['forecasted_sales'].sum()
  156. avg_cost_ratio = financial_data['cost_ratio'].mean()
  157. forecasted_cost = forecasted_revenue * avg_cost_ratio
  158. forecasted_profit = forecasted_revenue - forecasted_cost
  159. forecasted_profit_margin = forecasted_profit / forecasted_revenue
  160. print(f"\n财务规划:")
  161. print(f"预测收入: ${forecasted_revenue:,.2f}")
  162. print(f"预测成本: ${forecasted_cost:,.2f}")
  163. print(f"预测利润: ${forecasted_profit:,.2f}")
  164. print(f"预测利润率: {forecasted_profit_margin:.2%}")
  165. # 按产品类别分析财务表现
  166. product_financial = sales_forecast.merge(financial_data.groupby('product_category')['cost_ratio'].mean().reset_index(),
  167.                                         on='product_category', how='left')
  168. product_financial['forecasted_revenue'] = product_financial['forecasted_sales']
  169. product_financial['forecasted_cost'] = product_financial['forecasted_revenue'] * product_financial['cost_ratio']
  170. product_financial['forecasted_profit'] = product_financial['forecasted_revenue'] - product_financial['forecasted_cost']
  171. product_financial['forecasted_profit_margin'] = product_financial['forecasted_profit'] / product_financial['forecasted_revenue']
  172. print("\n各产品类别财务预测:")
  173. print(product_financial[['product_category', 'forecasted_revenue', 'forecasted_cost',
  174.                          'forecasted_profit', 'forecasted_profit_margin']])
  175. # 可视化财务预测
  176. plt.figure(figsize=(12, 6))
  177. plt.bar(product_financial['product_category'], product_financial['forecasted_revenue'], alpha=0.7, label='Revenue')
  178. plt.bar(product_financial['product_category'], product_financial['forecasted_cost'], alpha=0.7, label='Cost')
  179. plt.title('Financial Forecast by Product Category')
  180. plt.xlabel('Product Category')
  181. plt.ylabel('Amount ($)')
  182. plt.legend()
  183. plt.grid(True, axis='y')
  184. plt.show()
复制代码

通过上述综合分析,我们为企业提供了产品策略、营销策略、库存管理、人力资源规划和财务规划等方面的决策支持。这些分析结果基于销售预测和客户行为分析,可以帮助企业做出更明智的决策,提高运营效率,最大化商业价值。

结论

本文通过实际案例,展示了如何使用pandas解决企业中的实际业务问题,从销售预测到客户行为分析,全方位提升企业的决策能力,创造商业价值。

在销售预测方面,我们使用pandas进行了数据清洗、趋势分析、季节性分析、产品销售分析和地区销售分析,并构建了销售预测模型,预测未来几个月的销售情况。这些分析结果可以帮助企业合理安排生产计划、库存管理和营销活动。

在客户行为分析方面,我们使用pandas进行了客户人口统计分析、购买行为分析、客户细分、客户流失分析和客户生命周期价值分析。这些分析结果可以帮助企业了解客户需求,优化产品和服务,提高客户满意度和忠诚度。

在综合决策支持方面,我们整合了销售预测和客户行为分析的结果,为企业提供了产品策略、营销策略、库存管理、人力资源规划和财务规划等方面的决策支持。这些分析结果可以帮助企业做出更明智的决策,提高运营效率,最大化商业价值。

pandas作为Python的数据分析库,提供了强大的数据结构和数据分析工具,使得企业能够轻松处理和分析各种类型的数据。通过pandas,企业可以从海量数据中提取有价值的信息,做出更明智的决策,提高竞争力,创造更大的商业价值。

总之,pandas在企业级数据分析中具有重要作用,它可以帮助企业解决实际业务问题,从销售预测到客户行为分析,全方位提升决策能力,创造商业价值。企业应该充分利用pandas的强大功能,深入分析数据,挖掘数据价值,为业务决策提供支持。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则