ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

pandas 表格数据读写入门:read_* / to_* 函数族与 head、dtypes、info 数据检查实践

pandas 表格数据读写入门:read_* / to_* 函数族与 head、dtypes、info 数据检查实践 pandas 表格数据读写入门read_* / to_* 函数族与 head、dtypes、info 数据检查实践【免费下载链接】pandasFlexible and powerful data analysis / manipulation library for Python, providing labeled data structures similar to R data.frame objects, statistical functions, and much more项目地址: https://gitcode.com/gh_mirrors/pa/pandas本教程是 pandas 官方入门系列Getting started tutorials的第二篇围绕经典 Titanic 乘客数据讲解如何用read_csv将表格数据读入DataFrame、用head/tail/dtypes/info快速检查读入结果以及用to_excel/read_excel完成与电子表格之间的数据交换。读完本文你将掌握 pandas 统一的read_*读取函数与to_*导出方法的使用套路、常用的数据体检手段以及它们背后的源码实现位置为后续的筛选、绘图与统计操作打好数据基础。一、本教程使用的数据Titanic 乘客清单教程使用的 Titanic 数据集以 CSV 格式存放在仓库的 doc/data/titanic.csv每个乘客占一行共 12 个数据列含义如下列名含义PassengerId每位乘客的编号Survived是否生还0为否1为是Pclass船舱等级Class1、2、3三种Name乘客姓名Sex乘客性别Age乘客年龄岁SibSp同行的兄弟姐妹或配偶数量Parch同行的父母或子女人数Ticket船票号码Fare票价Cabin客舱号Embarked登船港口后续所有示例都围绕这份数据展开你可以把它当作任何真实业务表格的替身既有整数、浮点数也有缺失值如Age、Cabin存在空值和文本列非常适合演示 pandas 的类型推断与数据检查。二、用 read_csv 读取 CSV 文件目标是分析 Titanic 乘客数据而数据以 CSV 格式存放。pandas 提供了read_csv函数一行即可把 CSV 文件读成DataFrameimport pandas as pd titanic pd.read_csv(data/titanic.csv)这里的data/titanic.csv是相对于当前工作目录的路径实际使用时替换为你自己的文件路径即可。pandas 开箱即用地支持许多文件格式和数据源csv、excel、sql、json、parquet…每种格式都有一个以read_*前缀命名的对应读取函数read_csv、read_excel、read_json、read_parquet、read_sql等命名规律统一便于记忆。从源码看 read_csv 的核心参数read_csv的实现位于 pandas/io/parsers/readers.py函数签名揭示了几个高频参数及其默认值参数默认值作用seplib.no_default即逗号字段分隔符可用delimiter作为别名headerinfer指定哪一行作为列名默认自动推断第一行namesNone自定义列名列表index_colNone指定某一列作为行索引usecolsNone只读取指定列dtypeNone为列强制指定数据类型如{Age: float64}engineNone解析引擎默认自动选择通常为 C 引擎convertersNone对指定列应用自定义转换函数true_values/false_valuesNone自定义布尔值文本skipinitialspaceFalse是否跳过分隔符后的前导空格skiprowsNone跳过文件开头的若干行或满足条件的行skipfooter0跳过文件末尾的若干行nrowsNone只读取前 N 行此外还有na_values自定义缺失值标记、parse_dates解析日期列、thousands千位分隔符等。这些参数让read_csv能应对带表头、无表头、含特殊缺失标记、混合编码等各类现实 CSV 场景。三、读入数据后务必先做检查数据读入后第一件事永远是检查数据是否正确。默认情况下打印一个DataFrame只会显示首尾各 5 行中间用省略号代替避免超大表格刷屏titanic查看前 N 行head后 N 行tail想看到前 8 行调用head方法并传入行数即可titanic.head(8)head与tail都定义在基类 pandas/core/generic.py 中默认参数n5titanic.head(8)返回前 8 行titanic.tail(10)返回最后 10 行。从源码看head的内部实现就是self.iloc[:n].copy()即基于位置切片并返回副本因此不会污染原DataFrame。tail同理基于尾部切片。这两个方法非常适合在读写之后快速“瞄一眼”数据形态。检查各列数据类型dtypes 属性读入后还应该确认 pandas 是如何解释每一列数据类型的用dtypes属性titanic.dtypes输出会为每一列列出其数据类型——本教程的DataFrame中既有整数int64、浮点数float64也有字符串object。注意获取dtypes时不要加括号dtypes是DataFrame和Series的属性attribute而head、tail是方法method。属性表示对象的一种特征直接访问即可方法表示对对象“做某事”调用时必须带括号()。这一区分正是入门教程第一篇面向表格的数据结构中反复强调的基本概念。四、导出与读回 Excel 文件同事希望把 Titanic 数据做成电子表格交付。既然read_*函数负责把数据读进 pandas那么对应的to_*方法就负责把数据写出去。DataFrame.to_excel可以把数据存成 Excel 文件titanic.to_excel(titanic.xlsx, sheet_namepassengers, indexFalse)示例中两个关键参数的作用是sheet_namepassengers工作表命名为passengers而不是默认的Sheet1indexFalse不把行索引标签写入表格默认indexTrue会把 0、1、2… 的行号也写进一列。从源码看 to_excel 的完整参数to_excel定义在 pandas/core/generic.py可用的常用参数包括参数默认值作用excel_writer—目标文件路径、文件对象或ExcelWritersheet_nameSheet1工作表名称na_rep缺失值的填充文本float_formatNone浮点数的格式化字符串columnsNone只写出指定列headerTrue是否写出列名可传自定义列名序列indexTrue是否写出行索引index_labelNone索引列的自定义标题startrow/startcol0从指定行列开始写engineNone写入引擎可选openpyxl或xlsxwritermerge_cellsTrue是否合并 MultiIndex 单元格freeze_panesNone冻结窗格位置autofilterFalse是否为表头添加自动筛选依赖提示使用to_excel与read_excel需要先安装对应的 Excel 引擎具体要求可参见安装文档中关于 Excel 依赖的说明。本教程场景下写入.xlsx推荐openpyxl读取时同样需要显式或自动选择引擎。用 read_excel 把表格读回来与to_excel对应的读取函数是read_excel它可以把刚才写出的文件重新载入为DataFrametitanic pd.read_excel(titanic.xlsx, sheet_namepassengers, engineopenpyxl) titanic.head()read_excel位于 pandas/io/excel/_base.py支持的关键参数包括sheet_name指定工作表传字符串表名、整数第几个表或列表同时读取多个表engine读取引擎可选xlrd、openpyxl、odf、pyxlsb、calamine分别对应.xls、.xlsx、.ods、.xlsb等格式header、names、index_col、usecols、dtype与read_csv语义一致skiprows、nrows、na_values、parse_dates、thousands、decimal等通用解析参数。read_excel还支持一次读取多个工作表当sheet_name传入列表时返回一个以表名为键、DataFrame为值的字典。五、用 info() 获取 DataFrame 的技术摘要DataFrame.info()提供关于数据的技术性概览包括行数、列数、每列非空值数量、数据类型与内存占用titanic.info()逐项解读输出对象类型确认它是一个DataFrame条目数共有 891 个 entries即 891 行行索引每一行都有一个行标签即index取值从 0 到 890列与非空值表格有 12 列多数列每一行都有值891 个non-null而部分列存在缺失值non-null数量少于 891数据类型分布Name、Sex、Ticket、Cabin、Embarked是文本数据字符串即object其余为数值列其中一些是整数integer另一些是实数floatdtypes 汇总各列数据的种类字符、整数等通过dtypes列表汇总展示内存占用输出还给出了该DataFrame占用的近似 RAM 大小。info()是读写数据后最全面的“体检报告”一行输出就能同时暴露缺失值位置、类型推断是否合理例如日期被读成object、整数被读成float64从而决定是否需要dtype、parse_dates等参数重新读取。六、read_* 与 to_*pandas 统一的数据交换协议教程开篇的示意图已经点明 pandas 数据交换的核心模型read_*函数负责“读进来”to_*方法负责“写出去”二者构成对称的 API。开箱支持的格式包括CSVread_csv/to_csvExcelread_excel/to_excel含.xls、.xlsx、.xlsb、.odsJSONread_json/to_jsonParquetread_parquet/to_parquetHTMLread_html/to_htmlHDF5read_hdf/to_hdfSQLread_sql/to_sql其他如 Stata、SAS、SPSS、Feather、ORC、Pickle 等read_*是顶层函数以pd.read_*方式调用例如read_csv在 pandas/io/parsers/readers.py 实现read_excel在 pandas/io/excel/_base.py 实现read_json在 pandas/io/json/_json.py 实现。to_*是DataFrame/Series的方法以df.to_*方式调用例如to_excel定义在基类 pandas/core/generic.py所有表格对象共享这一接口。之所以这样设计是因为“读取”通常面对的是外部数据源文件、数据库、网络与对象本身无关适合做成模块级函数而“写出”依赖于对象的内容天然是对象方法。这也解释了为什么教程开头的示意图把箭头画成“文件系统 ↔ pandas”的双向流动。若想全面了解 pandas 支持的全部输入输出方式、每种格式的完整参数与注意事项请阅读用户指南中的输入输出I/O章节它是read_*/to_*全家族最权威的参考。七、要点回顾读入read_*函数把多种文件格式或数据源读入 pandas如pd.read_csv(data/titanic.csv)导出to_*方法把数据写出如titanic.to_excel(titanic.xlsx, sheet_namepassengers, indexFalse)快速检查head/tail/info方法与dtypes属性是读入后第一时间体检数据的最佳组合——head(8)看前 8 行、tail(10)看最后 10 行、dtypes看列类型、info()看缺失值与内存占用全景。掌握“读取 → 检查 → 分析 → 导出”这条标准链路后就可以进入入门教程的下一篇如何按条件筛选数据的行与列开始真正的数据处理工作了。【免费下载链接】pandasFlexible and powerful data analysis / manipulation library for Python, providing labeled data structures similar to R data.frame objects, statistical functions, and much more项目地址: https://gitcode.com/gh_mirrors/pa/pandas创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表