数据处理(第一部分):文本文件——数据的“电子笔记本” 📝
关键字
:文本文件读写、创建文件、追加内容、修改文件 内容详解: 文本文件是存数据的“基础容器”,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文件——表格数据的“搬运工”
数据处理(第二部分):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(更灵活的有序控制)。