【蜗牛学院】 轻松入门Python数据分析 - 带源码课件

Python 数据分析轻松入门:蜗牛学院手把手教学全流程

欢迎来到蜗牛学院的Python数据分析课堂!本教程将手把手带你走完一个数据分析项目的标准全流程:从数据获取、数据清洗、探索性分析,到最终的数据可视化与结论得出。我们将使用Python最核心的数据分析库:Pandas, NumPy 和 Matplotlib/Seaborn。

第一阶段:环境搭建与数据准备

1.1 搭建你的分析工具箱

首先,确保你的Python环境中已安装必要的库。在终端或命令提示符中执行以下命令:

bash 复制代码
pip install pandas numpy matplotlib seaborn jupyter

我们推荐使用Jupyter Notebook进行交互式数据分析,它能让你清晰地看到每一步的结果。

1.2 准备数据:我们的"原材料"

数据分析的第一步是获取数据。我们将使用Pandas内置的便捷方法,从一个CSV文件加载数据。这里我们以一个模拟的"电商订单数据"为例。

python 复制代码
# 导入必要的库。这是每个分析脚本的开头
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 设置中文显示和图形样式(让图表更美观)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False   # 用来正常显示负号
sns.set_style("whitegrid") # 设置Seaborn的绘图风格为白色网格

# 手把手第一步:读取数据
# 假设我们的数据文件名为 'sales_data.csv'
# 如果文件在其他路径,需要写上完整路径,如:'C:/Users/.../sales_data.csv'
df = pd.read_csv('sales_data.csv')

# 让我们先看一眼数据的"长相"和大小
print("数据形状(行数, 列数):", df.shape)
print("\n数据前5行:")
df.head()

假设我们的 sales_data.csv 文件内容如下:

csv 复制代码
order_id,customer_name,product_category,sales_volume,unit_price,order_date,city
1001,张三,电子产品,2,2999.0,2023-10-01,北京
1002,李四,服装,1,150.5,2023-10-01,上海
1003,王五,家居,1,450.0,2023-10-02,广州
1004,赵六,电子产品,1,1599.0,2023-10-02,深圳
1005,钱七,图书,3,45.0,2023-10-02,北京
1006,孙八,服装,2,180.0,2023-10-03,上海
1007,周九,家居,1,NULL,2023-10-03,杭州
1008,吴十,电子产品,1,3999.0,2023-10-04,北京

运行 df.head() 后,你将看到一个清晰的表格预览。

第二阶段:数据清洗与预处理------为分析打下坚实基础

原始数据往往是"脏"的,包含缺失值、异常值或不一致的格式。清洗是保证分析结果准确的关键。

2.1 探索数据基本信息

python 复制代码
# 查看数据集的整体信息,包括每列的非空数量、数据类型
print("数据信息:")
df.info()

# 查看数值型列的基本统计信息(计数、均值、标准差、最值等)
print("\n数值列描述性统计:")
df.describe()

2.2 处理缺失值

df.info() 可能会显示某些列存在非空数量少于总行数,这意味着有缺失值。我们用 isnull() 来检查。

python 复制代码
# 检查每列的缺失值数量
print("缺失值统计:")
print(df.isnull().sum())

假设 unit_price 列有一个缺失值(NULL)。我们有多种处理方式:

python 复制代码
# 方法1:删除含有缺失值的行(如果缺失数据很少,可以用此法)
# df_cleaned = df.dropna()

# 方法2:填充缺失值(更常用)
# 这里我们用该列的平均值来填充缺失值
average_price = df['unit_price'].mean()
df['unit_price'].fillna(average_price, inplace=True) # inplace=True表示直接修改原DataFrame

print("填充后再次检查缺失值:")
print(df.isnull().sum())

2.3 处理重复值与数据类型转换

python 复制代码
# 检查并删除完全重复的行
duplicate_rows = df.duplicated().sum()
print(f"重复行数量: {duplicate_rows}")
if duplicate_rows > 0:
    df.drop_duplicates(inplace=True)

# 转换数据类型:将订单日期字符串转换为Pandas的日期时间类型,便于时间序列分析
df['order_date'] = pd.to_datetime(df['order_date'])
print("\n转换后日期列信息:")
print(df['order_date'].dtype)

2.4 创建新特征(特征工程)

很多时候,我们需要从现有列中衍生出新的、更有分析价值的列。

python 复制代码
# 创建一个新列 'total_sales',表示每笔订单的总销售额
df['total_sales'] = df['sales_volume'] * df['unit_price']

# 从日期中提取新的维度,如月份、星期几
df['order_month'] = df['order_date'].dt.month
df['order_weekday'] = df['order_date'].dt.day_name()

print("创建新特征后的数据:")
df.head()

第三阶段:探索性数据分析------发现数据中的故事

现在,干净的数据已经准备好,让我们开始探索吧!

3.1 整体销售情况分析

python 复制代码
# 计算总销售额和总订单数
total_revenue = df['total_sales'].sum()
total_orders = df['order_id'].nunique() # nunique() 计算唯一值数量

print(f"总销售额: ¥{total_revenue:,.2f}")
print(f"总订单数: {total_orders}")

3.2 哪个产品类别最受欢迎?(分类汇总)

python 复制代码
# 按产品类别分组,并聚合计算总销售额和销售数量
category_analysis = df.groupby('product_category').agg({
    'total_sales': 'sum',
    'sales_volume': 'sum',
    'order_id': 'count' # 计算每个类别的订单数
}).rename(columns={'order_id': 'order_count'}) # 重命名列

# 按总销售额降序排列
category_analysis = category_analysis.sort_values('total_sales', ascending=False)
print("按产品类别分析:")
category_analysis

3.3 哪个城市的消费能力最强?

python 复制代码
city_analysis = df.groupby('city')['total_sales'].sum().sort_values(ascending=False)
print("各城市总销售额:")
print(city_analysis)

第四阶段:数据可视化------一图胜千言

数字是冰冷的,图表却能让我们直观地看到趋势和模式。

4.1 绘制产品类别销售额柱状图

python 复制代码
# 使用Matplotlib
plt.figure(figsize=(10, 6))
# 从之前分组聚合的结果中取数据
plt.bar(category_analysis.index, category_analysis['total_sales'])
plt.title('各产品类别总销售额对比')
plt.xlabel('产品类别')
plt.ylabel('总销售额 (元)')
plt.xticks(rotation=45) # 旋转X轴标签,避免重叠
# 在柱子上显示数值
for i, v in enumerate(category_analysis['total_sales']):
    plt.text(i, v, f'¥{v:,.0f}', ha='center', va='bottom')
plt.tight_layout() # 自动调整布局
plt.show()

4.2 绘制城市销售额饼图

python 复制代码
plt.figure(figsize=(8, 8))
plt.pie(city_analysis.values, labels=city_analysis.index, autopct='%1.1f%%', startangle=90)
plt.title('各城市销售额占比')
plt.show()

4.3 使用Seaborn绘制更高级的图表

Seaborn基于Matplotlib,提供了更美观的样式和更高级的绘图功能。

python 复制代码
# 绘制每日销售额趋势图(时间序列图)
daily_sales = df.groupby('order_date')['total_sales'].sum()

plt.figure(figsize=(12, 6))
sns.lineplot(x=daily_sales.index, y=daily_sales.values)
plt.title('每日销售额趋势')
plt.xlabel('日期')
plt.ylabel('销售额 (元)')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

4.4 箱线图:查看销售额的分布与异常值

python 复制代码
plt.figure(figsize=(8, 6))
# 按类别查看总销售额的分布
sns.boxplot(data=df, x='product_category', y='total_sales')
plt.title('各产品类别销售额分布箱线图')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
# 箱线图可以清晰地显示出数据的中位数、四分位数以及可能的异常值(上下边缘之外的点)。

第五阶段:分析结论与报告

通过以上分析,我们可以得出一些初步结论,并形成报告。

python 复制代码
print("=== 蜗牛学院数据分析报告 ===")
print(f"分析时间段: {df['order_date'].min()} 至 {df['order_date'].max()}")
print(f"核心发现:")
print(f"1. 业绩总览:在此期间,共产生{total_orders}笔订单,实现总销售额¥{total_revenue:,.2f}。")
print(f"2. 明星品类:'{category_analysis.index[0]}'是销售额最高的品类,贡献了¥{category_analysis.iloc[0]['total_sales']:,.2f}。")
print(f"3. 核心市场:'{city_analysis.index[0]}'是消费能力最强的城市。")
print(f"4. 销售趋势:从每日趋势图可以看出,销售额在...日期附近有显著波动(可根据实际图表补充)。")
print("\n建议:")
print("- 加大对明星品类 '{category_analysis.index[0]}' 的库存和营销投入。")
print("- 深入研究 '{city_analysis.index[0]}' 市场的成功经验,并尝试复制到其他城市。")
print("- 针对销售额较低的品类和城市,制定专项促销策略。")

总结

恭喜你!你已经跟着蜗牛学院完成了一个完整的数据分析流程:

  1. 数据获取 :使用 pd.read_csv()
  2. 数据清洗 :处理缺失值 fillna()、转换数据类型、创建新特征。
  3. 数据探索 :使用 groupby()agg() 进行分组聚合,计算关键指标。
  4. 数据可视化:使用 Matplotlib 和 Seaborn 绘制柱状图、饼图、折线图等,将数据直观呈现。
  5. 得出结论:基于数据和图表,形成商业洞察和建议。

这个流程是数据分析的通用范式。不断练习,使用更复杂、更真实的数据集,你将很快从入门走向精通!记住,数据分析的核心不在于记住所有函数,而在于形成提出问题 -> 用数据和工具验证 -> 得出结论的思维模式。

相关推荐
深度学习lover4 小时前
<项目代码>yolo螺丝螺母识别<目标检测>
人工智能·python·深度学习·yolo·目标检测·计算机视觉·螺丝螺母识别
程序员大雄学编程4 小时前
「用Python来学微积分」18. 微分
开发语言·python·数学·微积分
勘察加熊人4 小时前
python+ai智能根据doc教案文档生成ppt
人工智能·python·powerpoint
mortimer4 小时前
牺牲质量换效率:视频翻译项目中音画同步模块的深度实现与思考
python·ffmpeg
海琴烟Sunshine4 小时前
leetcode 268. 丢失的数字 python
python·算法·leetcode
2301_764441335 小时前
身份证校验工具
前端·python·1024程序员节
小宁爱Python6 小时前
从入门到实践:LangGraph 构建复杂 AI 工作流的完整指南
人工智能·python·microsoft·django
百锦再6 小时前
Python、Java与Go:AI大模型时代的语言抉择
java·前端·vue.js·人工智能·python·go·1024程序员节
程序员黄同学7 小时前
解释 Python 中的属性查找顺序(Attribute Lookup Order)
开发语言·python