数据处理(第一部分):文本文件——数据的“电子笔记本”📝
内容详解:
文本文件是存数据的“基础容器”,Python 操作它超简单:
- 📖 读取文本文件 :用
open(路径, "r")打开,read()读全部内容,readlines()按行读:# 读取整个文件 with open("test.txt", "r", encoding="utf-8") as f: content = f.read() print("文件内容:", content) # 按行读取 with open("test.txt", "r", encoding="utf-8") as f: lines = f.readlines() print("每行内容:", lines) # 列表,每个元素是一行 - ✍️ 创建文本文件 :用
"w"模式(覆盖旧文件):with open("new_file.txt", "w", encoding="utf-8") as f: f.write("这是新文件的第一行 \n") f.write("这是第二行") - ➕ 追加内容到文件 :用
"a"模式(在文件末尾加内容):with open("new_file.txt", "a", encoding="utf-8") as f: f.write("\n 这是追加的第三行") - ✏️ 修改文件内容:文本文件不能直接改某一行,要“读→改→写”:
# 步骤 1:读文件内容 with open("test.txt", "r", encoding="utf-8") as f: lines = f.readlines() # 步骤 2:修改第二行 lines[1] = "修改后的第二行 \n" # 步骤 3:写回文件 with open("test.txt", "w", encoding="utf-8") as f: f.writelines(lines)
类比:文本文件像“纸质笔记本”——读是“翻看笔记”,写是“新写一页”,追加是“在最后补写”,修改是“撕下来重写”~
集合:自动去重的“数据筛子”🔍
关键字:集合、去重、集合运算
内容详解:
集合是 {元素 1, 元素 2} 格式,特点是“无序、无重复”——像个“自动筛子”,放进去的重复数据会被过滤:
# 创建集合:自动去重
nums = {1,2,2,3,4,4,4}
print(nums) # {1,2,3,4}(重复的 2、4 没了)# 集合推导:快速生成集合(类似列表推导)even_nums = {x for x in range(10) if x % 2 == 0}
print(even_nums) # {0,2,4,6,8}
集合还支持 集合运算(交集、并集、差集)——比如找两个列表的共同元素:
list1 = [1,2,3,4]
list2 = [3,4,5,6]
set1 = set(list1)
set2 = set(list2)
# 交集:共同元素
print(set1 & set2) # {3,4}
# 并集:所有元素(去重)print(set1 | set2) # {1,2,3,4,5,6}
# 差集:set1 有但 set2 没有的元素
print(set1 - set2) # {1,2}
这在“去重”“数据对比”场景超实用!
数据处理(第二部分):CSV 文件——Excel 表格的“平替”📈
关键字:CSV 文件、csv 模块、表格数据处理
内容详解:
CSV 是“逗号分隔的文本文件”,像简化版 Excel 表格——Python 用 csv 模块处理它:
- 📥 读取 CSV 文件:用
csv.reader(按行读)或csv.DictReader(按列名读):import csv # 按列名读(CSV 第一行是列名)with open("data.csv", "r", encoding="utf-8") as f: reader = csv.DictReader(f) for row in reader: # 按列名取数据 print(f"姓名:{row['name']},年龄:{row['age']}") - 📤 写入 CSV 文件 :用
csv.writer或csv.DictWriter:data = [{"name": "张三", "age": 18}, {"name": "李四", "age": 19} ] with open("new_data.csv", "w", encoding="utf-8", newline="") as f: # 指定列名 writer = csv.DictWriter(f, fieldnames=["name", "age"]) writer.writeheader() # 写列名行 writer.writerows(data) # 写数据行 - 📊 分析 CSV 数据:结合列表推导 / 循环统计数据(比如算平均年龄):
ages = [] with open("data.csv", "r", encoding="utf-8") as f: reader = csv.DictReader(f) for row in reader: ages.append(int(row["age"])) avg_age = sum(ages) / len(ages) print("平均年龄:", avg_age)
注意:CSV 和 Excel 可以互相转换——Excel 能打开 CSV,Python 处理 CSV 比直接处理 Excel 更简单!
字典:带标签的“数据收纳盒”📛
关键字:字典、dict 函数、字典推导、嵌套字典
内容详解:
字典是 {键: 值} 格式,像“带标签的抽屉”——用“键”(标签)快速找“值”(内容):
- 🔨 用 dict 函数创建字典:
# 用键值对参数创建 person = dict(name="张三", age=18) # 用列表 + 元组创建 person2 = dict([("name", "李四"), ("age", 19)]) print(person) # {'name': '张三', 'age': 18} - 📊 字典作频率表:统计元素出现次数(比如统计单词出现次数):
words = ["apple", "banana", "apple", "orange", "apple"] freq = {} for word in words: if word in freq: freq[word] += 1 else: freq[word] = 1 print(freq) # {'apple':3, 'banana':1, 'orange':1} - 🗂️ 嵌套字典:值可以是字典,存更复杂的结构(比如用户信息 + 爱好):
user = { "name": "张三", "info": { "age": 18, "city": "北京" }, "hobbies": ["篮球", "游戏"] } # 取嵌套字典的值 print(user["info"]["city"]) # 北京 - ✨ 字典推导 :一行生成字典(比如把列表转成{元素: 长度} 的字典):
words = ["apple", "banana", "orange"] word_len = {word: len(word) for word in words} print(word_len) # {'apple':5, 'banana':6, 'orange':6}
字典是 Python 处理“结构化数据”的核心工具——比列表更灵活,比表格更轻便!
字典进阶:存储与复杂结构 🚀
关键字:二进制存储字典、元组作键、有序字典
内容详解:
字典还有这些实用技巧:
- 💾 在二进制文件中存储字典 :用
pickle模块把字典存成二进制文件(能存任意 Python 对象):import pickle user = {"name": "张三", "age": 18} # 存字典到二进制文件 with open("user.pkl", "wb") as f: pickle.dump(user, f) # 从二进制文件读字典 with open("user.pkl", "rb") as f: loaded_user = pickle.load(f) print(loaded_user) # {'name': '张三', 'age': 18} - 🔑 用元组作字典的键:元组是“不可变序列”,可以当字典的键(列表不行)——比如存坐标对应的数值:
# 键是 (x,y) 坐标,值是对应的温度 temp_map = {(0,0): 25, (0,1): 26, (1,0): 24 } print(temp_map[(0,0)]) # 25 - 🔢 有序字典:Python 3.7+ 的普通字典会保留插入顺序,也可以用
collections.OrderedDict(更灵活的有序控制)。
正文完