编写一个程序,使用Pandas处理DataFrame中的缺失值。
输入:
一个包含缺失值的DataFrame
输出:
处理后的DataFrame,其中缺失值已被适当处理
要求:
1. 使用Pandas的isnull()和sum()方法识别并统计缺失值
2. 根据数据类型选择合适的填充方法:数值型数据使用均值或中位数,分类型数据使用众数
3. 使用fillna()方法填充缺失值
import pandas as pd
import numpy as np
# 创建示例数据
data = {
'A': [1, 2, np.nan, 4, 5],
'B': [np.nan, 2, 3, 4, np.nan],
'C': ['x', 'y', 'z', np.nan, 'x']
}
df = pd.DataFrame(data)
# 识别缺失值
print("缺失值统计:")
print(df.isnull().sum())
# 处理缺失值
df['A'] = df['A'].fillna(df['A'].mean())
df['B'] = df['B'].fillna(df['B'].median())
df['C'] = df['C'].fillna(df['C'].mode()[0])
print("\n处理后的数据:")
print(df)
当你在练习中答错题目时,它们会自动添加到这里
在题库中点击题目旁边的星标图标来收藏题目
数据分析是通过收集、清洗、转换和建模数据,从中发现规律、提取洞察、支持决策的过程。在当今数据驱动的时代,数据分析已经成为企业和组织核心竞争力的重要组成部分。本节将详细介绍数据分析的定义、内涵和外延,帮助您建立对数据分析的全面认知。
什么是数据分析?
数据分析(Data Analysis)是指用适当的统计分析方法对收集来的大量数据进行分析,将它们加以汇总、理解并消化,以求最大化地开发数据的功能,发挥数据的作用。数据分析是为了提取有用信息和形成结论,而对数据加以详细研究和概括总结的过程。
核心要点:
数据分析在现代企业中发挥着不可替代的作用,主要体现在以下四个核心维度:
🎯 价值一:业务优化
数据分析能够帮助企业发现运营中的问题和机会,实现精细化管理和持续优化。
发现业务问题
通过数据分析发现运营中的异常和问题,如销售额下降、用户流失、转化率降低等。
优化业务流程
识别效率瓶颈,改进工作流程,提升运营效率。
📊 价值二:决策支持
数据分析为企业决策提供客观依据,从"经验驱动"转向"数据驱动"。
数据驱动决策
用数据说话,避免主观判断和偏见,提高决策的科学性。
预测未来趋势
基于历史数据预测趋势和结果,提前做好规划和准备。
🚀 价值三:创新驱动
通过数据分析发现新的市场机会和业务模式,驱动产品和服务创新。
发现市场机会
分析市场趋势和用户需求,发现未被满足的市场需求。
产品优化创新
基于用户行为数据优化产品体验,驱动产品迭代创新。
💡 价值四:客户洞察
深入了解客户需求和行为,提升客户满意度和忠诚度。
客户画像分析
构建客户画像,了解客户特征和偏好。
客户生命周期管理
分析客户生命周期价值,优化客户获取和留存策略。
数据分析不是随机的探索,而是遵循系统化的流程和方法论。掌握这些方法论能够帮助您更高效地开展数据分析工作,确保分析过程的科学性和结果的可靠性。
CRISP-DM(Cross-Industry Standard Process for Data Mining)是数据挖掘领域最广泛使用的方法论框架。它定义了数据挖掘项目的标准流程,适用于各种行业和数据挖掘任务。
📋 业务理解(Business Understanding)
理解业务目标和需求,将业务问题转化为数据挖掘问题。
📊 数据理解(Data Understanding)
收集数据,了解数据的结构、质量和特征。
🧹 数据准备(Data Preparation)
数据清洗、转换、整合,为建模做准备。
🔧 建模(Modeling)
选择和应用适当的建模技术,建立预测或描述模型。
✅ 评估(Evaluation)
评估模型的效果,验证模型是否满足业务需求。
🚀 部署(Deployment)
将模型部署到生产环境,实现业务价值。
明确问题
定义分析目标
数据收集
获取相关数据
数据清洗
处理异常缺失
分析建模
探索与建模
结果解释
解读分析结果
可视化
呈现分析结果
报告撰写
输出分析报告
决策支持
落地业务应用
成为一名优秀的数据分析师需要具备多方面的技能,包括业务理解、技术能力、分析思维等。本节将介绍数据分析师所需的核心技能体系。
数据质量是数据分析的基础,"垃圾输入,垃圾输出"(Garbage In, Garbage Out)。在进行数据分析之前,必须先评估和确保数据质量。本节将介绍数据类型的识别和数据质量的评估方法。
🔢 数值型数据
用于测量和计算,包括整数、小数等。
• 离散型:如用户数量、订单数
• 连续型:如销售额、身高体重
📝 分类型数据
用于分类和标签,表示类别属性。
• 名义型:如性别、产品类别
• 有序型:如满意度评分、学历
📅 时间型数据
表示时间点或时间段的数据。
• 日期格式:YYYY-MM-DD
• 时间格式:HH:MM:SS
🔍 完整性
数据是否存在缺失值或空值
🔢 准确性
数据是否准确反映真实情况
⏰ 时效性
数据是否及时更新
🔗 一致性
数据格式和标准是否统一
🔒 唯一性
数据是否存在重复记录
缺失值是数据中常见的问题,处理不当会严重影响分析结果。本节将介绍多种缺失值处理方法,并通过Python代码示例演示如何实际处理缺失值。
🗑️ 删除法
直接删除包含缺失值的行或列。适用于缺失比例较低的情况。
优点:简单快捷
缺点:可能丢失重要信息
🔄 填充法
用特定值填充缺失值,包括均值、中位数、众数等。
• 数值型:均值/中位数
• 分类型:众数/特殊标记
📈 插值法
根据相邻数据点进行插值估算。适用于时间序列数据。
• 线性插值
• 多项式插值
🤖 模型预测法
使用机器学习模型预测缺失值。适用于缺失比例较高的情况。
import pandas as pd
import numpy as np
# 创建包含缺失值的示例数据
data = {
'姓名': ['张三', '李四', '王五', np.nan, '赵六'],
'年龄': [25, 30, np.nan, 35, 40],
'性别': ['男', '女', '男', np.nan, '女'],
'工资': [5000, 6000, 5500, np.nan, 7000]
}
df = pd.DataFrame(data)
print("原始数据:")
print(df)
print("\n缺失值统计:")
print(df.isnull().sum())
# 方法1: 删除缺失值
df_drop = df.dropna()
print("\n删除缺失值后:")
print(df_drop)
# 方法2: 填充缺失值
df_fill = df.copy()
df_fill['年龄'] = df_fill['年龄'].fillna(df_fill['年龄'].mean())
df_fill['工资'] = df_fill['工资'].fillna(df_fill['工资'].median())
df_fill['性别'] = df_fill['性别'].fillna(df_fill['性别'].mode()[0])
df_fill['姓名'] = df_fill['姓名'].fillna('未知')
print("\n填充缺失值后:")
print(df_fill)
异常值是指与其他数据点显著不同的值,可能是数据录入错误或真实的极端情况。识别和处理异常值是数据清洗的重要环节。
📊 统计方法
基于统计分布识别异常值。
• Z-score方法:|Z| > 3
• IQR方法:超出四分位距1.5倍范围
📈 可视化方法
通过图表直观识别异常值。
• 箱线图
• 散点图
• 直方图
🤖 模型方法
使用机器学习模型检测异常值。
• Isolation Forest
• One-Class SVM
import pandas as pd
import numpy as np
# 创建包含异常值的示例数据
np.random.seed(42)
data = np.random.normal(100, 10, 100)
data = np.append(data, [50, 180, 185]) # 添加异常值
df = pd.DataFrame({'数值': data})
# 方法1: Z-score检测
z_scores = np.abs((df - df.mean()) / df.std())
outliers_z = df[z_scores > 3]
print("Z-score异常值:")
print(outliers_z)
# 方法2: IQR检测
Q1 = df.quantile(0.25)
Q3 = df.quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
outliers_iqr = df[(df < lower_bound) | (df > upper_bound)]
print("\nIQR异常值:")
print(outliers_iqr)
数据格式转换和标准化是数据分析前的必要准备工作,包括数据类型转换、日期格式处理、数据归一化等。
import pandas as pd
# 创建示例数据
df = pd.DataFrame({
'日期': ['2023-01-01', '2023-01-02', '2023-01-03'],
'销售额': ['1000', '2000', '1500'],
'利润率': ['0.25', '0.30', '0.28']
})
print("原始数据类型:")
print(df.dtypes)
# 数据类型转换
df['日期'] = pd.to_datetime(df['日期'])
df['销售额'] = df['销售额'].astype(float)
df['利润率'] = df['利润率'].astype(float)
print("\n转换后数据类型:")
print(df.dtypes)
print("\n转换后数据:")
print(df)
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
# 创建示例数据
data = {
'年龄': [25, 30, 35, 40, 45],
'收入': [5000, 8000, 12000, 15000, 20000],
'消费': [1000, 2000, 3000, 4000, 5000]
}
df = pd.DataFrame(data)
print("原始数据:")
print(df)
# 标准化 (Z-score)
scaler = StandardScaler()
df_std = pd.DataFrame(
scaler.fit_transform(df),
columns=df.columns
)
print("\nZ-score标准化:")
print(df_std)
Excel是最常用的数据分析工具之一,掌握Excel的高级功能能够显著提升数据分析效率。本节将介绍Excel的核心数据分析技巧。
SUMIF/SUMIFS
条件求和,根据指定条件对单元格求和
COUNTIF/COUNTIFS
条件计数,统计满足条件的单元格数量
VLOOKUP/HLOOKUP
垂直/水平查找,在表格中查找匹配值
INDEX/MATCH
组合查找,更灵活的查找方式
PivotTable
数据透视表,快速汇总和分析数据
快捷键操作
Ctrl+C/V/X复制粘贴剪切,Ctrl+S保存
数据验证
设置数据格式和范围限制
条件格式
根据条件自动设置单元格格式
图表制作
创建专业的数据可视化图表
Power Query
强大的数据清洗和转换工具
SQL是数据分析师必备的技能,用于从数据库中提取和处理数据。本节将通过实战案例介绍SQL的核心查询语法。
-- 1. 基本查询
SELECT column1, column2
FROM table_name
WHERE condition;
-- 2. 排序
SELECT *
FROM sales
ORDER BY amount DESC;
-- 3. 分组聚合
SELECT category, COUNT(*) as count, SUM(amount) as total
FROM products
GROUP BY category
HAVING COUNT(*) > 10;
-- 4. 多表连接
SELECT o.order_id, c.name, o.amount
FROM orders o
JOIN customers c ON o.customer_id = c.id
WHERE o.order_date >= '2023-01-01';
-- 5. 子查询
SELECT *
FROM products
WHERE price > (SELECT AVG(price) FROM products);
-- 6. 窗口函数
SELECT
name,
department,
salary,
RANK() OVER(PARTITION BY department ORDER BY salary DESC) as rank
FROM employees;
Python是数据分析的主流工具,拥有丰富的数据分析库。本节将介绍Pandas、NumPy、Matplotlib等核心库的使用方法。
import pandas as pd
# 读取数据
df = pd.read_csv('data.csv')
# 查看数据
print(df.head())
print(df.info())
print(df.describe())
# 数据筛选
filtered = df[df['category'] == 'A']
# 数据分组
grouped = df.groupby('category')['sales'].sum()
# 数据合并
df1 = pd.merge(df_a, df_b, on='id')
import numpy as np # 创建数组 arr = np.array([1, 2, 3, 4, 5]) # 数组运算 result = arr * 2 + 1 # 统计计算 mean = np.mean(arr) std = np.std(arr) max_val = np.max(arr) # 矩阵操作 matrix = np.array([[1, 2], [3, 4]]) inv_matrix = np.linalg.inv(matrix)
import matplotlib.pyplot as plt
# 折线图
plt.plot(x, y)
plt.title('折线图')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.show()
# 柱状图
plt.bar(categories, values)
plt.title('柱状图')
plt.show()
# 散点图
plt.scatter(x, y)
plt.title('散点图')
plt.show()
掌握各种数据格式的读写操作是数据分析师的基本技能。本节将介绍如何使用Python读取和导出常见的数据格式。
import pandas as pd
# 读取CSV文件
df_csv = pd.read_csv('data.csv')
# 读取Excel文件
df_excel = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# 读取JSON文件
df_json = pd.read_json('data.json')
# 导出CSV
df_csv.to_csv('output.csv', index=False)
# 导出Excel
df_excel.to_excel('output.xlsx', sheet_name='Data', index=False)
# 导出JSON
df_json.to_json('output.json', orient='records')
描述性统计是数据分析的基础,用于概括和描述数据的基本特征。本节将介绍集中趋势、离散程度、分布形态等核心概念。
📈 均值(Mean)
所有数据值的平均值,受极端值影响较大。
公式:μ = (x₁ + x₂ + ... + xₙ) / n
📊 中位数(Median)
数据排序后位于中间位置的值,不受极端值影响。
🔄 众数(Mode)
出现次数最多的值,适用于分类型数据。
📏 极差(Range)
最大值与最小值之差,反映数据的波动范围。
📊 方差(Variance)
各数据值与均值差的平方的平均值。
σ² = Σ(xᵢ - μ)² / n
📈 标准差(Standard Deviation)
方差的平方根,与原始数据单位相同。
σ = √σ²
import pandas as pd
import numpy as np
# 创建示例数据
data = pd.DataFrame({
'销售额': [1000, 1500, 1200, 1800, 2000, 1600, 1400, 1700],
'客户年龄': [25, 30, 35, 40, 45, 30, 35, 40],
'购买次数': [1, 2, 1, 3, 2, 1, 2, 3]
})
print("数据基本统计:")
print(data.describe())
print("\n均值:")
print(data.mean())
print("\n中位数:")
print(data.median())
print("\n众数:")
print(data.mode())
print("\n标准差:")
print(data.std())
推断统计是从样本数据推断总体特征的方法,包括参数估计和假设检验。本节将介绍置信区间和假设检验的基本概念和应用。
📊 点估计
用样本统计量直接估计总体参数,如用样本均值估计总体均值。
🎯 区间估计
给出参数估计的置信区间,说明估计的可靠性。
置信区间 = 点估计 ± 边际误差
📈 置信水平
置信区间包含真实参数的概率,常用95%或99%。
❓ 原假设与备择假设
原假设(H₀):默认成立的假设;备择假设(H₁):我们想要证明的假设。
📊 P值
在原假设成立的情况下,观察到当前数据或更极端数据的概率。
✅ 显著性水平
拒绝原假设的阈值,常用α=0.05。
import scipy.stats as stats
import numpy as np
# 单样本t检验
np.random.seed(42)
sample = np.random.normal(100, 15, 50)
t_stat, p_value = stats.ttest_1samp(sample, 100)
print(f"单样本t检验: t={t_stat:.4f}, p={p_value:.4f}")
# 独立样本t检验
group1 = np.random.normal(50, 10, 30)
group2 = np.random.normal(55, 10, 30)
t_stat, p_value = stats.ttest_ind(group1, group2)
print(f"独立样本t检验: t={t_stat:.4f}, p={p_value:.4f}")
# 卡方检验
observed = np.array([[20, 30], [15, 35]])
chi2_stat, p_value, dof, expected = stats.chi2_contingency(observed)
print(f"卡方检验: chi2={chi2_stat:.4f}, p={p_value:.4f}")
回归分析是研究变量之间关系的统计方法,用于预测和解释变量之间的关联。本节将介绍线性回归和多元回归的基本原理和应用。
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
# 创建示例数据
np.random.seed(42)
data = pd.DataFrame({
'广告投入': np.linspace(1, 10, 50),
'销售额': np.linspace(10, 100, 50) + np.random.normal(0, 5, 50)
})
X = data[['广告投入']].values
y = data['销售额'].values
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建并训练模型
model = LinearRegression()
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估模型
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"回归系数: {model.coef_[0]:.2f}")
print(f"截距: {model.intercept_:.2f}")
print(f"MSE: {mse:.2f}")
print(f"R²: {r2:.2f}")
机器学习是数据分析的高级技术,能够让计算机从数据中学习模式并做出预测。本节将介绍机器学习的基本概念和常用算法。
📊 监督学习
使用标注数据训练模型,包括分类和回归任务。
🔍 无监督学习
从未标注数据中发现模式,如聚类分析。
🎮 强化学习
通过与环境交互学习最优策略。
📈 线性回归
用于预测连续数值
🔘 逻辑回归
用于二分类问题
🌳 决策树
用于分类和回归
🌲 随机森林
集成学习算法,提高准确性
📊 K-Means
聚类算法
聚类分析是无监督学习的重要方法,用于将数据分组到不同的簇中,使得同一簇内的数据相似度较高,不同簇之间的数据相似度较低。
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
# 创建示例数据
np.random.seed(42)
data = pd.DataFrame({
'消费金额': np.random.randint(100, 1000, 100),
'购买频率': np.random.randint(1, 20, 100)
})
# 使用肘部法确定最佳K值
inertia = []
for k in range(1, 11):
kmeans = KMeans(n_clusters=k, random_state=42)
kmeans.fit(data)
inertia.append(kmeans.inertia_)
print("不同K值的惯性:", inertia[:5])
# 使用K=3进行聚类
kmeans = KMeans(n_clusters=3, random_state=42)
data['聚类标签'] = kmeans.fit_predict(data)
print("\n聚类中心:")
print(kmeans.cluster_centers_)
时间序列分析是对按时间顺序排列的数据进行分析的方法,用于预测未来趋势和模式。本节将介绍时间序列的基本概念和分析方法。
import pandas as pd
import numpy as np
# 创建时间序列数据
dates = pd.date_range(start='2023-01-01', periods=12, freq='M')
sales = np.array([100, 120, 110, 130, 140, 160, 150, 170, 180, 190, 200, 220])
ts_data = pd.DataFrame({'日期': dates, '销售额': sales})
ts_data.set_index('日期', inplace=True)
# 计算移动平均
ts_data['MA3'] = ts_data['销售额'].rolling(window=3).mean()
ts_data['MA6'] = ts_data['销售额'].rolling(window=6).mean()
print("时间序列数据:")
print(ts_data)
# 计算增长率
ts_data['增长率'] = ts_data['销售额'].pct_change() * 100
print("\n增长率:")
print(ts_data['增长率'])
数据挖掘是从大量数据中发现隐藏模式和知识的过程。本节将介绍数据挖掘的核心技术和应用场景。
# 关联规则示例:购物篮分析 # 常用指标:支持度、置信度、提升度 # 支持度 = P(A ∩ B) = 同时购买A和B的比例 # 置信度 = P(B|A) = 购买A后购买B的概率 # 提升度 = 置信度 / P(B) = 购买A对购买B的提升程度 # 示例:啤酒与尿布的经典案例 # 如果顾客购买尿布,有60%的概率购买啤酒 # 提升度为3,表示购买尿布的顾客购买啤酒的概率 # 是普通顾客的3倍
import pandas as pd
from sklearn.preprocessing import LabelEncoder
# 创建示例数据
data = pd.DataFrame({
'性别': ['男', '女', '男', '女', '男'],
'年龄': [25, 30, 35, 40, 45],
'收入': ['低', '中', '高', '中', '高']
})
# 类别特征编码
label_encoder = LabelEncoder()
data['性别_编码'] = label_encoder.fit_transform(data['性别'])
data['收入_编码'] = label_encoder.fit_transform(data['收入'])
# 创建衍生特征
data['年龄分组'] = pd.cut(data['年龄'],
bins=[0, 30, 40, 100],
labels=['青年', '中年', '老年']
)
print(data)
数据可视化是将数据转化为图形的过程,能够帮助用户快速理解数据中的模式和趋势。本节将介绍数据可视化的基本原则和最佳实践。
📊 清晰性
图表应清晰传达信息,避免混乱
🎯 准确性
数据展示应准确无误
⚡ 简洁性
去除不必要的装饰元素
🎨 美观性
配色协调,视觉舒适
📊 比较数据
柱状图、条形图、雷达图
📈 展示趋势
折线图、面积图
🔄 展示分布
直方图、箱线图、密度图
🔗 展示关系
散点图、热力图
Python拥有丰富的数据可视化库,包括Matplotlib、Seaborn、Plotly等。本节将介绍这些工具的使用方法。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.figure(figsize=(10, 4))
plt.plot(x, y, label='sin(x)', color='blue')
plt.title('正弦函数')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend()
plt.grid(True)
plt.show()
import seaborn as sns
import pandas as pd
data = pd.DataFrame({
'类别': ['A', 'B', 'C', 'A', 'B', 'C'],
'数值': [1, 2, 3, 4, 5, 6]
})
sns.boxplot(x='类别', y='数值', data=data)
plt.title('类别分布')
plt.show()
sns.scatterplot(x='类别', y='数值', data=data)
plt.title('散点图')
plt.show()
import plotly.express as px
import pandas as pd
data = pd.DataFrame({
'国家': ['中国', '美国', '日本', '德国'],
'GDP': [15.4, 21.4, 5.1, 3.8]
})
fig = px.bar(data, x='国家', y='GDP',
title='各国GDP对比')
fig.show()
一份优秀的数据分析报告能够有效传达分析结果和洞察。本节将介绍报告撰写的结构和技巧。
📌 封面
报告标题、作者、日期
📋 目录
报告章节结构
📊 执行摘要
核心发现和建议的简短摘要
❓ 问题定义
分析目标和业务背景
📁 数据说明
数据来源、范围、质量
🔍 分析方法
使用的分析方法和工具
📈 分析结果
详细的分析结果和图表
💡 结论建议
核心发现和行动建议
电商数据分析是数据分析应用最广泛的领域之一,包括用户行为分析、销售分析、营销效果分析等。本节将介绍电商数据分析的实战案例。
import pandas as pd
import numpy as np
# 读取电商用户行为数据
df = pd.read_csv('user_behavior.csv')
# 数据预处理
df['timestamp'] = pd.to_datetime(df['timestamp'])
df['date'] = df['timestamp'].dt.date
# 1. 用户访问分析
daily_visitors = df.groupby('date')['user_id'].nunique()
print("每日访问用户数:\n", daily_visitors)
# 2. 转化率分析
total_visitors = df['user_id'].nunique()
buyers = df[df['behavior'] == 'buy']['user_id'].nunique()
conversion_rate = buyers / total_visitors * 100
print(f"\n转化率: {conversion_rate:.2f}%")
# 3. 用户购买频次分析
purchase_counts = df[df['behavior'] == 'buy'].groupby('user_id').size()
print("\n用户购买频次分布:")
print(purchase_counts.value_counts())
# 4. RFM分析
current_date = df['date'].max() + pd.Timedelta(days=1)
rfm = df[df['behavior'] == 'buy'].groupby('user_id').agg({
'date': lambda x: (current_date - x.max()).days,
'user_id': 'count',
'amount': 'sum'
}).rename(columns={
'date': 'R',
'user_id': 'F',
'amount': 'M'
})
print("\nRFM分析结果:")
print(rfm.head())
金融数据分析涉及风险评估、信用评分、市场分析等多个方面。本节将介绍金融数据分析的实战案例。
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report
# 读取信用数据
df = pd.read_csv('credit_data.csv')
# 特征选择
X = df[['收入', '负债', '信用历史', '贷款金额', '还款期限']]
y = df['违约']
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# 创建模型
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估
accuracy = accuracy_score(y_test, y_pred)
print(f"准确率: {accuracy:.2%}")
print("\n分类报告:")
print(classification_report(y_test, y_pred))
# 特征重要性
feature_importance = pd.DataFrame({
'特征': X.columns,
'重要性': model.feature_importances_
}).sort_values('重要性', ascending=False)
print("\n特征重要性:")
print(feature_importance)
营销效果分析是评估营销活动ROI的关键,包括渠道分析、用户获取成本分析、转化漏斗分析等。
import pandas as pd
# 读取营销数据
df = pd.read_csv('marketing_data.csv')
# 渠道效果分析
channel_stats = df.groupby('渠道').agg({
'花费': 'sum',
'转化': 'sum',
'收入': 'sum'
}).reset_index()
# 计算关键指标
channel_stats['转化率'] = channel_stats['转化'] / channel_stats['花费'] * 100
channel_stats['ROI'] = (channel_stats['收入'] - channel_stats['花费']) / channel_stats['花费'] * 100
channel_stats['CAC'] = channel_stats['花费'] / channel_stats['转化']
print("各渠道效果对比:")
print(channel_stats[['渠道', '花费', '转化', '收入', '转化率', 'ROI', 'CAC']])
# 转化漏斗分析
funnel = pd.DataFrame({
'阶段': ['曝光', '点击', '访问', '注册', '购买'],
'数量': [10000, 2000, 1500, 500, 100]
})
funnel['转化率'] = funnel['数量'] / funnel['数量'].iloc[0] * 100
funnel['阶段转化率'] = funnel['数量'] / funnel['数量'].shift(1) * 100
print("\n转化漏斗分析:")
print(funnel)
本章将对整个课程内容进行系统性总结,帮助您梳理所学知识,建立完整的数据分析知识体系。
数据分析基础
概念、流程、方法论
数据准备清洗
缺失值、异常值处理
核心工具
Excel、SQL、Python
统计分析
描述统计、推断统计
机器学习
聚类、回归、时间序列
数据可视化
图表设计、工具使用
行业实战
电商、金融案例
报告撰写
结构、技巧、呈现
掌握数据分析技能后,如何规划职业发展路径?本节将介绍数据分析师的职业发展方向和成长路径。
专注于业务分析、报表制作、数据洞察,为业务决策提供支持。
• 核心技能:Excel、SQL、Python、可视化
• 成长路径:初级→中级→高级分析师
• 薪资范围:8K-20K
专注于机器学习、深度学习、算法开发,解决复杂的数据问题。
• 核心技能:Python、统计学、机器学习
• 成长路径:算法工程师→高级科学家
• 薪资范围:15K-40K
专注于业务理解、需求分析、流程优化,连接技术与业务。
• 核心技能:业务理解、沟通能力、SQL
• 成长路径:BA→产品经理→业务负责人
• 薪资范围:10K-25K
持续学习是数据分析师成长的关键。本节将推荐一些优质的学习资源,帮助您继续提升技能。
《深入浅出数据分析》
数据分析入门经典
《Python数据分析实战》
Python数据分析实践指南
《统计学导论》
统计学基础知识
Kaggle
数据竞赛平台,实战练习
Coursera
在线课程平台
DataCamp
交互式数据分析学习平台
恭喜您完成了数据分析技术课程的学习!数据分析是一个持续学习和实践的过程,希望您能够将所学知识应用到实际工作中,不断提升自己的技能。
记住:
祝您在数据分析的道路上越走越远!🚀