python中pandas读写数据详解

2023-10-31

Pandas 库读取数据

Pandas 是一种开源数据分析工具,可以帮助我们更方便地处理和分析数据。Pandas 提供了许多函数来读取各种格式的数据,例如 CSV、Excel、SQL 等。

读取 CSV 文件

CSV 文件是一种常用的数据格式,其中每行表示一条记录,每列表示一个字段。我们可以使用 Pandas 库中的 read_csv 函数来读取 CSV 文件。下面是一个基本的用法示例:

import pandas as pd

df = pd.read_csv('file.csv')

在上面的示例中,我们使用 read_csv 函数读取一个名为 file.csv 的 CSV 文件,并将其保存到名为 df 的 DataFrame 对象中。默认情况下,Pandas 将第一行视为列名,并使用逗号作为字段间的分隔符。

有时候,CSV 文件的第一行可能不是列名,或者使用的分隔符不是逗号。在这种情况下,我们需要显式地指定相关参数。例如,如果 CSV 文件使用空格作为字段间的分隔符,并且第一行不是列名,那么可以使用如下的方式读取文件:

df = pd.read_csv('file.csv', sep=' ', header=None)

在上面的示例中,我们将分隔符参数 sep 设置为空格,将 header 参数设置为 None,表示该文件没有列名。

除了上述两个常见的参数之外,Pandas 的 read_csv 函数还提供了许多其他可选参数:

  • sep: 指定分隔符,默认为逗号
  • header: 指定哪一行作为列名,默认为'infer',即自动推断,也可以传入整数或列表来指定具体的行号,或者传入None来表示没有列名
  • names: 指定列名,如果传入了列表,则会覆盖header参数的效果,如果传入了None,则会自动生成列名
  • index_col: 指定哪一列作为行索引,默认为None,即自动生成索引,也可以传入整数或列表来指定具体的列号,或者传入字符串来指定具体的列名
  • usecols: 指定要使用哪些列,默认为None,即使用所有列,也可以传入整数或列表来指定具体的列号,或者传入字符串或列表来指定具体的列名,或者传入可调用对象来根据列名筛选
  • dtype: 指定每一列的数据类型,默认为None,即自动推断,也可以传入字典来映射每一列的类型,例如{‘a’: int, ‘b’: float}
  • skiprows: 指定要跳过哪些行,默认为None,即不跳过任何行,也可以传入整数或列表来指定具体的行号,或者传入可调用对象来根据行号筛选
  • nrows: 指定要读取多少行,默认为None,即读取所有行,也可以传入整数来指定具体的行数
  • na_values: 指定要识别为缺失值的值,默认为None,即只识别空白值,也可以传入字符串或列表来指定具体的值,例如'NA'或['NA', '-']
  • parse_dates: 指定是否要解析日期,默认为False,即不解析日期,也可以传入True来尝试解析所有列,或者传入整数或列表来指定具体的列号,或者传入字符串或列表来指定具体的列名,或者传入字典来映射每

读取 Excel 文件

Pandas 库还可以读取 Excel 文件。可以使用 Pandas 中的 read_excel 函数,例如:

df = pd.read_excel('file.xlsx', sheet_name='Sheet1')

在上面的示例中,我们使用 read_excel 函数读取一个名为 file.xlsx 的 Excel 文件,并将第一个工作表(Sheet1)中的数据保存到一个 DataFrame 对象中。

和 read_csv 函数一样,read_excel 函数也提供了许多可选参数:

  • sheet_name: 指定要读取哪个工作表,默认为0,即第一个工作表,也可以传入整数或字符串来指定具体的工作表号或名称,或者传入None来读取所有工作表,或者传入列表来读取多个工作表
  • header: 指定哪一行作为列名,默认为'infer',即自动推断,也可以传入整数或列表来指定具体的行号,或者传入None来表示没有列名
  • names: 指定列名,如果传入了列表,则会覆盖header参数的效果,如果传入了None,则会自动生成列名
  • index_col: 指定哪一列作为行索引,默认为None,即自动生成索引,也可以传入整数或列表来指定具体的列号,或者传入字符串来指定具体的列名
  • usecols: 指定要使用哪些列,默认为None,即使用所有列,也可以传入整数或列表来指定具体的列号,或者传入字符串或列表来指定具体的列名,或者传入可调用对象来根据列名筛选
  • dtype: 指定每一列的数据类型,默认为None,即自动推断,也可以传入字典来映射每一列的类型,例如{‘a’: int, ‘b’: float}
  • skiprows: 指定要跳过哪些行,默认为None,即不跳过任何行,也可以传入整数或列表来指定具体的行号,或者传入可调用对象来根据行号筛选
  • nrows: 指定要读取多少行,默认为None,即读取所有行,也可以传入整数来指定具体的行数
  • na_values: 指定要识别为缺失值的值,默认为None,即只识别空白值,也可以传入字符串或列表来指定具体的值,例如'NA'或['NA', '-']
  • parse_dates: 指定是否要解析日期,默认为False,即不解析日期,也可以传入True来尝试解析所有列,或者传入整数或列表来指定具体的列号,或者传入字符串或列表来指定具体的列名,或者传入字典来映射每一列是否要解析日期

读取 SQL 数据库

Pandas 还可以从基于 SQL 数据库中读取数据,以便进行更复杂的查询和数据分析。Pandas 提供了一个 read_sql 函数来连接和查询 SQL 数据库。例如:

import pandas as pd
from sqlalchemy import create_engine

engine = create_engine('sqlite:///file.db')

df = pd.read_sql('SELECT * FROM table', engine)

在上面的示例中,我们使用 SQLAlchemy 包中的 create_engine 函数创建了一个连接到 SQLite 数据库的 Engine 对象,然后使用 Pandas 的 read_sql 函数从表 table 中选择所有行('*')。

注意,sqlite:///file.db 中的 file.db 是我们要连接的 SQLite 数据库文件名。如果是其他类型的数据库,需要使用相应的连接字符串。在这里,我们还需要安装 SQLAlchemy 包,该包提供了一些 SQL 数据库引擎的接口和工具。

read_sql()函数的用法如下:

pd.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)

其中,sql参数是一个SQL语句或者一个表名,用来指定要读取的数据源。con参数是一个数据库连接对象,用来指定要连接的数据库。其他参数是一些可选的参数,用来自定义读取的方式,例如:

  • index_col: 指定哪一列作为行索引
  • coerce_float: 指定是否要将数值类型的数据强制转换为浮点类型
  • params: 指定一些参数来替换SQL语句中的占位符
  • parse_dates: 指定是否要解析日期
  • columns: 指定要返回哪些列
  • chunksize: 指定要分块读取的行数

除了CSV、Excel和SQL文件外,pandas还支持读取其他类型的文件,例如:

  • read_json(): 读取JSON文件
  • read_html(): 读取HTML文件中的表格
  • read_parquet(): 读取Parquet文件
  • read_feather(): 读取Feather文件
  • read_hdf(): 读取HDF5文件
  • read_stata(): 读取Stata文件
  • read_sas(): 读取SAS文件
  • read_spss(): 读取SPSS文件
  • read_pickle(): 读取Pickle文件

这些函数的用法和参数与read_csv()和read_excel()类似,但也有一些特定的参数,例如:

  • read_json()可以指定orient参数来表示JSON数据的结构,例如'split'表示分割索引、列名和数据,'records'表示每一行是一个JSON对象,'index'表示行索引是JSON的键,等等
  • read_html()可以指定match参数来根据正则表达式匹配HTML中的表格,例如match='Population'表示只选取包含'Population'字符串的表格
  • read_sql()可以指定sql参数来传入SQL语句或表名,例如sql='SELECT * FROM table'表示执行SQL查询并返回结果,sql='table'表示直接返回表格内容
  • read_parquet()可以指定engine参数来选择使用哪个库来读取Parquet文件,例如engine='pyarrow'表示使用pyarrow库,engine='fastparquet'表示使用fastparquet库
  • read_feather()可以指定columns参数来选择要读取哪些列,例如columns=['a', 'b']表示只读取'a'和'b'两列

写入数据

除了读取数据之外,Pandas 也提供了许多函数来写入数据到各种格式,例如 to_csv、to_excel、to_sql 等。这些函数通常按照与读取数据函数类似的方式使用。例如,要将 DataFrame 对象保存为 CSV 文件,可以使用 to_csv 函数:

df.to_csv('new_file.csv', index=False)

在上面的示例中,我们使用 to_csv 函数将名为 df 的 DataFrame 对象保存为一个名为 new_file.csv 的 CSV 文件。我们还将 index 参数设置为 False,表示不保存行索引。

常见错误和注意事项

  • 文件路径不正确:读取或写入文件时,必须指定正确的文件路径。如果文件路径不正确,会导致文件读取或写入失败。
  • 编码不正确:在读取或写入 CSV 文件时,可能需要指定正确的编码方式。如果编码不正确,可能会导致读取或写入的数据出现乱码等问题。
  • 参数不正确:读取或写入数据时,必须指定正确的参数。例如,在读取 CSV 文件时,必须指定分隔符、列名等参数,如果参数不正确,数据可能无法正确读取。
  • 规范化数据:在读取数据之前,必须确保数据规范化。例如,在读取 Excel 文件时,必须确保各个工作表中的数据结构一致,否则可能会出现数据读取错误的问题。

总结

pandas是一个强大而灵活的Python包,它可以让你处理带有标签和时间序列的数据。pandas提供了一系列的函数来读取不同类型的文件,并返回一个DataFrame对象,这是pandas的核心数据结构,它可以让你方便地对数据进行分析和处理。

pandas读取文件的函数通常有以下几个特点:

  • 函数名以read_开头,后面跟着文件的类型,例如read_csv()表示读取CSV文件
  • 函数的第一个参数是文件的路径或者类似文件的对象,例如read_csv("data.csv")表示读取data.csv文件,read_csv(url)表示从网址读取数据
  • 函数有很多可选的参数来自定义读取的方式,例如sep表示分隔符,header表示列名,index_col表示行索引,dtype表示数据类型等等
  • 函数返回一个DataFrame对象,它是一个二维的表格,可以用行索引和列名来访问数据,也可以用一些方法和属性来对数据进行操作
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中pandas读写数据详解 的相关文章

  • 更改 Inkscape 的 Python 解释器

    在使用 Inkscape 时 我不断收到错误 这似乎意味着未满足 python 2 vs 3 的期望 尽管我已经安装了它们 例如 当我尝试从模板生成新文档时 我得到 Traceback most recent call last File
  • 如何配置散景图以具有响应宽度和固定高度

    我使用通过组件功能嵌入的散景 实际上我使用 plot sizing mode scale width 它根据宽度进行缩放并保持纵横比 但我想要一个响应宽度但固定或最大高度 这怎么可能实现呢 有stretch both and scale b
  • 使用 Flask SQLAlchemy 进行表(模型)继承

    我遵循了这个建议question https stackoverflow com questions 1337095 sqlalchemy inheritance但我仍然收到此错误 sqlalchemy exc NoForeignKeysE
  • Python中#和"""注释的区别

    开始用 Python 编程 我看到一些带有注释的脚本 and comments 这两种评论方式有什么区别 最好的事情就是阅读PEP 8 Python 代码风格指南 https www python org dev peps pep 0008
  • 如何编写高效的配对算法?

    我需要一种算法的帮助 该算法可以有效地将人们分组 并确保以前的配对不会重复 例如 假设我们有 10 位候选人 candidates 0 1 2 3 4 5 6 7 8 9 并假设我们有一个先前匹配的字典 这样每个键值对即candidate
  • 用于打印 C/C++ 文件的所有函数定义的 Python 脚本

    我想要一个 python 脚本来打印 C C 文件中定义的所有函数的列表 e g abc c定义两个函数为 void func1 int func2 int i printf d i return 1 我只想搜索文件 abc c 并打印其中
  • 如何通过 Python socket.send() 发送字符串以外的任何内容

    我对 Python 编程非常陌生 但出于必要 我必须快速地将一些东西组合在一起 我正在尝试通过 UDP 发送一些数据 除了当我执行 socket send 时 我必须以字符串形式输入数据之外 一切都正常 这是我的程序 这样你就可以看到我在做
  • 打印一个 Jupyter 单元中定义的所有变量

    有没有一种更简单的方法来以漂亮的方式显示单个单元格中定义的所有变量的名称和值 我现在做的方式是这样的 但是当有30个或更多变量时我浪费了很多时间 您可以使用whos http ipython readthedocs io en stable
  • 将 JSON 字符串传递给 Django 模板

    我一直在用头撞墙 试图找出为什么我无法将从 Django 模型生成的 JSON 字符串传递到模板的 javascript 静态文件中 事实证明 问题不在模型级别 使用serializers serialize 在脚本本身中放入相同的字符串将
  • 如何通过facebook-sdk python api获取用户帖子?

    我使用 facebook jssdk 授权我的应用程序读取用户个人资料和用户帖子 FB login function response scope user status user likes user photos user videos
  • keras 预测内存交换无限期增加

    我使用keras实现了一个分类程序 我有一大组图像 我想使用 for 循环来预测每个图像 然而 每次计算新图像时 交换内存都会增加 我尝试删除预测函数内部的所有变量 并且我确信该函数内部存在问题 但内存仍然增加 for img in ima
  • Python将csv数据导出到文件中

    我有以下运行良好的代码 但我无法修剪数据并将其存储在数据文件中 import nltk tweets love this car this view amazing not looking forward the concert def g
  • 指定 Parquet 属性 pyspark

    如何在 PySpark 中指定 Parquet 块大小和页面大小 我到处搜索 但找不到任何有关函数调用或导入库的文档 根据火花用户档案 https mail archives apache org mod mbox spark user 2
  • 从文档字符串生成 sphinx 文档不起作用

    我有一个具有以下结构的项目 我想保留 my project build here is where sphinx should dump into requirements txt make bat Makefile more config
  • if/else 在 while 循环内正确缩进[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我开始学习 Python 编程大约几周了 我遇到了一些麻烦 下面的代码是一个小程序 用于检查列表中是否有偶数 如果找到第一个偶数
  • Python:使用列表创建二叉搜索树

    我的代码的目标是从 txt 文件中获取每个单独的单词并将其放入列表中 然后使用该列表创建二叉搜索树来计算每个单词的频率 并按字母顺序打印每个单词及其频率 中的每个单词只能包含字母 数字 或 我无法用我的初学者编程知识来做的部分是使用我拥有的
  • 如何在包更新之间保留数据文件?

    我正在使用data files的论证setuptools setup 将配置文件安装到 etc和用户主目录 但是更新包pip install
  • python 的 fcntl.flock 函数是否提供文件访问的线程级锁定?

    Python 的 fcnt 模块提供了一种名为 flock 1 的方法来证明文件锁定 其描述如下 对文件执行锁定操作op 描述符 fd 文件对象提供 fileno 方法被接受为 出色地 请参阅 Unix 手册集群 2 了解详情 在某些系统上
  • Python 中的 C 指针算术

    我正在尝试将一个简单的 C 程序转换为 Python 但由于我对 C 和 Python 都一无所知 这对我来说很困难 我被 C 指针困住了 有一个函数采用 unsigned long int 指针并将其值添加到 while 循环中的某些变量
  • 在 pip 中为 Flask 应用程序构建 docker 映像失败

    from alpine latest RUN apk add no cache python3 dev pip3 install upgrade pip WORKDIR backend COPY backend RUN pip no cac

随机推荐

  • git锁住如何解决GitLab: Your account has been blocked.

    今天用gitpush和pull的时候出现了一个问题 报了一个错误 GitLab Your account has been blocked 然后我怀疑是账号错误 然后发现账号密码对 后来发现是两个git账号同时占用了一个目录 强制删除目录下
  • 数据结构【堆】的认识及建立

    目录 一 堆 1 什么是堆 2 堆的存储方式 二 堆的建立与存储 三 堆的应用 1 堆排序 2 对顶堆 一 堆 1 什么是堆 堆 Heap 是一种特殊的完全二叉树结构 其中最大堆 Max Heap 或最小堆 Min Heap 的每个节点的键
  • Maven-Failed to parse POMs

    Maven Failed to parse POMs 错误描述信息 产生错误的原因 解决办法 依赖关系 错误描述信息 ERROR Failed to parse POMs hudson remoting ProxyException hud
  • mmdetection学习&训练测试自己的数据集

    一 本机使用环境 商汤科技和香港中文大学联合开源的深度学习目标检测工具箱mmdetection源码地址 Ubuntu16 04 Cuda9 0 cudnn7 5 Python3 6 GCC 7 2 Anaconda3 二 环境配置 官方配置
  • 无法连接 SQL Server 不可用或不存在 无法连接, SQL Server 不存在或拒绝网络访问..请问这是怎么回事?...

    远程连接sql server 2000服务器的解决方案 一 看ping 服务器IP能否ping通 这个实际上是看和远程sql server 2000服务器的物理连接是否存在 如果不行 请检查网络 查看配置 当然得确保远程sql server
  • CUDA 6.0在 VS 2010下的安装和配置

    CUDA 6 0在 VS 2010下的安装和配置 安装前准备 CUDA 6 0 安装包 下载地址 https developer nvidia com cuda downloads VS 2010 安装 这个直接下个免费的就行 Visual
  • 信息打点-公众号服务&Github监控&供应链&网盘泄漏&证书图标邮箱资产

    文章目录 微信公众号 获取 三方服务 Github监控 开发 配置 源码 网盘资源搜索 全局文件机密 敏感目录文件 目录扫描 爬虫 网络空间进阶 证书 图标 邮箱 实战案例四则 技术分享打击方位 微信公众号 获取 三方服务 1 获取微信公众
  • Linux C利用Socket套接字进行服务器与多个客户端进行通讯

    http blog csdn net returningprodigal article details 51916754 服务器端 html view plain copy print include
  • C++/Python机器学习—感知机(二分类)

    一 Python import numpy as np import matplotlib pyplot as plt 定义预测函数 def predict x w b 计算特征向量和权重向量的点积 dot product np dot x
  • chrome浏览器 docker_使用docker安装elasticsearch

    1 使用docker安装 拉取镜像docker pull elasticsearch 6 5 4 创建容器docker create name elasticsearch net host e discovery type single n
  • 通过这些case,我把项目LCP时间减少了1.5s

    您好 如果喜欢我的文章 可以关注我的公众号 量子前端 将不定期关注推送前端好文 前言 最近在做公司几个项目性能优化 整理出一些比较有用且常见的case来分享一下 A项目优化 白屏相关 DNS预连接 资源预解析 对于公共域名g alicdn
  • Python 大数据分析教程_1_大数据分析概述

    本章内容 理解数据 认识数据分析 数据分析工具Python 集成开发环境和文本编辑器 使用Jupter Notebook 理解数据 需要分析的数据一般是结构化的 半结构化的 非结构化的数据集合 大部分数据集都能够被转化为更加适合分析和建模的
  • openwrt路由器samba拒绝访问

    openwrt路由器samba拒绝访问 第一步 第一步 检查软件包 进入路由器web后台页面 系统 软件包 按ctrl f键查找samba软件包安装情况 例如 我的系统就有 autosamba luci app samba luci i18
  • Postfix+Cyrus-IMAP + Cyrus-SASL + MySQL + IMP 配置指南

    CNGNU Postfix邮件系统系列指南之一 Postfix Cyrus IMAP Cyrus SASL MySQL IMP完全指南 作者 王兴宇
  • iphonex苹果手机Exchange邮箱设置同步的邮件天数

    苹果手机Exchange邮件设置 同步的邮件天数 步骤 1 找到手机 设置 2 找到 账户与密码 3 找到 Exchage 4 找到 要同步的邮件天数 5 选择要保留的天数
  • leetcode shell 4道题

    最近在学习shell 发现leetcode上shell的4道题还是比较不错的 整理了一下 193 Valid Phone Numbers 电话号码匹配 easy grep 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0
  • IOU

    IOU 即交并比 应用 NMS 过滤重叠框 mAP import numpt as np def get IOU pred bbox gt bbox ixmin max pred bbox 0 gt bbox 0 iymin max pre
  • 【Java8日期】一文搞定Java8日期新特性

    目录标题 前言 Java8日期类型 简介 1 核心类 2 关键点 LocalDate 1 获取当前日期 年 月 日 2 获取月 周的第几天 3 随意创建日期 4 比较两个LocalDate是否相同 5 比较两个LocalDate的大小 6
  • Ant Design Pro入门介绍

    官方文档地址 https pro ant design zh CN 应用介绍 Ant Design Pro是一个企业级中后台前端 设计解决方案 基于React的中后台管理控制台的脚手架 能帮助我们快速的搭建企业级中后台管理系统 今天就为大家
  • python中pandas读写数据详解

    Pandas 库读取数据 Pandas 是一种开源数据分析工具 可以帮助我们更方便地处理和分析数据 Pandas 提供了许多函数来读取各种格式的数据 例如 CSV Excel SQL 等 读取 CSV 文件 CSV 文件是一种常用的数据格式