数据加载与保存:CSV, Excel, JSON, SQL 等常见格式

好的,各位观众老爷们,各位编程界的弄潮儿们,欢迎来到老司机我——人称“代码界的段子手”的课堂!今天,咱们要聊聊数据这玩意儿,以及如何像驯服野马一样,把它们加载进来,再像珍藏古董一样,小心翼翼地保存好。

主题是什么?当然是:数据加载与保存:CSV, Excel, JSON, SQL 等常见格式

别害怕,我知道一听到这些名词,有些人就开始打哈欠了。但相信我,这绝对比你看《霸道总裁爱上我》更有意思,因为这是你驰骋数据海洋,成为数据大航海家必备的技能!😎

第一幕:数据,无处不在的“小妖精”

数据,这玩意儿,就像空气一样,无处不在。你每天刷的抖音,看的淘宝,用的微信,背后都离不开数据的支撑。它们记录着你的喜好,你的行为,甚至你的秘密。

数据就像一个个“小妖精”,它们形态各异,性格古怪。有的像规规矩矩的表格,有的像乱麻一样的文本,有的像深奥的密码,等着我们去破解。

所以,掌握数据的加载和保存,就相当于拥有了“御妖术”,能把这些“小妖精”玩弄于股掌之间。

第二幕:数据格式大观园,各领风骚数百年

既然“小妖精”们性格各异,那它们的“住所”自然也五花八门。我们常见的“住所”有以下几种:

  • CSV (Comma Separated Values): 简单粗暴的“平民窟”,用逗号分隔数据,就像一群人挤在同一间屋子里,简单直接。
  • Excel: 豪华版的“公寓”,每个数据都住在独立的单元格里,还能设置各种装修风格(格式)。
  • JSON (JavaScript Object Notation): 精致的“别墅”,用键值对存储数据,结构清晰,层次分明,就像精心设计的花园。
  • SQL (Structured Query Language): 坚固的“城堡”,数据存储在关系型数据库中,安全可靠,还能进行复杂的查询和分析。

接下来,我们就来逐一攻破这些“住所”,看看如何把“小妖精”们从里面请出来,再安全地送回去。

第三幕:CSV,简单粗暴的“平民窟”攻略

CSV文件,就像一份简单的电话簿,用逗号分隔姓名、电话号码、地址等信息。它的优点是简单、通用,几乎所有的编程语言都支持。

加载 CSV:

想象一下,你要从电话簿里找到某个人的电话号码。你需要做的就是打开电话簿,一行一行地查找,直到找到目标。

在 Python 中,我们可以使用 csv 模块来完成这个任务:

import csv

with open('data.csv', 'r', encoding='utf-8') as file:  # 记得指定编码,防止乱码
    reader = csv.reader(file)
    header = next(reader)  # 读取表头
    data = list(reader)

print("表头:", header)
for row in data:
    print(row)

这段代码就像一个勤劳的“电话簿管理员”,它打开 data.csv 文件,逐行读取数据,然后把数据打印出来。

  • open('data.csv', 'r', encoding='utf-8'): 打开 CSV 文件,'r' 表示读取模式,encoding='utf-8' 指定编码方式,防止中文乱码。
  • csv.reader(file): 创建一个 CSV 读取器,用于逐行读取数据。
  • next(reader): 读取 CSV 文件的第一行,通常是表头。
  • list(reader): 将剩余的行转换为列表,方便后续处理。

保存 CSV:

要把数据保存到 CSV 文件,就像把新的电话号码添加到电话簿里。

import csv

header = ['姓名', '年龄', '性别']
data = [['张三', '25', '男'], ['李四', '30', '女'], ['王五', '28', '男']]

with open('new_data.csv', 'w', newline='', encoding='utf-8') as file: # 'w'写入模式,newline=''解决空行问题
    writer = csv.writer(file)
    writer.writerow(header)  # 写入表头
    writer.writerows(data)  # 写入数据

print("数据已保存到 new_data.csv")

这段代码就像一个细心的“电话簿编辑”,它把新的电话号码信息写入 new_data.csv 文件。

  • open('new_data.csv', 'w', newline='', encoding='utf-8'): 打开 CSV 文件,'w' 表示写入模式,newline='' 解决写入 CSV 文件时出现空行的问题。
  • csv.writer(file): 创建一个 CSV 写入器,用于写入数据。
  • writer.writerow(header): 写入表头。
  • writer.writerows(data): 写入多行数据。

CSV 总结:

CSV 就像一个简单朴实的“老朋友”,虽然没有华丽的外表,但胜在简单易用,是处理小型数据的首选。

第四幕:Excel,豪华“公寓”的优雅入住

Excel 文件就像一个豪华的“公寓”,每个数据都住在独立的单元格里,还能设置各种装修风格(格式)。它比 CSV 更强大,但同时也更复杂。

加载 Excel:

想象一下,你要入住豪华公寓,首先要找到你的房间号,然后才能进入。

在 Python 中,我们可以使用 pandas 库来完成这个任务:

import pandas as pd

df = pd.read_excel('data.xlsx', sheet_name='Sheet1') #指定sheet名称

print(df)

这段代码就像一个专业的“房产中介”,它打开 data.xlsx 文件,读取名为 Sheet1 的工作表,然后把数据打印出来。

  • pd.read_excel('data.xlsx', sheet_name='Sheet1'): 读取 Excel 文件,sheet_name 指定工作表的名称。

保存 Excel:

要把数据保存到 Excel 文件,就像把你的家具搬进豪华公寓,然后按照你的喜好摆放。

import pandas as pd

data = {'姓名': ['张三', '李四', '王五'],
        '年龄': [25, 30, 28],
        '性别': ['男', '女', '男']}

df = pd.DataFrame(data)

df.to_excel('new_data.xlsx', sheet_name='Sheet1', index=False) # index=False 不保存索引

print("数据已保存到 new_data.xlsx")

这段代码就像一个专业的“装修设计师”,它把数据转换为 DataFrame 对象,然后把 DataFrame 对象写入 new_data.xlsx 文件。

  • pd.DataFrame(data): 将字典转换为 DataFrame 对象。
  • df.to_excel('new_data.xlsx', sheet_name='Sheet1', index=False): 将 DataFrame 对象写入 Excel 文件,index=False 表示不保存索引。

Excel 总结:

Excel 就像一个功能强大的“百宝箱”,能处理各种复杂的数据,但同时也需要一定的学习成本。

第五幕:JSON,精致“别墅”的精细打理

JSON 文件就像一个精致的“别墅”,用键值对存储数据,结构清晰,层次分明,就像精心设计的花园。它常用于 Web 应用中,用于传输数据。

加载 JSON:

想象一下,你要入住精致别墅,首先要打开大门,然后才能欣赏里面的美景。

在 Python 中,我们可以使用 json 模块来完成这个任务:

import json

with open('data.json', 'r', encoding='utf-8') as file: #记得指定编码!
    data = json.load(file)

print(json.dumps(data, indent=4, ensure_ascii=False)) # 格式化输出,更美观

这段代码就像一个专业的“管家”,它打开 data.json 文件,读取 JSON 数据,然后把数据打印出来。

  • json.load(file): 从文件中读取 JSON 数据。
  • json.dumps(data, indent=4, ensure_ascii=False): 将 Python 对象转换为 JSON 字符串,indent=4 表示缩进 4 个空格,ensure_ascii=False 允许输出中文。

保存 JSON:

要把数据保存到 JSON 文件,就像把你的艺术品摆放在精致别墅里,让它更加光彩夺目。

import json

data = {'姓名': '张三', '年龄': 25, '性别': '男', '爱好': ['篮球', '游泳']}

with open('new_data.json', 'w', encoding='utf-8') as file:
    json.dump(data, file, indent=4, ensure_ascii=False) # 格式化输出,更美观

print("数据已保存到 new_data.json")

这段代码就像一个专业的“艺术品收藏家”,它把 Python 对象转换为 JSON 数据,然后把 JSON 数据写入 new_data.json 文件。

  • json.dump(data, file, indent=4, ensure_ascii=False): 将 Python 对象写入 JSON 文件。

JSON 总结:

JSON 就像一个优雅的“艺术家”,擅长处理结构化的数据,是 Web 应用开发中不可或缺的一部分。

第六幕:SQL,坚固“城堡”的安全守护

SQL 数据库就像一个坚固的“城堡”,数据存储在关系型数据库中,安全可靠,还能进行复杂的查询和分析。它适用于存储大量的数据,并进行复杂的查询和分析。

加载 SQL:

想象一下,你要进入坚固城堡,首先要通过守卫的盘查,然后才能进入。

在 Python 中,我们可以使用 sqlite3 模块(或其他数据库驱动)来完成这个任务:

import sqlite3

# 连接到数据库
conn = sqlite3.connect('data.db')
cursor = conn.cursor()

# 执行 SQL 查询
cursor.execute("SELECT * FROM users")
data = cursor.fetchall()

# 打印数据
for row in data:
    print(row)

# 关闭连接
conn.close()

这段代码就像一个经验丰富的“探险家”,它连接到 data.db 数据库,执行 SQL 查询,然后把数据打印出来。

  • sqlite3.connect('data.db'): 连接到 SQLite 数据库。
  • cursor(): 创建一个游标对象,用于执行 SQL 语句。
  • cursor.execute("SELECT * FROM users"): 执行 SQL 查询语句,SELECT * FROM users 表示查询 users 表中的所有数据。
  • cursor.fetchall(): 获取查询结果的所有行。
  • conn.close(): 关闭数据库连接。

保存 SQL:

要把数据保存到 SQL 数据库,就像把新的居民登记到城堡的户籍系统里。

import sqlite3

# 连接到数据库
conn = sqlite3.connect('data.db')
cursor = conn.cursor()

# 创建表 (如果表不存在)
cursor.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY,
        name TEXT,
        age INTEGER,
        gender TEXT
    )
''')

# 插入数据
data = [('张三', 25, '男'), ('李四', 30, '女'), ('王五', 28, '男')]
cursor.executemany("INSERT INTO users (name, age, gender) VALUES (?, ?, ?)", data)

# 提交更改
conn.commit()

# 关闭连接
conn.close()

print("数据已保存到 data.db")

这段代码就像一个负责任的“户籍管理员”,它连接到 data.db 数据库,创建 users 表(如果表不存在),然后把新的居民信息插入到 users 表中。

  • cursor.execute('''CREATE TABLE IF NOT EXISTS users ...'''): 创建 users 表,IF NOT EXISTS 表示如果表不存在则创建。
  • cursor.executemany("INSERT INTO users ...", data): 插入多行数据,? 是占位符,用于防止 SQL 注入。
  • conn.commit(): 提交更改,将数据写入数据库。

SQL 总结:

SQL 数据库就像一个安全可靠的“堡垒”,能存储大量的数据,并进行复杂的查询和分析,是企业级应用的首选。

第七幕:选择困难症?别怕,老司机教你选!

面对这么多数据格式,你是不是有点懵了?别怕,老司机来帮你分析一下:

数据格式 优点 缺点 适用场景
CSV 简单易用,通用性强 没有格式,不适合存储复杂数据 小型数据,简单的文本数据
Excel 功能强大,支持格式,可视化能力强 文件较大,不适合存储海量数据 中小型数据,需要进行格式化和可视化的数据
JSON 结构清晰,层次分明,易于解析,适合 Web 应用 可读性较差,不适合存储二进制数据 Web 应用,API 接口,配置文件
SQL 安全可靠,支持复杂查询,适合海量数据 学习成本较高,需要数据库管理系统支持 大型应用,需要进行复杂查询和分析的数据

总而言之,选择哪种数据格式,取决于你的具体需求。如果你的数据量小,结构简单,CSV 是个不错的选择;如果你的数据需要格式化和可视化,Excel 更适合你;如果你的数据是结构化的,需要在 Web 应用中使用,JSON 是不二之选;如果你的数据量大,需要进行复杂的查询和分析,SQL 数据库是你的最佳选择。

第八幕:代码之外的碎碎念

数据加载和保存,看似简单,实则蕴含着许多技巧和陷阱。比如,编码问题,文件路径问题,数据类型转换问题等等。都需要我们在实践中不断摸索和总结。

记住,编程之路,没有捷径,只有不断学习和实践。希望今天的讲解能帮助你在数据海洋中扬帆起航,成为一名合格的数据大航海家! 🚀

最后,送给大家一句至理名言:

“代码虐我千百遍,我待代码如初恋!”

谢谢大家!咱们下期再见! 😉

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注