当前位置: 首页 > ai >正文

数据处理四件套:NumPy/Pandas/Matplotlib/Seaborn速通指南

点击 “AladdinEdu,同学们用得起的【H卡】算力平台”,H卡级别算力,按量计费,灵活弹性,顶级配置,学生专属优惠。

数据清洗 × 特征可视化 × Kaggle数据集实操
读者收获:1周内具备数据预处理能力

数据科学家80%的时间都在处理数据,而掌握这四件套你将比90%的同行更高效。本文用可复现的Kaggle实战,带你7天打通数据处理任督二脉。

一、四件套定位与协同作战

1.1 工具定位分析

在这里插入图片描述

分工明细:
在这里插入图片描述

1.2 环境极速配置

# 创建虚拟环境  
conda create -n data_science python=3.9  
conda activate data_science  # 一键安装四件套  
pip install numpy pandas matplotlib seaborn  # 验证安装  
import numpy as np  
print(f"NumPy {np.__version__}")  

二、NumPy:数据处理的原子操作

2.1 核心数据结构:ndarray

创建数组的5种方式:

import numpy as np  # 从列表创建  
arr1 = np.array([1, 2, 3])  # 特殊数组  
zeros = np.zeros((3, 4))          # 3行4列零矩阵  
ones = np.ones((2, 3))            # 2行3列单位矩阵  
arange = np.arange(0, 10, 0.5)    # 0-10步长0.5  
random = np.random.randn(100)     # 100个正态分布数  

2.2 数组操作:向量化计算

传统循环 vs 向量化:

# 低效循环(避免!)  
result = []  
for i in range(1000000):  result.append(i * 2)  # 高效向量化  
arr = np.arange(1000000)  
result = arr * 2  # 速度提升200倍  

广播机制实战:

A = np.array([[1, 2], [3, 4]])  
B = np.array([10, 20])  # 自动广播计算  
C = A + B  # [[11,22], [13,24]]  

三、Pandas:数据清洗的瑞士军刀

3.1 核心数据结构解析

在这里插入图片描述

3.2 数据清洗六步法

以泰坦尼克数据集为例:

import pandas as pd  # 1. 数据加载  
titanic = pd.read_csv("titanic.csv")  # 2. 数据概览  
print(titanic.info())  
print(titanic.describe())  # 3. 处理缺失值  
titanic['Age'] = titanic['Age'].fillna(titanic['Age'].median())  
titanic['Embarked'] = titanic['Embarked'].fillna('S')  # 4. 删除无效列  
titanic.drop(columns=['Cabin', 'PassengerId'], inplace=True)  # 5. 特征工程  
titanic['FamilySize'] = titanic['SibSp'] + titanic['Parch']  
titanic['IsAlone'] = (titanic['FamilySize'] == 0).astype(int)  # 6. 类型转换  
titanic['Pclass'] = titanic['Pclass'].astype('category')  

3.3 高级数据处理技巧

数据分组聚合:

# 按舱位统计生存率  
survival_by_class = titanic.groupby('Pclass')['Survived'].mean() * 100  # 多维度分析  
class_sex_grouping = titanic.groupby(['Pclass','Sex']).agg(  avg_age=('Age', 'mean'),  survival_rate=('Survived', 'mean')  
)  

数据合并:

# 创建模拟票价表  
fare_df = pd.DataFrame({  'Pclass': [1, 2, 3],  'BaseFare': [100, 50, 25]  
})  # 合并到主表  
titanic = titanic.merge(fare_df, on='Pclass', how='left')  

四、Matplotlib:可视化基础构建

4.1 绘图三步法

import matplotlib.pyplot as plt  # 1. 创建画布  
fig, ax = plt.subplots(figsize=(10, 6))  # 2. 绘制图形  
ax.plot(survival_by_class.index, survival_by_class.values,  marker='o', linestyle='--', color='b', label='生存率')  # 3. 美化设置  
ax.set_title('泰坦尼克号舱位生存率', fontsize=14)  
ax.set_xlabel('舱位等级', fontsize=12)  
ax.set_ylabel('生存率(%)', fontsize=12)  
ax.grid(True, linestyle='--', alpha=0.7)  
ax.legend()  # 保存输出  
plt.savefig('survival_rate.png', dpi=300, bbox_inches='tight')  

4.2 常用图表类型速查

在这里插入图片描述

五、Seaborn:统计可视化进阶

5.1 关系分析三剑客

import seaborn as sns  # 1. 分布关系图  
sns.jointplot(data=titanic, x='Age', y='Fare', kind='scatter')  # 2. 多变量关系  
sns.pairplot(titanic[['Age','Fare','Pclass','Survived']], hue='Survived')  # 3. 热度图  
corr = titanic.corr()  
sns.heatmap(corr, annot=True, cmap='coolwarm')  

5.2 分类数据可视化

# 1. 箱线图  
sns.boxplot(x='Pclass', y='Age', hue='Survived', data=titanic)  # 2. 小提琴图  
sns.violinplot(x='Sex', y='Age', hue='Survived',  split=True, data=titanic)  # 3. 计数图  
sns.countplot(x='Pclass', hue='Survived', data=titanic)  

特征关联分析矩阵:

g = sns.PairGrid(titanic[['Age','Fare','Pclass','Survived']])  
g.map_diag(sns.histplot)  
g.map_offdiag(sns.scatterplot)  
g.add_legend()  

六、Kaggle实战:房价预测全流程

6.1 数据集加载与探索

# 加载Kaggle房价数据集  
house = pd.read_csv('house_prices.csv')  # 快速探索  
print(house.shape)  
print(house.info())  # 目标变量分布  
sns.histplot(house['SalePrice'], kde=True)  
plt.title('房价分布')  
plt.show()  

6.2 数据清洗与特征工程

# 1. 处理缺失值  
missing = house.isnull().sum().sort_values(ascending=False)  
missing = missing[missing > 0]  
house.drop(columns=missing.index[:5], inplace=True)  # 删除高缺失列  # 2. 数值型特征填充  
num_cols = house.select_dtypes(include=['int64','float64']).columns  
house[num_cols] = house[num_cols].fillna(house[num_cols].median())  # 3. 类别型特征转换  
cat_cols = house.select_dtypes(include='object').columns  
house[cat_cols] = house[cat_cols].fillna('Unknown')  
house = pd.get_dummies(house, columns=cat_cols)  # 4. 特征工程  
house['TotalSF'] = house['TotalBsmtSF'] + house['1stFlrSF'] + house['2ndFlrSF']  
house['Age'] = house['YrSold'] - house['YearBuilt']  

6.3 特征可视化分析

# 1. 房价与关键特征关系  
fig, axes = plt.subplots(1, 3, figsize=(18, 6))  
sns.scatterplot(x='TotalSF', y='SalePrice', data=house, ax=axes[0])  
sns.boxplot(x='OverallQual', y='SalePrice', data=house, ax=axes[1])  
sns.scatterplot(x='GrLivArea', y='SalePrice', data=house, ax=axes[2])  # 2. 特征相关性  
corr_matrix = house.corr()  
plt.figure(figsize=(14, 12))  
sns.heatmap(corr_matrix[['SalePrice']].sort_values(by='SalePrice', ascending=False),  annot=True, cmap='viridis')  

七、7天速通学习计划

每日学习路线

gantt  title 7天速通计划  dateFormat  YYYY-MM-DD  section Day1-2 NumPy基础  数组创建与操作     :active,  des1, 2023-08-01, 2d  section Day3-4 Pandas核心  数据清洗实战      :crit, des2, 2023-08-03, 2d  section Day5  Matplotlib  图表绘制技巧      :des3, 2023-08-05, 1d  
http://www.xdnf.cn/news/16738.html

相关文章:

  • ACM SIGCOMM 2024论文精选-01:5G【Prism5G】
  • Docker设置容器时间
  • 深度学习(鱼书)day08--误差反向传播(后三节)
  • PyTorch基础——张量计算
  • datax-cloud 智数通修订版(去除mapstruct)本地部署-记录
  • C语言-字符串(定义)、字符串函数(strlen、strcat、strcpy、strcmp、strlwr、strupr)
  • [CISCN 2022 初赛]online_crt
  • 【支持Ubuntu22】Ambari3.0.0+Bigtop3.2.0——Step7—Mariadb初始化
  • 【兆易创新】单片机GD32F103C8T6系列入门资料
  • xcode swift项目运行、连接真机运行报错,引入文件夹失败
  • 伞状Meta分析重构癌症幸存者照护指南:从矛盾证据到精准决策
  • 法国彩虹重磅发布EmVue:解锁能源监控新方式
  • 电商一键上货软件推荐:实在Agent、面兜兜、京老虎、妙手、青虎
  • 如何快速给PDF加书签--保姆级教程
  • Elasticsearch IK 中文分词器指南:从安装、配置到自定义词典
  • Java 22 新特性解析与代码示例
  • C++ 构造函数语义学
  • c++详解(宏与内联函数,nullptr)
  • MongoDB 详细用法与 Java 集成完整指南
  • Java应用服务器选型指南:WebLogic vs. Tomcat、WebSphere、JBoss/Wildfly
  • C++ 前缀和、双指针
  • Linux 硬盘分区管理
  • 代理IP并发控制:多线程爬虫的加速引擎
  • CSS的2D转换
  • 用 Ubuntu 22.04 (Jammy) 的 MongoDB 源
  • SpringBoot AI应用实战:从图像识别到预测分析
  • EasyExcel 格式设置大全
  • 3ds Max V-Ray渲染崩溃?8招告别卡顿冻结
  • [2025CVPR-图象生成方向]ODA-GAN:由弱监督学习辅助的正交解耦比对GAN 虚拟免疫组织化学染色
  • Blender 4.5 安装指南:快速配置中文版,适用于Win/mac/Linux系统