查看全课大纲(第 8 / 101 节)
- 1.数据分析基本概念
- 2.学习数据分析的一般路线
- 3.数据分析的流程
- 4.数据类型
- 5.环境部署(1)
- 6.环境部署(2)
- 7.课程介绍
- 8.TXT文件操作
- 9.JSON文件操作
- 10.CSV文件操作
- 11.Excel文件操作
- 12.数据库及SQL常用语法
- 13.数据库基本操作
- 14.数据库多表连接
- 15.实战:欧洲职业足球数据库分析
- 16.爬虫简介
- 17.URL管理模块
- 18.网页下载模块
- 19.网页解析模块(1)
- 20.网页解析模块(2)
- 21.Scrapy简介
- 22.Scrapy使用步骤(1)
- 23.Scrapy使用步骤(2)
- 24.Scrapy使用步骤(3)
- 25.Scrapy使用步骤(4)
- 26.实战:获取国内城市空气质量指数数据
- 27.NumPy和SciPy介绍
- 28.多维数组
- 29.多维数组操作
- 30.NumPy的常用方法
- 31.向量化介绍
- 32.向量化及通用函数
- 33.实战:2016美国大选分析
- 34.数据结构-Series
- 35.数据结构-DataFrame
- 36.数据结构-Index
- 37.Series的索引操作
- 38.DataFrame的索引操作
- 39.索引操作总结
- 40.运算与对齐
- 41.函数应用操作(1) -- map
- 42.函数应用操作 (2) -- apply applymap
- 43.文件读写操作
- 44.排序操作
- 45.数据清洗--处理缺失数据
- 46.数据清洗--处理重复数据
- 47.数据清洗--替换数据
- 48.常用统计方法(1) -- describe quantile
- 49.常用统计方法(2) -- sum mean median count
- 50.常用统计方法(3) -- max min idxmax idxmin
- 51.常用统计方法(4) -- mad var std cumsum
- 52.实战:全球食品数据分析
- 53.层级索引
- 54.分组与聚合介绍
- 55.分组操作(1) -- GroupBy对象及常用聚合操作
- 56.分组操作(2) -- 自定义分组及聚合操作
- 57.透视表介绍
- 58.透视表操作
- 59.数据规整(1) -- 数据合并concat
- 60.数据规整(2) -- 数据连接merge
- 61.数据重构(3) -- 数据重构stack unstack
- 62.实战:互联网电影资料库分析
- 63.探索性数据分析EDA介绍
- 64.EDA的目的
- 65.EDA常用工具
- 66.Matplotlib绘图基本介绍
- 67.Matplotlib画布
- 68.散点图和柱状图的绘制
- 69.直方图的绘制
- 70.矩阵绘图
- 71.子图的使用
- 72.Matplotlib颜色、标记、线型
- 73.Matplotlib坐标刻度、标签、图例、标题
- 74.Seaborn介绍
- 75.数据集分布可视化(1) -- 单变量分布、双变量分布
- 76.数据集分布可视化(2) -- 变量关系可视化
- 77.类别数据可视化 -- 类别散布图、类别内数据分布、类别内统计图
- 78.交互式数据可视化工具Bokeh介绍
- 79.Bokeh绘制散点图、柱状图、盒子图、弦图
- 80.Bokeh绘制常用图形元素
- 81.3D绘图 -- mplot3d
- 82.3D曲线可视化
- 83.3D散点图可视化
- 84.3D柱状图可视化
- 85.Pandas绘图
- 86.实战:Lending Club借贷数据探索性分析及可视化
- 87.机器学习介绍及应用场景
- 88.机器学习建模介绍 (1) -- 分类
- 89.机器学习建模介绍 (2) -- 回归
- 90.机器学习建模介绍 (3) -- 聚类
- 91.机器学习分类
- 92.机器学习工具scikit-learn
- 93.使用scikit-learn的流程
- 94.数据集准备及划分
- 95.模型选择
- 96.数据预处理及特征工程
- 97.过拟合与欠拟合
- 98.模型调参介绍
- 99.模型调参方法
- 100.模型测试及评价
- 101.实战:通过移动设备行为数据预测性别和年龄
TXT文件操作
约 15 分钟
小象实战讲义 · Python数据分析实战
在数据分析工作中,我们接触到的数据源多种多样,其中文本文件(TXT)是最基础、最常见的一种。无论是日志文件、配置文件,还是简单的数据记录,TXT文件都扮演着重要角色。本节我们将学习如何使用Python对TXT文件进行读取和写入操作,这是后续所有数据处理和分析的起点。
💡 核心导读
- 理解TXT文件结构:认识由字符串行组成、以换行符分隔的文本文件本质。
- 掌握文件操作流程:学习打开、读取/写入、关闭文件的标准化步骤。
- 熟悉读写方法:掌握
read()、readline()、readlines()以及write()、writelines()等核心方法。 - 使用with语句:学会使用更安全、更简洁的资源管理方式。
TXT文件基础
TXT文件(纯文本文件)是由字符串行组成的文件格式。每一行文本的末尾都有一个特殊的换行符(End Of Line,EOL),在大多数操作系统中用\n表示(反斜杠加字母n)。这个字符在普通文本编辑器中通常不可见,但它决定了文本的换行显示。
在Python中,文件被视为一种资源。使用文件的标准流程是:打开文件 → 进行读写操作 → 关闭文件。及时关闭文件是一个好习惯,可以释放系统资源,避免内存泄漏。
文件读写基础操作
Python使用内置的open()函数来打开文件,该函数返回一个文件对象,通过这个对象我们可以进行后续的读写操作。
# 演示文件操作的基本语法和流程
# 语法:open(filename, mode, encoding)
# filename: 文件路径
# mode: 打开模式,如 'r' 表示读取,'w' 表示写入
# encoding: 文件编码,处理中文常用 'utf-8'
# 注意:在实际数据分析中,我们通常从真实文件中读取数据
# 但为了演示的完整性和可复现性,这里我们先在内存中创建示例内容
# 然后演示完整的读写流程
# 首先,我们创建一个示例的文本内容(模拟从文件中读取的数据)
sample_content = """Python是一种高级编程语言。
它由Guido van Rossum于1991年创建。
Python的设计哲学强调代码的可读性。
它支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。
"""
print("示例文本内容:")
print(sample_content)
print("="*50)
# 标准文件操作流程示例(注释说明,不实际执行文件IO)
print("文件操作标准流程:")
print("1. 打开文件: file_obj = open('data.txt', 'r', encoding='utf-8')")
print("2. 读取内容: content = file_obj.read() 或使用其他读取方法")
print("3. 处理数据: 对content进行数据分析操作")
print("4. 关闭文件: file_obj.close()")
print("="*50)
# 演示不同读取方法的概念
print("不同读取方法:")
print("- read(): 读取整个文件内容,返回一个字符串")
print("- readline(): 读取一行内容,返回字符串")
print("- readlines(): 读取所有行,返回字符串列表")示例文本内容:
Python是一种高级编程语言。
它由Guido van Rossum于1991年创建。
Python的设计哲学强调代码的可读性。
它支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。
==================================================
文件操作标准流程:
1. 打开文件: file_obj = open('data.txt', 'r', encoding='utf-8')
2. 读取内容: content = file_obj.read() 或使用其他读取方法
3. 处理数据: 对content进行数据分析操作
4. 关闭文件: file_obj.close()
==================================================
不同读取方法:
- read(): 读取整个文件内容,返回一个字符串
- readline(): 读取一行内容,返回字符串
- readlines(): 读取所有行,返回字符串列表读取操作详解
现在让我们通过具体的代码示例来理解不同的读取方法。我们将使用字符串模拟文件内容,展示各种读取方法的效果。
# 模拟文件读取操作
# 在实际应用中,这些内容通常来自真实的TXT文件
# 模拟的文件内容(多行文本)
file_content = "第一行:Python数据分析入门\n第二行:学习文件操作是第一步\n第三行:掌握基础才能深入\n"
print("模拟的原始文件内容(显示换行符位置):")
# 显示原始字符串,可以看到\n字符
print(repr(file_content))
print("\n" + "="*50 + "\n")
# 模拟使用read()方法 - 读取全部内容
print("1. 使用read()方法读取全部内容:")
# 在实际文件中:content = file_obj.read()
content = file_content # 这里直接使用字符串模拟读取结果
print(content)
print("读取结果类型:", type(content).__name__)
print("\n" + "="*50 + "\n")
# 模拟使用readline()方法 - 逐行读取
print("2. 使用readline()方法逐行读取:")
# 为了模拟逐行读取,我们将字符串按换行符分割
lines = file_content.split('\n')
# 模拟第一次调用readline()
line1 = lines[0] + '\n' # 注意:readline()会保留换行符
print("第一次readline():", repr(line1))
# 模拟第二次调用readline()
line2 = lines[1] + '\n'
print("第二次readline():", repr(line2))
print("\n" + "="*50 + "\n")
# 模拟使用readlines()方法 - 读取所有行到列表
print("3. 使用readlines()方法读取所有行:")
# 在实际文件中:all_lines = file_obj.readlines()
# readlines()返回列表,每个元素是一行(包含换行符)
all_lines = [line + '\n' for line in file_content.split('\n') if line]
print("读取的行列表:", all_lines)
print("列表长度:", len(all_lines))
print("\n逐行输出内容(使用print,换行符生效):")
for i, line in enumerate(all_lines):
print(f"第{i+1}行: {line}", end="") # line本身已有换行符,所以end=""模拟的原始文件内容(显示换行符位置):
'第一行:Python数据分析入门\n第二行:学习文件操作是第一步\n第三行:掌握基础才能深入\n'
==================================================
1. 使用read()方法读取全部内容:
第一行:Python数据分析入门
第二行:学习文件操作是第一步
第三行:掌握基础才能深入
读取结果类型: str
==================================================
2. 使用readline()方法逐行读取:
第一次readline(): '第一行:Python数据分析入门\n'
第二次readline(): '第二行:学习文件操作是第一步\n'
==================================================
3. 使用readlines()方法读取所有行:
读取的行列表: ['第一行:Python数据分析入门\n', '第二行:学习文件操作是第一步\n', '第三行:掌握基础才能深入\n']
列表长度: 3
逐行输出内容(使用print,换行符生效):
第1行: 第一行:Python数据分析入门
第2行: 第二行:学习文件操作是第一步
第3行: 第三行:掌握基础才能深入写入操作与with语句
写入文件使用'w'模式打开文件,然后使用write()或writelines()方法。write()写入单个字符串,writelines()将字符串列表原样逐个写入——注意它不会自动添加换行符,需要每个元素独占一行时,必须在元素内容末尾自带\n(如本节示例所示)。
在实际数据分析工作中,我们经常需要将处理结果保存到文件中。为了确保资源被正确释放,推荐使用with语句,它会自动管理文件的打开和关闭,即使发生异常也能保证文件被正确关闭。
# 演示写入操作和with语句的使用
print("写入操作演示:")
print("="*50)
# 1. 使用write()写入单个字符串
# 注意:这里不实际创建文件,只演示概念和流程
content_to_write = "《Python数据分析实战》课程笔记\n"
print(f"准备写入的内容:{repr(content_to_write)}")
print("写入流程:打开文件(w模式) → write(内容) → 关闭文件")
print("\n" + "="*50 + "\n")
# 2. 使用writelines()写入字符串列表
print("使用writelines()写入多行内容:")
# 创建一个字符串列表,每个元素将作为一行写入
lines_to_write = [f"这是第{i}行数据分析记录\n" for i in range(5)]
print("准备写入的字符串列表:")
for i, line in enumerate(lines_to_write):
print(f" 行{i}: {repr(line)}", end="")
print("\n写入流程:每个列表元素成为文件的一行")
print("\n" + "="*50 + "\n")
# 3. with语句演示 - 推荐的文件操作方式
print("with语句文件操作(推荐):")
print("语法:with open(文件名, 模式, 编码) as 文件对象:")
print(" 在缩进块内进行文件操作")
print("优势:自动关闭文件,即使发生异常也能保证资源释放")
print("\n示例流程:")
print("with open('result.txt', 'w', encoding='utf-8') as f:")
print(" f.write('分析结果:\\n')")
print(" for i in range(3):")
print(" f.write(f' 结果{i}: 值{i*10}\\n')")
print("# 退出with块后,文件自动关闭")
# 模拟with块内的操作(不实际写文件)
print("\n模拟with块内操作结果:")
analysis_results = "分析结果:\n"
for i in range(3):
analysis_results += f" 结果{i}: 值{i*10}\n"
print(analysis_results)
print("(模拟)文件已自动关闭")写入操作演示:
==================================================
准备写入的内容:'《Python数据分析实战》课程笔记\n'
写入流程:打开文件(w模式) → write(内容) → 关闭文件
==================================================
使用writelines()写入多行内容:
准备写入的字符串列表:
行0: '这是第0行数据分析记录\n' 行1: '这是第1行数据分析记录\n' 行2: '这是第2行数据分析记录\n' 行3: '这是第3行数据分析记录\n' 行4: '这是第4行数据分析记录\n'
写入流程:每个列表元素成为文件的一行
==================================================
with语句文件操作(推荐):
语法:with open(文件名, 模式, 编码) as 文件对象:
在缩进块内进行文件操作
优势:自动关闭文件,即使发生异常也能保证资源释放
示例流程:
with open('result.txt', 'w', encoding='utf-8') as f:
f.write('分析结果:\n')
for i in range(3):
f.write(f' 结果{i}: 值{i*10}\n')
# 退出with块后,文件自动关闭
模拟with块内操作结果:
分析结果:
结果0: 值0
结果1: 值10
结果2: 值20
(模拟)文件已自动关闭📝 动手练一练
- 换行符的作用:在写入文件时,如果不手动添加
\n换行符,使用writelines()方法写入字符串列表会得到什么结果?请描述你预期的文件内容格式。
👉 点击查看参考答案
如果不添加\n换行符,使用writelines()写入的字符串列表会将所有字符串连接在一起写入文件,中间没有换行。例如,列表['第一行', '第二行', '第三行']写入后,文件内容将是第一行第二行第三行,所有内容都在同一行。换行符\n的作用就是告诉文本编辑器(和Python的print函数)在此处换行显示。
- 数据分析小任务:假设你读取了一个包含多行文本的TXT文件,内容为
Python:10\nData:20\nAnalysis:15\nPython:5\n(其中\n是换行符),请编写代码思路统计每个关键词出现的次数(提示:按行读取,分割冒号,累加数值)。
👉 点击查看参考答案
# 代码思路示例
# 1. 使用with语句打开文件(假设文件名为data.txt)
# 2. 初始化一个空字典来存储统计结果,如 word_count = {}
# 3. 逐行读取文件内容
# 4. 对每一行,使用split(':')分割关键词和数值
# 5. 将关键词作为字典键,将数值(转换为整数)累加到对应的键值中
# 6. 输出统计结果
# 模拟实现(不实际读取文件):
content = "Python:10\nData:20\nAnalysis:15\nPython:5\n"
word_count = {}
lines = content.strip().split('\n')
for line in lines:
if ':' in line:
word, value = line.split(':')
word = word.strip()
value = int(value.strip())
word_count[word] = word_count.get(word, 0) + value
print("关键词统计结果:")
for word, total in word_count.items():
print(f"{word}: {total}")
# 输出:
# Python: 15
# Data: 20
# Analysis: 15关键词统计结果:
Python: 15
Data: 20
Analysis: 15本章小结
本节我们学习了Python中TXT文件操作的基础知识,这是数据分析工作中数据采集的第一步。掌握文件操作不仅限于TXT文件,其核心思想(打开→操作→关闭)同样适用于其他格式的文件操作。
📋 行动清单
- 练习使用
read()、readline()和readlines()方法读取文本内容,理解它们的区别 - 尝试使用
with语句进行文件读写操作,养成资源管理的好习惯 - 创建一个简单的文本文件,编写代码统计文件中特定关键词的出现频率
—— 小象教研组
配套资料 · 直接下载
课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。
- 下载本节课件:TXT文件操作PDF · 285KB
- 下载全套课件打包(第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 数据库