数据科学与爬虫技术学习笔记
数据科学与爬虫技术学习笔记
一、数据科学基础库
1. NumPy:数值计算的基石
NumPy 是 Python 科学计算的核心库,专为数组和矩阵操作设计,能大幅简化循环操作,提供丰富的数学函数。
-
核心优势:高效处理同类型元素的多维数组,支持向量化运算。
-
安装与导入:
pip install numpy # 或 conda install numpy import numpy as np # 常规别名
-
核心对象:
- Ndarray:N 维数组,支持 0 下标索引,元素类型统一。
- 维度(axis):0 为行方向,1 为列方向,更高维度依次递增。
-
数组创建函数:
array()
:从列表或嵌套列表创建数组。empty()
/zeros()
/ones()
:创建指定形状的空数组、全 0 数组、全 1 数组。full(shape, fill_value)
:创建填充指定值的数组。arange(start, stop, step)
:生成等差数列。linspace()
/logspace()
:生成等间隔 / 等比数列。- 随机数组:
random.rand()
([0,1) 随机数)、random.randint()
(整数随机数)、random.randn()
(标准正态分布)。
-
数组属性:
ndim
:维度数量;shape
:数组形状(n 行 m 列);size
:元素总数;dtype
:元素类型。
-
常用操作:
- 切片与索引:类似 Python 列表,支持多维索引和省略号(
...
)。 - 广播机制:不同形状数组运算时自动扩展维度,简化计算。
- 切片与索引:类似 Python 列表,支持多维索引和省略号(
2. Matplotlib:数据可视化利器
Matplotlib 是 Python 绘图库,支持静态、动态及交互式图表,广泛用于数据可视化。
-
安装与导入:
pip install matplotlib import matplotlib.pyplot as plt
-
基础绘图:
plot()
:绘制折线图,支持自定义标记(marker)、线型(linestyle)和颜色(color)。scatter()
:散点图,可设置点大小(s)和颜色(c)。bar()
/barh()
:柱状图 / 水平柱状图。pie()
:饼图,支持扇区分离(explode)和百分比显示(autopct)。
-
图表美化:
- 标签与标题:
xlabel()
、ylabel()
、title()
。 - 网格线:
grid()
,可指定轴方向和样式。 - 多图绘制:
subplot(nrows, ncols, index)
分割画布。
- 标签与标题:
3. Pandas:数据分析工具集
Pandas 基于 NumPy 构建,提供高效的 DataFrame 数据结构,适合处理结构化数据。
-
安装与导入:
pip install pandas import pandas as pd
-
核心数据结构:
- Series:一维带标签数组,包含索引(index)和值(values)。
- DataFrame:二维表格结构,含行索引和列索引,支持异构数据。
-
数据操作:
- 数据读取:
read_csv()
/read_excel()
/read_sql()
读取文件或数据库。 - 数据查询:
loc[]
(标签索引)、iloc[]
(位置索引)。 - 缺失值处理:
dropna()
(删除缺失值)、fillna()
(填充缺失值)。 - 聚合函数:
mean()
/median()
/sum()
等统计计算。
- 数据读取:
4. Seaborn:统计可视化进阶
Seaborn 基于 Matplotlib,专注于统计图形,默认样式更美观,代码更简洁。
-
安装与导入
pip install seaborn import seaborn as sns sns.set_theme() # 设置主题
-
常用绘图函数:
scatterplot()
:增强版散点图,支持分组显示。lineplot()
:趋势线图,适合时间序列数据。barplot()
/boxplot()
:柱状图 / 箱线图,展示数据分布。heatmap()
:热图,常用于相关性矩阵可视化。
二、数据库技术:MySQL
1. 基础概念
- 数据库(DB):有组织的长期存储数据集合,本质是文件系统。
- 数据库管理系统(DBMS):管理数据库的软件(如 MySQL、Oracle)。
- 关系型数据库:以二维表(关系)存储数据,通过 SQL 操作。
2. MySQL 安装与配置
- 下载地址:MySQL 官网
- 环境配置:添加 MySQL 的 bin 目录到系统 PATH,验证安装:
mysql -uroot -p # 输入密码登录
3. SQL 核心语句
-
数据定义语言(DDL):
CREATE DATABASE
/TABLE
:创建数据库 / 表。ALTER TABLE
:修改表结构(添加 / 删除列、修改类型)。DROP DATABASE
/TABLE
:删除数据库 / 表。
-
数据操纵语言(DML):
INSERT INTO
:插入数据。UPDATE
/DELETE
:更新 / 删除数据(需配合WHERE
条件)。
-
查询语句(SELECT):
SELECT 列名 FROM 表名 WHERE 条件 GROUP BY 分组列 HAVING 分组条件 ORDER BY 排序列 [ASC/DESC]
三、爬虫技术与数据采集
1. Requests 库:网络请求工具
-
核心功能:发送 HTTP 请求(GET/POST),处理会话和 Cookies。
-
高级用法:
- 会话维持:
requests.Session()
自动处理 Cookies。 - 代理设置:通过
proxies
参数配置代理 IP。 - 文件上传:
files
参数传递文件对象。
- 会话维持:
-
示例:爬取网页
import requests url = "https://example.com" response = requests.get(url) response.encoding = response.apparent_encoding # 自动识别编码 print(response.text) # 输出网页内容
2. 解析技术
-
XPath:通过路径表达式定位 XML/HTML 元素,语法简洁。
from lxml import etree html = etree.HTML(response.text) titles = html.xpath("//h1/text()") # 提取所有h1标签文本
-
BeautifulSoup:解析 HTML/XML 的 Python 库,支持多种解析器。
from bs4 import BeautifulSoup soup = BeautifulSoup(response.text, "lxml") links = [a["href"] for a in soup.select("a")] # 提取所有链接
3. 数据存储
-
CSV 文件:纯文本表格格式,适合简单数据。
import csv with open("data.csv", "w", newline="", encoding="utf-8") as f:writer = csv.writer(f)writer.writerow(["标题", "链接"]) # 写入表头writer.writerows(data_list) # 写入多行数据
-
MySQL 数据库:通过
pymysql
库连接,适合结构化数据长期存储。import pymysql db = pymysql.connect(host="localhost", user="root", password="123456", db="spider") cursor = db.cursor() cursor.execute("INSERT INTO table VALUES (%s, %s)", (value1, value2)) db.commit() # 提交事务
四、Web 开发基础
1. HTML:网页骨架
- 核心标签:
- 结构标签:
<html>
/<head>
/<body>
。 - 内容标签:
<h1>-<h6>
(标题)、<p>
(段落)、<a>
(链接)、<img>
(图片)。 - 表单标签:
<form>
/<input>
/<select>
,用于用户输入。
- 结构标签:
2. CSS:样式美化
-
引入方式:
- 内联式:
style
属性直接写在标签内。 - 嵌入式:
<style>
标签写在<head>
中。 - 外联式:通过
<link>
引入外部.css
文件。
- 内联式:
-
选择器:标签选择器(
p
)、类选择器(.class
)、ID 选择器(#id
)。
3. JavaScript:交互逻辑
- 基础语法:
- 变量定义:
var
(弱类型,可动态改变类型)。 - 函数定义:
function 函数名(参数) { ... }
。 - 流程控制:
if-else
、for
、switch
等语句。
- 变量定义: