当前位置: 首页 > news >正文

一周学会Pandas2 Python数据处理与分析-Pandas2数据导出

锋哥原创的Pandas2 Python数据处理与分析 视频教程:  

2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili

任何原始格式的数据载入DataFrame后,都可以使用类似 DataFrame.to_csv()的方法输出到相应格式的文件或者目标系统里。

支持导出的格式比较多,常用的有csv,excel,sql,html等。

导出CSV文件

导出csv文件我们使用to_csv()方法,pandas2提供了丰富的参数来实现强大的导出功能,我们看下to_csv()方法的参数:

def to_csv(
        self,
        path_or_buf: FilePath | WriteBuffer[bytes] | WriteBuffer[str] | None = None,
        sep: str = ",",
        na_rep: str = "",
        float_format: str | Callable | None = None,
        columns: Sequence[Hashable] | None = None,
        header: bool_t | list[str] = True,
        index: bool_t = True,
        index_label: IndexLabel | None = None,
        mode: str = "w",
        encoding: str | None = None,
        compression: CompressionOptions = "infer",
        quoting: int | None = None,
        quotechar: str = '"',
        lineterminator: str | None = None,
        chunksize: int | None = None,
        date_format: str | None = None,
        doublequote: bool_t = True,
        escapechar: str | None = None,
        decimal: str = ".",
        errors: OpenFileErrors = "strict",
        storage_options: StorageOptions | None = None,
    )

to_csv() 是 pandas 中用于将 DataFrame 导出为 CSV 文件的重要方法。以下是该方法的参数详解:

基本参数

  1. path_or_buf (str, path object, file-like object, 默认为 None)

    • 文件路径或文件对象

    • 如果为 None,则返回 CSV 字符串

  2. sep (str, 默认为 ',')

    • 指定分隔符

    • 例如: sep='\t' 表示制表符分隔

  3. na_rep (str, 默认为 '')

    • 缺失值表示方式

    • 例如: na_rep='NA' 会将缺失值显示为 NA

  4. float_format (str, 默认为 None)

    • 浮点数格式字符串

    • 例如: float_format='%.2f' 保留两位小数

  5. columns (sequence, 可选)

    • 指定要写入的列

    • 例如: columns=['col1', 'col3']

  6. header (bool or list of str, 默认为 True)

    • 是否写入列名

    • 如果传入列表,则用作列名

  7. index (bool, 默认为 True)

    • 是否写入行索引

  8. index_label (str or sequence, 默认为 None)

    • 索引列的列名

    • 如果传入列表且有多级索引,则为每级指定名称

编码与日期格式

  1. encoding (str, 默认为 None)

    • 编码方式

    • 例如: encoding='utf-8'encoding='gbk'

  2. date_format (str, 默认为 None)

    • 日期格式字符串

    • 例如: date_format='%Y-%m-%d'

性能相关参数

  1. mode (str, 默认为 'w')

    • Python 写入模式

    • 'w' 表示写入,'a' 表示追加

  2. compression (str or dict, 默认为 'infer')

    • 压缩方式

    • 可选: 'infer', 'gzip', 'bz2', 'zip', 'xz', None

  3. quoting (int or csv.QUOTE_*, 默认为 csv.QUOTE_MINIMAL)

    • 引用约定

    • 选项:

      • csv.QUOTE_ALL (引用所有字段)

      • csv.QUOTE_MINIMAL (仅引用包含特殊字符的字段)

      • csv.QUOTE_NONNUMERIC (引用所有非数字字段)

      • csv.QUOTE_NONE (不引用)

  4. quotechar (str, 默认为 '"')

    • 用于引用的字符

  5. line_terminator (str, 默认为 '\n')

    • 行结束符

其他参数

  1. chunksize (int, 默认为 None)

    • 按指定行数分批写入

  2. doublequote (bool, 默认为 True)

    • 引用字段中的引号是否双写

  3. escapechar (str, 默认为 None)

    • 用于转义的字符

  4. decimal (str, 默认为 '.')

    • 小数点的字符表示

    • 例如: decimal=',' 用于欧洲格式

我们先看最简单的一个示例,用字典构造一个DataFrame对象,然后直接导出csv文件:

import pandas as pd

d = {'学号': [1, 2, 3],
     '姓名': ['张三', '李四', '王五'],
     '语文': [99, 88, 77],
     '数学': [44, 55, 55],
     '英语': [88, 55, 66]}

df = pd.DataFrame(d)

print(df)

df.to_csv('out/student.csv')

我们运行看下导出的csv文件:

默认是有含行索引的,如果不需要的话,我们加下index=False参数:

df.to_csv('out/student2.csv', index=False)  # 不需要行索引

运行导出的csv文件:

如果不需要表头,可以设置header=False

df.to_csv('out/student3.csv', index=False, header=False)  # 不需要行索引,不要表头

运行导出的csv文件:

导出指定列数据,可以使用columns参数指定:

df.to_csv('out/student4.csv', index=False, columns=['姓名', '语文'])  # 不需要行索引,不要表头

运行导出的csv文件:

导出Excel文件

将DataFrame导出为Excel格式也很方便,使用DataFrame.to_excel方法即可。要想把DataFrame对象导出,首先要指定一个文件名,这个文件名必须以.xlsx或.xls为扩展名,生成的文件标签名也可以用sheet_name 指定。

to_excel()方法参数如下:

def to_excel(
        self,
        excel_writer: FilePath | WriteExcelBuffer | ExcelWriter,
        sheet_name: str = "Sheet1",
        na_rep: str = "",
        float_format: str | None = None,
        columns: Sequence[Hashable] | None = None,
        header: Sequence[Hashable] | bool_t = True,
        index: bool_t = True,
        index_label: IndexLabel | None = None,
        startrow: int = 0,
        startcol: int = 0,
        engine: Literal["openpyxl", "xlsxwriter"] | None = None,
        merge_cells: bool_t = True,
        inf_rep: str = "inf",
        freeze_panes: tuple[int, int] | None = None,
        storage_options: StorageOptions | None = None,
        engine_kwargs: dict[str, Any] | None = None,
    ) 

有个sheet_name标签名称参数,默认值是"Sheet1",其他参数使用和csv基本一致。

下面看一个示例:

import pandas as pd
​
d = {'学号': [1, 2, 3],
     '姓名': ['张三', '李四', '王五'],
     '语文': [99, 88, 77],
     '数学': [44, 55, 55],
     '英语': [88, 55, 66]}
​
df = pd.DataFrame(d)
​
df.to_excel('out/student.xlsx', sheet_name="我的标签页", index=False)

导出的excel文件:

导出sql

将DataFrame中的数据保存到数据库的对应表中,pandas2提供了to_sql()方法,我们看下to_sql()方法的参数:

def to_sql(
        self,
        name: str,
        con,
        schema: str | None = None,
        if_exists: Literal["fail", "replace", "append"] = "fail",
        index: bool_t = True,
        index_label: IndexLabel | None = None,
        chunksize: int | None = None,
        dtype: DtypeArg | None = None,
        method: Literal["multi"] | Callable | None = None,
    )

to_sql() 是 pandas 中用于将 DataFrame 写入 SQL 数据库的方法,支持多种关系型数据库。以下是该方法的详细参数说明:

基本参数

  1. name (str)

    • 目标数据库表名

    • 如果表已存在,行为取决于 if_exists 参数

  2. con (sqlalchemy.engine.Engine or sqlite3.Connection)

    • 数据库连接对象

    • 通常使用 SQLAlchemy 引擎创建

  3. schema (str, 可选)

    • 数据库 schema 名称

    • 默认为 None,使用数据库默认 schema

  4. if_exists (str, 默认为 'fail')

    • 表已存在时的处理方式:

      • 'fail': 抛出 ValueError (默认)

      • 'replace': 删除原表后重建

      • 'append': 向现有表追加数据

写入控制参数

  1. index (bool, 默认为 True)

    • 是否将 DataFrame 的索引作为单独列写入

  2. index_label (str or sequence, 可选)

    • 索引列的列名

    • 如果有多级索引,可传入序列

  3. chunksize (int, 可选)

    • 分批写入的行数

    • 大数据集时使用可减少内存消耗

  4. dtype (dict, 可选)

    • 指定列的数据类型

    • 格式: {'column_name': sqlalchemy.types.Type}

    • 例如: {'price': sqlalchemy.types.Float}

类型推断与性能

  1. method (str or callable, 可选)

    • 控制 SQL 插入方式:

      • None: 标准 SQL INSERT 语句

      • 'multi': 单语句多行插入

      • callable: 自定义插入函数

    • 大数据量时 'multi' 可提高性能

  2. keys (sequence, 可选)

    • 当 method='multi' 时,指定要插入的列

其他参数

  1. fail_on_extra_columns (bool, 默认为 False)

    • 如果为 True,当 DataFrame 包含表中不存在的列时会失败

  2. alter_schema (bool, 默认为 False)

    • 如果为 True,尝试修改表结构以匹配 DataFrame

下面是一个导出sql示例:

import pandas as pd
​
from sqlalchemy import create_engine
​
d = {'学号': [1, 2, 3],
     '姓名': ['张三', '李四', '王五'],
     '语文': [99, 88, 77],
     '数学': [44, 55, 55],
     '英语': [88, 55, 66]}
​
df = pd.DataFrame(d)
​
# 创建数据库引擎
# 注意:替换下面的用户名、密码、主机名和数据库名
engine = create_engine('mysql+pymysql://root:123456@localhost:3308/db_xuanke')
​
df.to_sql('t_student', engine, index_label='id')

运行后,自动建表,以及自动插入数据:

相关文章:

  • data_analysis13
  • 神经网络背后的数学原理
  • 探索 Python 的 functools 模块:缓存、属性缓存与 LRU 缓存
  • Day22 -php开发01--留言板+知识点(超全局变量 文件包含 数据库操作 第三方插件)
  • 可配置多功能门芯片的12种用法推导——基于74LVC1G97芯片(附1G98、1G57、1G58、1G99用法)
  • SpringBoot3快速入门笔记
  • 漏洞报告:多短视频平台时间差举报滥用漏洞
  • Python实例题:使用Python生成分形图片
  • java基础 运算符
  • android display 笔记(十三)surfcaeflinger的DEQUEUED、QUEUED
  • android中dp和px的关系
  • 高阶函数/柯里化/纯函数
  • 常用图像滤波及色彩调节操作(Opencv)
  • 改进神经风格迁移
  • 巧用递归算法:破解编程难题的“秘密武器”
  • MySQL 5.7.30 Linux 二进制安装包详解及安装指南
  • 容器初始化Spring Boot项目原理,即web项目(war)包涉及相关类对比详解
  • Mac 下载 PicGo 的踩坑指南
  • 聊聊Spring AI的Multimodality
  • 汇编获取二进制
  • 网站群建设工作/淘宝网页版
  • 一个页面的html5网站模板 psd/温州seo排名优化
  • 网站教程分享/台州网站制作维护
  • 泉州做网站优化/seo草根博客
  • 建设自己的网站步骤/整合网络营销公司
  • b2b网站方案/seo网络优化招聘信息