← 返回《Python 数据分析实战》
📑 查看全课大纲(第 7 / 101 节)
  1. 1.数据分析基本概念
  2. 2.学习数据分析的一般路线
  3. 3.数据分析的流程
  4. 4.数据类型
  5. 5.环境部署(1)
  6. 6.环境部署(2)
  7. 7.课程介绍
  8. 8.TXT文件操作
  9. 9.JSON文件操作
  10. 10.CSV文件操作
  11. 11.Excel文件操作
  12. 12.数据库及SQL常用语法
  13. 13.数据库基本操作
  14. 14.数据库多表连接
  15. 15.实战:欧洲职业足球数据库分析
  16. 16.爬虫简介
  17. 17.URL管理模块
  18. 18.网页下载模块
  19. 19.网页解析模块(1)
  20. 20.网页解析模块(2)
  21. 21.Scrapy简介
  22. 22.Scrapy使用步骤(1)
  23. 23.Scrapy使用步骤(2)
  24. 24.Scrapy使用步骤(3)
  25. 25.Scrapy使用步骤(4)
  26. 26.实战:获取国内城市空气质量指数数据
  27. 27.NumPy和SciPy介绍
  28. 28.多维数组
  29. 29.多维数组操作
  30. 30.NumPy的常用方法
  31. 31.向量化介绍
  32. 32.向量化及通用函数
  33. 33.实战:2016美国大选分析
  34. 34.数据结构-Series
  35. 35.数据结构-DataFrame
  36. 36.数据结构-Index
  37. 37.Series的索引操作
  38. 38.DataFrame的索引操作
  39. 39.索引操作总结
  40. 40.运算与对齐
  41. 41.函数应用操作(1) -- map
  42. 42.函数应用操作 (2) -- apply applymap
  43. 43.文件读写操作
  44. 44.排序操作
  45. 45.数据清洗--处理缺失数据
  46. 46.数据清洗--处理重复数据
  47. 47.数据清洗--替换数据
  48. 48.常用统计方法(1) -- describe quantile
  49. 49.常用统计方法(2) -- sum mean median count
  50. 50.常用统计方法(3) -- max min idxmax idxmin
  51. 51.常用统计方法(4) -- mad var std cumsum
  52. 52.实战:全球食品数据分析
  53. 53.层级索引
  54. 54.分组与聚合介绍
  55. 55.分组操作(1) -- GroupBy对象及常用聚合操作
  56. 56.分组操作(2) -- 自定义分组及聚合操作
  57. 57.透视表介绍
  58. 58.透视表操作
  59. 59.数据规整(1) -- 数据合并concat
  60. 60.数据规整(2) -- 数据连接merge
  61. 61.数据重构(3) -- 数据重构stack unstack
  62. 62.实战:互联网电影资料库分析
  63. 63.探索性数据分析EDA介绍
  64. 64.EDA的目的
  65. 65.EDA常用工具
  66. 66.Matplotlib绘图基本介绍
  67. 67.Matplotlib画布
  68. 68.散点图和柱状图的绘制
  69. 69.直方图的绘制
  70. 70.矩阵绘图
  71. 71.子图的使用
  72. 72.Matplotlib颜色、标记、线型
  73. 73.Matplotlib坐标刻度、标签、图例、标题
  74. 74.Seaborn介绍
  75. 75.数据集分布可视化(1) -- 单变量分布、双变量分布
  76. 76.数据集分布可视化(2) -- 变量关系可视化
  77. 77.类别数据可视化 -- 类别散布图、类别内数据分布、类别内统计图
  78. 78.交互式数据可视化工具Bokeh介绍
  79. 79.Bokeh绘制散点图、柱状图、盒子图、弦图
  80. 80.Bokeh绘制常用图形元素
  81. 81.D绘图 -- mplot3d
  82. 82.D曲线可视化
  83. 83.D散点图可视化
  84. 84.D柱状图可视化
  85. 85.Pandas绘图
  86. 86.实战:Lending Club借贷数据探索性分析及可视化
  87. 87.机器学习介绍及应用场景
  88. 88.机器学习建模介绍 (1) -- 分类
  89. 89.机器学习建模介绍 (2) -- 回归
  90. 90.机器学习建模介绍 (3) -- 聚类
  91. 91.机器学习分类
  92. 92.机器学习工具scikit-learn
  93. 93.使用scikit-learn的流程
  94. 94.数据集准备及划分
  95. 95.模型选择
  96. 96.数据预处理及特征工程
  97. 97.过拟合与欠拟合
  98. 98.模型调参介绍
  99. 99.模型调参方法
  100. 100.模型测试及评价
  101. 101.实战:通过移动设备行为数据预测性别和年龄

课程介绍

约 3 分钟

📺 正在播放小象官方高清录播(支持倍速与清晰度调节)

本地数据采集与操作:格式全景与实战路线

小象实战讲义 · Python数据分析实战

在实际的数据分析业务场景中,除了通过 API 接口和网络爬虫获取动态数据外,绝大部分历史业务数据、用户行为日志、实验记录以及跨部门协作报表,都是以本地文件的形式提供给数据分析师的。掌握不同本地数据格式的底层特征与读写方法,是开展探索性数据分析的第一道基本功。本节作为第 2 章《本地数据的采集与操作》的导引课,将带你全面梳理 TXT、JSON、CSV、Excel 以及 SQLite 数据库等常见本地存储格式的技术特点与适用场景。

💡 核心导读

  • 本地数据全景认知:掌握纯文本、半结构化数据、二维表格与嵌入式数据库的分类边界。
  • 格式选型与性能对比:理解不同存储格式在容量、读写性能与跨语言通用性上的权衡。
  • 章节能力进阶路线:明确从基础文件 I/O、结构化表格读写到 SQL 复杂查询与多表连接的学习阶梯。
  • 本地数据嗅探实战:通过 Python 代码实现通用文件类型识别与基础元数据嗅探。

1. 本地常见数据格式全景透视

在工业界数据流转中,本地数据形态通常可以划分为以下四大层级:

┌─────────────────────────────────────────────────────────────┐
│                    本地数据存储格式全景地图                  │
├─────────────────┬─────────────────┬─────────────────────────┤
│  1. 纯文本数据  │  2. 半结构化数据 │      3. 二维表格数据     │
│   (TXT / 日志)  │  (JSON / YAML)  │   (CSV / TSV / Excel)   │
│  逐行处理/大文件 │  键值嵌套/树状   │   行列对应/数据分析主力  │
├─────────────────┴─────────────────┴─────────────────────────┤
│            4. 嵌入式关系型数据库 (SQLite / .db 文件)          │
│                ACID事务 / SQL复杂查询 / 多表关联            │
└─────────────────────────────────────────────────────────────┘
  1. 纯文本文件(TXT / Logs)
    • 最原始、最轻量的数据形态,行与行之间通过换行符 \n 分隔;
    • 常见于服务器访问日志、用户搜索词流水或原始语料库,适合流式读写与文本挖掘。
  2. 半结构化文件(JSON)
    • 由键值对(Object)与有序列表(Array)构成的树状层级数据;
    • 是现代 Web API 数据传输与配置持久化的通用标准,适合表示层级深、字段非固定的嵌套实体。
  3. 二维表格文件(CSV & Excel)
    • CSV(Comma-Separated Values):纯文本逗号分隔符文件,体积轻巧,是 Pandas 和各类数据科学框架读写最高频的格式;
    • Excel(.xlsx / .xls):微软电子表格标准,支持多工作表(Sheet)、富文本排版与公式,是业务团队对接的主流载体。
  4. 嵌入式关系型数据库(SQLite)
    • 将完整的高性能关系型数据库引擎打包在一个独立的 .db 文件中,零配置、免部署;
    • 适合管理数万至数千万行、涉及多表关联(Join)与复杂索引过滤的结构化数据。

2. 本地数据格式核心特性对比

为了在面对不同业务数据源时能够迅速选择最优处理方案,我们对 5 种核心格式进行横向维度对比:

格式名称存储本质读写主要工具核心优势局限与适用场景
TXT纯文本流open()readlines()极简、通用、内存占用可控缺乏行列元信息,适合原始日志与文本提取
JSON键值嵌套文本json.load()pd.read_json()支持复杂嵌套树状对象文件体积偏大,适合配置与 API 响应缓存
CSV逗号分隔表格csv.reader()pd.read_csv()极高读写性能、跨平台零阻碍不支持样式与多 Sheet,适合大数据量分析
Excel二进制/XML压缩包pd.read_excel()openpyxl业务方友好、支持多工作表读写开销较大,适合业务报表交互
SQLite单文件关系型数据库sqlite3SQLAlchemy支持标准 SQL、多表 Join、事务适合高频复杂关联查询与结构化本地存储

3. 本章学习阶梯与实战目标

在第 2 章中,我们将遵循“由简单文件 ➔ 表格规整 ➔ 数据库查询 ➔ 综合大实战”的阶梯展开:

  • 第 2 节:深入 TXT 文本的上下文管理器与逐行流式处理;
  • 第 3 节:掌握 JSON 数据的序列化、反序列化与嵌套解析;
  • 第 4~5 节:精通 CSV 与 Excel 的 Pandas 高效读写与参数调优;
  • 第 6~8 节:全面攻克 SQLite 数据库的 CRUD 操作、SQL 常用语法与多表连接(Inner/Left Join);
  • 第 9 节:以《欧洲职业足球数据库分析》为综合实战,串联全章技能闭环。

4. Python 代码实战:本地文件类型嗅探与基础元数据解析

下面我们编写一段 Python 脚本,演示如何编写一个通用的本地数据嗅探工具,自动检测文件扩展名、计算文件体积,并对文本类数据进行前 3 行快速预览。

# 示例:本地文件嗅探与元数据提取器

import os

def inspect_local_file(file_path):
    """
    嗅探本地文件的元数据信息
    """
    if not os.path.exists(file_path):
        print(f"❌ 文件不存在: {file_path}")
        return None
    
    file_size_bytes = os.path.getsize(file_path)
    file_ext = os.path.splitext(file_path)[1].lower()
    
    # 将字节转换为易读单位
    if file_size_bytes < 1024:
        size_str = f"{file_size_bytes} Bytes"
    elif file_size_bytes < 1024 * 1024:
        size_str = f"{file_size_bytes / 1024:.2f} KB"
    else:
        size_str = f"{file_size_bytes / (1024 * 1024):.2f} MB"
        
    meta = {
        "file_name": os.path.basename(file_path),
        "extension": file_ext,
        "size": size_str,
        "format_type": "未知"
    }
    
    # 格式分类识别
    format_mapping = {
        ".txt": "纯文本文件 (Plain Text)",
        ".log": "系统日志文件 (Log File)",
        ".json": "半结构化数据 (JSON Object)",
        ".csv": "分隔符表格数据 (CSV Table)",
        ".xlsx": "电子表格工作簿 (Excel Workbook)",
        ".db": "SQLite嵌入式数据库 (Database File)"
    }
    meta["format_type"] = format_mapping.get(file_ext, "其它格式")
    return meta

# 模拟本地测试文件并输出诊断
sample_files = ["user_logs.txt", "config.json", "sales_2026.csv", "analytics.db"]
print("=== 本地数据格式嗅探演示 ===")
for fname in sample_files:
    ext = os.path.splitext(fname)[1]
    print(f"文件: {fname:<16} | 扩展名: {ext:<6} | 推断类型: {inspect_local_file(fname) or '待解析'}")

接下来,我们编写一段通用文本预览函数,模拟在不将大文件全量加载进内存的前提下安全读取前几行:

# 2. 安全预览文本文件前 N 行(防止大文件撑爆内存)
def preview_text_head(content_list, head_n=3):
    print(f"\n[数据预览 - 前 {head_n} 行]")
    for idx, line in enumerate(content_list[:head_n], start=1):
        print(f"Line {idx}: {line.strip()}")

# 模拟读取到的 CSV 内容流
mock_csv_lines = [
    "user_id,city,device,purchase_amount",
    "U1001,北京,Apple,299.0",
    "U1002,上海,华为,450.0",
    "U1003,广州,小米,120.0"
]
preview_text_head(mock_csv_lines, head_n=3)

📝 动手练一练

  1. 情景问答题:假设你在一家大型电商企业担任数据分析师,上游数据工程团队每天会产出 5GB 的用户搜索埋点日志。如果让你选择本地存储格式进行初步归档与单机探索,你会选择 Excel 还是 CSV 还是 SQLite?为什么?

    👉 点击查看参考答案

    参考答案: 应该优先选择 CSV(配合压缩)或 SQLite 数据库,绝对不能选择 Excel。 原因在于: ① 现代 Excel 单个工作表的最大行数限制为 1,048,576 行(约 100 万行),面对 5GB 数据会直接报错崩溃; ② CSV 是纯文本流,支持 Pandas 分块读取(chunksize); ③ SQLite 数据库支持针对 user_id 或搜索时间建立索引,能够以极低内存完成毫秒级的条件过滤与聚合查询。

  2. 编程练习:请编写一段 Python 代码,创建一个包含 3 种本地文件格式名称与其推荐 Python 库的字典,遍历字典并格式化打印出推荐技术方案。

    👉 点击查看参考答案

    参考答案

    format_tools = {
        "JSON": "内置 json 模块 / pandas.read_json",
        "CSV": "pandas.read_csv / 内置 csv 模块",
        "SQLite": "内置 sqlite3 模块 / SQLAlchemy"
    }
    
    print("=== 本地数据格式推荐处理工具 ===")
    for fmt, tool in format_tools.items():
        print(f"• 格式【{fmt:<8}】: 推荐使用 -> {tool}")

本章小结

在本节中,我们全面建立了本地数据采集的技术地图:

  • 常见的本地数据格式包括纯文本(TXT)、半结构化(JSON)、二维表格(CSV/Excel)与嵌入式数据库(SQLite);
  • 根据数据规模与业务场景(报表交互 vs 快速计算 vs 关系查询)选择合适的存储格式至关重要;
  • 本章后续小节将带你逐一攻克每种格式的 Python 核心代码实现。

📋 行动清单

  • 检查电脑中常用的业务数据文件,识别其真实的存储扩展名与数据结构。
  • 准备好后续实战练习所需的文件夹目录,开启 TXT 与 JSON 文件操作实战。

—— 小象教研组

配套学习资源与课件
  • 本节课件:课程介绍(PDF · 279KB)
    下载
  • 第2章配套代码包:文件操作与数据库示例(ZIP · 30.9MB)
    下载
  • 全套课件打包(第1-5章)(ZIP · 12.8MB)
    下载
  • 全套课件打包(第6-8章)(ZIP · 15MB)
    下载
  • 实战数据集:AppleStore 应用商城分析(ZIP · 329KB)
    下载
  • 实战数据集:女性服装电商分析(ZIP · 2.8MB)
    下载
  • Python 数据分析环境搭建指南(PDF · 2MB)
    下载
  • Scrapy 安装教程(PDF · 12.7MB)
    下载
  • 附加实战项目:AppleStore 应用商城数据分析(ZIP · 0.3MB · ipynb + CSV 数据)
    下载
  • 附加实战项目:银行电话营销数据分析(ZIP · 0.4MB · ipynb + CSV 数据)
    下载
  • 附加实战项目:女性服装电商评论数据分析(ZIP · 2.7MB · ipynb + CSV 数据)
    下载
  • 附加实战项目:美国化学学会杂志数据分析(ZIP · 34.2MB · ipynb + SQLite 数据库)
    下载
🎁 免费学习资源

领取《小象 11GB VIP 课件资料包与大厂真题手册》

包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。

  • 完整 Python / 数据分析 Jupyter 实战源码
  • 大厂真实业务数据集与练习题
  • 微信扫码添加课程顾问,免费获取网盘下载链接
微信二维码:扫码添加课程顾问微信扫码添加顾问