作者:brian
GitHub 学习打卡仓库:https://github.com/codeInbpm/ML-Learning-Journey-2025
大家好,我是 brian,正在进行 2025 年从 0 到 1 完整 AI 全栈学习计划。
今天正式打卡第 1 天:Pandas 实战入门,使用经典的泰坦尼克号数据集,一步步带你从环境搭建到数据探索,全部代码已实时推送到 GitHub!
目录
项目背景
为什么从 Pandas 开始?
因为在真实的机器学习、深度学习、大模型项目中,80% 的时间花在数据处理上,Pandas 是 Python 数据分析的绝对王者!
今天我们用最经典的 Titanic 数据集(891 条乘客记录),完成一个完整的 EDA(探索性数据分析)起步流程。
数据集下载地址(已放入仓库):
https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv
一、环境搭建(3 分钟搞定)
# 创建独立环境(强烈推荐)
conda create -n ml2025 python=3.11 -y
conda activate ml2025
# 安装核心库
pip install pandas numpy matplotlib seaborn jupyter
# 启动 Jupyter
jupyter notebook
二、第一次见面:读取并查看数据
import pandas as pd
# 读取数据(关键:路径要对!)
df = pd.read_csv("data/titanic.csv")
print("数据形状:", df.shape) # (891, 12)
print(df.head())
输出:
数据形状: (891, 12)
PassengerId Survived Pclass ... Fare Cabin Embarked
0 1 0 3 ... 7.2500 NaN S
1 2 1 1 ... 71.2833 C85 C
三、核心字段速览
| 字段名 | 含义 | 示例值 |
|---|---|---|
| Survived | 是否生还 | 0/1 |
| Pclass | 舱位等级 | 1/2/3 |
| Sex | 性别 | male/female |
| Age | 年龄 | 22 |
| Fare | 票价 | 7.25 |
| Embarked | 登船港口 | S/C/Q |
四、快速探索 10 问(代码即注释)
import pandas as pd
df = pd.read_csv("../data/titanic.csv")
print("1. 查看数据的前10行")
print(df.head(10))
print("查看数据的最后 10 行")
print(df.tail(10))
print("查看数据的前 10 行和后 7 行")
print(pd.concat([df.head(10), df.tail(7)], axis=0))
print("筛选所有女性乘客")
female = df[df['Sex'] == 'female']
print(female)
print("筛选头等舱且年龄 > 30 的乘客")
rich_old = df[(df['Pclass'] == 1) & (df['Age'] > 30)]
print(rich_old[['Name', 'Age', 'Fare']].head())
print("生还率最高的性别是?")
surival_high_sex = df.groupby('Sex')['Survived'].mean()
print(surival_high_sex)
print("新增 FamilySize 列(兄弟姐妹 + 父母子女 + 自己)")
df['FamilySize'] = df['SibSp'] + df['Parch']
print(df[['Name', 'FamilySize', 'SibSp', 'Parch']].head())
print("用 apply 自定义函数:票价等级")
def fare_level(fare):
if fare <= 10 :return 'Cheap'
elif fare <= 30: return 'Medium'
elif fare <= 40: return 'Hard'
else:return 'Expensive'
df['Fare_Level'] = df['Fare'].apply(fare_level)
print(df['Fare_Level'].value_counts())
print("找出最贵的10张票是谁买的?")
print(df.nlargest(10, 'Fare')[['Name', 'Fare', 'Pclass', 'Cabin']])
五、可视化预告(明天 第 2 天重点)
import seaborn as sns
import matplotlib.pyplot as plt
# 性别生还对比图(明天详细讲解)
sns.barplot(data=df, x='Sex', y='Survived')
plt.title('Survival Rate by Gender')
plt.show()
学习总结(第 1 天打卡成果)
| 完成内容 | 状态 |
|---|---|
| 环境搭建 & 虚拟环境 | Done |
| 成功读取 titanic.csv | Done |
| 掌握 head/info/groupby/concat/nlargest | Done |
| 初步数据探索分析 | Done |
| GitHub 实时提交打卡 | Done |
GitHub 仓库实时更新
所有代码、数据、notebook 已全部推送到:
https://github.com/codeInbpm/ML-Learning-Journey-2025
项目结构(持续更新中):
01_pandas_basics/
├── day01_pandas_exercises.ipynb
├── data/titanic.csv
└── README.md(每日心得 + 截图)
下期预告:第 2 天
- 布尔索引高级玩法
- 缺失值填充策略
- 分组聚合 + 透视表神技
- 10 张图完整 EDA 报告
喜欢记得 点赞 + 收藏 + 一键三连!
我们一起打卡,一起从 0 到 1 成为 AI 全栈工程师!
打卡第 1 天完成!明天见!
作者:brian
2025年11月19日


被折叠的 条评论
为什么被折叠?



