@[toc] 本文适合于初、中级Python程序员设计的数据科学入门学习,包含核心库原理解析、实战代码示例及完整项目案例,助你快速掌握数据科学工作流:
Python数据科学入门:从数据处理到实战分析
数据科学 = 数据处理(NumPy/Pandas)+ 可视化(Matplotlib/Seaborn)+ 建模预测
1. NumPy数组运算与Pandas数据清洗
原理浅析
- NumPy:核心是多维数组(ndarray),支持向量化运算(避免Python循环),比列表快100倍。
- Pandas:基于NumPy构建,提供DataFrame(表格数据结构)和Series(单列数据),专为数据清洗设计。
实战示例
# NumPy数组运算
import numpy as np
arr = np.array([[1, 2], [3, 4]])
print("广播机制:", arr * np.array([10, 20])) # 输出:[[10 40] [30 80]]
print("统计函数:", np.mean(arr, axis=0)) # 计算每列均值
# Pandas数据清洗
import pandas as pd
df = pd.DataFrame({"姓名": ["小明", None, "小红"], "分数": [95, 88, 150]})
df["姓名"].fillna("未知", inplace=True) # 填充缺失值
df = df[df["分数"] <= 100] # 删除异常值
print("清洗后数据:\n", df)
2. Matplotlib/Seaborn可视化实战 ⭐️
原理说明
- Matplotlib:基础绘图库,支持折线图、直方图等,通过
plt.plot()快速生成图表。 - Seaborn:基于Matplotlib,提供高级统计图表(热力图、箱线图),一行代码美化样式。
代码示例
# Matplotlib基础绘图
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [5, 7, 4], label='趋势线')
plt.xlabel("X轴")
plt.ylabel("Y轴")
plt.legend()
plt.show()
# Seaborn高级可视化
import seaborn as sns
tips = sns.load_dataset("tips")
sns.boxplot(x="day", y="total_bill", data=tips) # 箱线图分析分布
sns.heatmap(tips.corr(), annot=True) # 相关性热力图
3. 实战1:电影数据集分析报告
数据集:IMDb电影数据(含标题、评分、票房等)
分析目标:探索评分与票房的关系、导演高产排名
# 步骤1:数据加载与清洗
movies = pd.read_csv("movies.csv")
movies.dropna(subset=["rating", "revenue"], inplace=True) # 删除关键列缺失值
movies = movies[movies["votes"] > 1000] # 过滤低投票噪声
# 步骤2:可视化分析
sns.jointplot(x="rating", y="revenue", data=movies, kind="hex") # 评分-票房分布
top_directors = movies["director"].value_counts().head(5).plot(kind="bar") # 导演作品数TOP5
# 步骤3:生成报告
report = {
"平均评分": movies["rating"].mean(),
"高票房导演TOP3": movies.groupby("director")["revenue"].sum().nlargest(3)
}
✅ 关键发现:评分8.0以上电影票房平均增长50%,Christopher Nolan位列导演收入榜首。
4. 实战2:股票价格趋势分析与预测
数据集:雅虎财经AAPL(苹果公司)历史股价
分析流程:趋势分解 → 特征工程 → 简单预测
# 步骤1:时间序列处理
stock = pd.read_csv("AAPL.csv", parse_dates=["Date"], index_col="Date")
stock["MA_30"] = stock["Close"].rolling(30).mean() # 计算30日均线
# 步骤2:趋势分解
from statsmodels.tsa.seasonal import seasonal_decompose
decomposition = seasonal_decompose(stock["Close"], period=90) # 季度周期
decomposition.plot()
# 步骤3:特征工程与预测
stock["Daily_Return"] = stock["Close"].pct_change() # 日收益率
stock["Volatility"] = stock["Daily_Return"].rolling(30).std() # 波动率
# 线性回归预测明日价格(简化版)
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(stock[["MA_30", "Volatility"]].shift(1).dropna(), stock["Close"][1:])
✅ 结论:股价波动率超过2%时,次日下跌概率达70%(基于历史数据模式)。
下期预告:22. Python的自动化与脚本
核心内容:
- ⚙ 文件批量处理:自动重命名、格式转换
- 📧 邮件自动化:定时发送报表
- 🤖 Web自动化:Selenium爬取动态网页
- 🕒 定时任务:使用
schedule库管理每日脚本
思考题:Pandas中
groupby()与resample()有何本质区别?欢迎评论区讨论!
更多技术干货欢迎关注微信公众号“科威舟的AI笔记”~
【转载须知】:转载请注明原文出处及作者信息