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

数据科学与爬虫技术学习笔记

数据科学与爬虫技术学习笔记

一、数据科学基础库

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 列表,支持多维索引和省略号(...)。
    • 广播机制:不同形状数组运算时自动扩展维度,简化计算。

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-elseforswitch等语句。
http://www.lryc.cn/news/619386.html

相关文章:

  • 玩转Docker | 使用Docker部署WordPress网站服务
  • 【车联网kafka】Kafka核心架构与实战经验(第四篇)
  • 猿大师中间件:Chrome网页内嵌PhotoShop微信桌面应用程序
  • Jetson NX Python环境搭建:使用APT轻松安装NumPy, scikit-learn, OpenCV
  • java学习 leetcode 二分查找 图论
  • 图论理论部分
  • 【C++ STL】list详解和模拟
  • Day52--图论--101. 孤岛的总面积(卡码网),102. 沉没孤岛(卡码网),103. 水流问题(卡码网),104. 建造最大岛屿(卡码网)
  • day50 图论基础 卡码网98. 所有可达路径
  • 15-docker的企业级私有仓库之docker-harbor
  • 若依plus SpringCloud [DUBBO] 多模块异常抛出 异常里面包了一层异常
  • docker load镜像后 名字和标签异常解决
  • 【Docker项目实战】使用Docker部署todo任务管理器
  • 飞算JavaAI云原生实践:基于Docker与K8s的自动化部署架构解析
  • python环境依赖冲突问题(1)
  • Docker 在 Linux 中的额外资源占用分析
  • Java设计模式全景解析:从演进历程到创新实践
  • 【网络运维】Playbook进阶: 管理变量
  • Windows11 运行IsaacSim GPU Vulkan崩溃
  • ADB 无线调试连接(Windows + WSL 环境)
  • 药房智能盘库系统:基于CV与时间序列预测的库存革命
  • vue3 el-select el-button 在同一行显示
  • Vue:实现一个无线滚动列表的解决方案
  • 【密码学实战】国密SM2算法介绍及加解密/签名代码实现示例
  • 2021 年全国硕士研究生招生考试真题笔记
  • 若依前后端分离版学习笔记(九)——登录和操作日志
  • Android中获取状态栏高度
  • 算法题打卡力扣第11题:盛最多水的容器(mid)
  • [AI React Web]`意图识别`引擎 | `上下文选择算法` | `url内容抓取` | 截图捕获
  • 【递归、搜索与回溯算法】穷举、暴搜、深搜、回溯、剪枝