Pandas的读写数据

news2024/11/15 12:26:21

目录

读写文件的类型

Excel写

API

准备数据

1.直接写入(默认有索引和标题)

2.写入(去掉索引)

3.写入(去掉索引和标题)

4.写入(去掉索引和标题,指定表单信息)

 Excel读

API

1.读(默认带有索引和标题)

2.读(指定索引项)

3.读(碰到无标题列和无索引列,指定索引列,标题列)

4.读(只要1,2,3列)

5.读(只读前两列)

6.读(跳过前两行)

CSV写

 API

准备数据

1.写(默认是有标题行和索引列)

2.写(去掉索引列)

3.写(去掉标题和索引列)

4.写(去掉索引和标题,只要id列和name列)

5.写(去掉索引列和标题列,并且更换分隔符)

6.写(追加效果)

7.写(默认格式是复写)

CSV读

API

1.读(无索引列的文件)

 2.读(有索引的文件)

3.读(指定索引列)

4.读(指定索引列,将birthday解析成日期类型)

5.读(指定索引列,指定非默认分隔符)

MySQL写

1.先在数据库中创建表

2.读取python上的表

3.创建数据库操作引擎对象并指定数据库

4.将数据写入MySQL数据库

MySQL读

1.导入相关库

2.通过表读

3.通过sql读


读写文件的类型

Excel写

API

  • excel_writer:指定要写入的 Excel 文件路径或ExcelWriter对象。例如:'output.xlsx'。

  • sheet_name:指定要写入的工作表名称。默认值为'Sheet1'。例如:sheet_name='MyData'。

  • index:布尔值,决定是否写入行索引。默认值为True,表示写入行索引。例如:index=False则不写入行索引。

  • columns:可选择要写入的列,可以是列名列表。默认值为写入所有列。例如:columns=['col1', 'col2']只写入指定的两列。

准备数据

准备数据(字典)
import pandas as pd

data = [
    [1, '张三', '1999-3-10', 18],
    [2, '李四', '2002-3-10', 15],
    [3, '王五', '1990-3-10', 33],
    [4, '隔壁老王', '1983-3-10', 40]
]

df = pd.DataFrame(data, columns=['id', 'name', 'birthday', 'age'])
df

1.直接写入(默认有索引和标题)

df.to_excel('../output/student.xls')

2.写入(去掉索引)

df.to_excel('../output/student1.xls', index=False)

3.写入(去掉索引和标题)

df.to_excel('../output/student_2.xls', index=False, header=False)

4.写入(去掉索引和标题,指定表单信息)

df.to_excel('../output/student_3.xls', index=False, header=False, sheet_name='学生信息')

 Excel读

API

  • excel_writer:指定要写入的 Excel 文件路径或ExcelWriter对象。例如:'output.xlsx'。

  • sheet_name:指定要写入的工作表名称。默认值为'Sheet1'。例如:sheet_name='MyData'。

  • index:布尔值,决定是否写入行索引。默认值为True,表示写入行索引。例如:index=False则不写入行索引。

  • columns:可选择要写入的列,可以是列名列表。默认值为写入所有列。例如:columns=['col1', 'col2']只写入指定的两列。

1.读(默认带有索引和标题)

import pandas as pd

# 1 读(默认)
df = pd.read_csv("../output/student.csv")
df

2.读(指定索引项)

pd.read_excel("../output/student.xls",index_col=0)

3.读(碰到无标题列和无索引列,指定索引列,标题列)

pd.read_excel("../output/student_2.xls",header=None)

4.读(只要1,2,3列)

pd.read_excel("../output/student_2.xls",header=None, usecols=[1,2,3])

5.读(只读前两列)

pd.read_excel("../output/student_2.xls",index= None,header=None, nrows=2)

6.读(跳过前两行)

pd.read_excel("../output/student_2.xls",index_col= None,header=None,skiprows=2)

CSV写

 API

  • sep:指定分隔符,默认为,。例如:sep=';'可以使用分号作为分隔符。

  • mode:指定文件打开模式,默认为'w'(写入模式)。如果要追加数据,可以使用'a'。

准备数据

# 1.1 准备数据(字典)
data = [
    [1, '张三', '1999-3-10', 18],
    [2, '李四', '2002-3-10', 15],
    [3, '王五', '1990-3-10', 33],
    [4, '隔壁老王', '1983-3-10', 40]
]

df = pd.DataFrame(data, columns=['id', 'name', 'birthday', 'age'])
df

 

1.写(默认是有标题行和索引列)

df.to_csv("../output/student_1.csv")

2.写(去掉索引列)

df.to_csv("../output/student_2.csv",index=False)

3.写(去掉标题和索引列)

df.to_csv("../output/student_5.csv",index=False,header = False)

4.写(去掉索引和标题,只要id列和name列)

df.to_csv("../output/student_4.csv",index=False,header = False,columns = ['id','name'])

 5.写(去掉索引列和标题列,并且更换分隔符)

df.to_csv("../output/student_3.csv",index=False,header = False,sep = '*')

6.写(追加效果)

df.to_csv('../output/student_3.csv', index=False, header=False, columns=['id', 'name', 'age'], sep='*', mode='a')

注:在student_3.csv的基础上追加,

7.写(默认格式是复写)

df.to_csv('../output/student_3.csv', index=False, header=False, columns=['id', 'name', 'age'], sep='*', mode='w')

CSV读

API

  • sep:指定分隔符,默认为,。如果 CSV 文件使用其他分隔符,如制表符\t或分号;,可以通过这个参数指定。例如:sep=';'。

  • names:如果header=None,可以使用这个参数指定列名列表。例如:names=['col1', 'col2', 'col3']。

  • index_col:指定用作行索引的列号或列名。可以是整数、整数列表或None。如果是整数,该列为行索引;如果是列表,多个列被组合成一个层次化索引;如果是None,则不使用任何列作为行索引,行索引将是从 0 开始的整数。默认值为None。例如:index_col=0表示将第一列作为行索引。

  • usecols:指定要读取的列。可以是列名列表、整数列表或一个可调用对象,用于筛选列。例如:usecols=[0, 2]表示读取第一列和第三列。

  • skiprows:指定要跳过的行数。可以是整数、整数列表或可调用对象。例如:skiprows=2表示跳过前两行。

  • nrows:指定要读取的行数。例如:nrows=100表示读取前 100 行数据。

  • encoding:指定文件的编码方式。常见的编码有utf-8等。例如:encoding='utf-8-sig'。

1.读(无索引列的文件)

import  pandas as pd
df = pd.read_csv("../output/student_2.csv")
df

 2.读(有索引的文件)

df = pd.read_csv("../output/student_1.csv")
df

3.读(指定索引列)

df = pd.read_csv("../output/student_1.csv",index_col = 0)
df

4.读(指定索引列,将birthday解析成日期类型)

# 原列类型
df = pd.read_csv("../output/student_5.csv", header=None, names=['编号', '姓名', "出生日期", "年龄"])
df.info()
print('----------------')
# 改变后
df = pd.read_csv("../output/student_5.csv", header=None, names=['编号', '姓名', "出生日期", "年龄"], parse_dates=['出生日期'])
df.info()

5.读(指定索引列,指定非默认分隔符)

df = pd.read_csv("../output/student_3.csv", header=None, names=['编号', '姓名', "出生日期", "年龄"], parse_dates=['出生日期'], sep='*')
df

根据*分隔数据

MySQL写

目的是将python中的表写入MySQL中

1.先在数据库中创建表

drop database if exists test;
create database test char set utf8;
use test;

2.读取python上的表

import pandas as pd
from kafka import conn

# 读
df = pd.read_csv("../output/student.csv", index_col=0)
df

3.创建数据库操作引擎对象并指定数据库

# 连接
from sqlalchemy import create_engine

conn = create_engine("mysql+pymysql://root:123456@192.168.88.100:3306/test?charset=utf8")

4.将数据写入MySQL数据库

# 写
df.to_sql('student', con=conn, if_exists='replace', index=False)

但是此时birthday那一列是text格式

扩展:指定写入日期的格式是data

from sqlalchemy import types

dtype = {'birthday':types.Date}

df.to_sql('student_2', con=conn, if_exists='append', index=False, dtype=dtype)

MySQL读

1.导入相关库

import pandas as pd
from sqlalchemy import create_engine

2.通过表读

# 1.通过表读
conn = create_engine('mysql+pymysql://root:123456@192.168.88.100:3306/test?charset=utf8')


df = pd.read_sql_table("student_2",con = conn)
df

3.通过sql读

# 2 通过sql读取
conn = create_engine('mysql+pymysql://root:123456@192.168.88.100:3306/test?charset=utf8')

df = pd.read_sql_query("select * from student_2 where age > 30",con = conn)
df

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2146655.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++速通LeetCode中等第7题-和为K的子数组(巧用前缀和)

巧用哈希表与前缀和&#xff0c;前缀和差为k的两个序号之间的数组就是满足条件的子数组&#xff0c;用哈希表来存放每个序号的前缀和。 前缀和就是头元素到当前序号子数组元素的和 class Solution { public:int subarraySum(vector<int>& nums, int k) {unordered_…

【软件测试】测试的岗位有哪些?

求职入口有很多&#xff1a;相关企业官网、求职软件、校招、公众号等等。 下面就在某招聘网站上看看测试有哪些岗位吧&#xff01; 测试只是一个统称&#xff0c;在测试下面还有很多细分岗位。 但是测试的岗位主要分为以下俩个方面&#xff1a; 软件测试开发工程师&#xff…

Linux(Centos7)系统下给已有分区进行扩容

本文详细介绍了&#xff0c;如何给Centos中已有分区进行扩容&#xff0c;简单的几条命令即可完成。 文章目录 1. 创建物理卷 (PV)2. 将新的物理卷添加到卷组 (VG)3. 扩展逻辑卷 (LV)4. 扩展文件系统4.1 查看文件系统类型4.2 扩展文件系统 完成 1、首先把vmware中的linux关机&am…

【Python】从基础到进阶(九):探索Python中的迭代器与生成器

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言二、迭代器1. 什么是迭代器&#xff1f;迭代器的工作流程&#xff1a; 2. 使用内置迭代器3. 自定义迭代器 三、生成器1. 什么是生成器&#xff1f;2. 创建生成器3. 生成器表达式 四、生成器与迭代器的区别五、生成器…

Python基础(六)——PyEcharts数据可视化初级版

案例 【前言&#xff1a;为了巩固之前的Python基础知识&#xff08;一&#xff09;到&#xff08;五&#xff09;&#xff0c;并为后续使用Python作为数据处理的好帮手&#xff0c;我们一起来看几个例子】 使用工具&#xff1a;Echarts Echarts 是一个由百度开源的数据可视化…

Node js介绍

目录 概要**对Node的认识****Node的概念理解****Node和浏览器区别****Node的架构图** **Node的应用场景****Node的安装****安装Node的LTS版本****Node的版本管理工具nvm(了解)** **Node的输入和输出**Node程序传递参数Node的输出 **Node的全局对象****特殊的全局对象****其他的…

C++类与对象深度解析(五):友元机制、内部类与匿名对象的高级应用

文章目录 C类和对象——全面指南前言4. 友元详解4.1 友元的基本概念 4.2 友元函数示例代码&#xff1a;友元函数访问两个类的私有成员输出&#xff1a; 4.3 友元类示例代码&#xff1a;友元类的使用输出&#xff1a; 4.4 友元的特性与限制4.5 友元函数与类的实际应用示例&#…

WAAP解决方案:守护数字时代的安全盾牌

在当今这个数字化、数据驱动的时代&#xff0c;网络安全已成为企业运营中不可或缺的一环。随着Web应用程序和API接口在业务中的广泛应用&#xff0c;其面临的安全威胁也日益复杂多变。为此&#xff0c;WAAP&#xff08;Web Application and API Protection&#xff09;解决方案…

JavaEE:网络编程(UDP)

文章目录 UDPUDP的特点UDP协议端格式校验和前置知识校验和具体是如何工作的? UDP UDP的特点 UDP传输的过程类似于寄信. 无连接: 知道对端的IP和端口号就直接进行传输,不需要建立连接.不可靠: 没有确认机制,没有重传机制,如果因为网络故障导致该段无法到达对方,UDP协议也不会…

字符函数 和 字符串函数 的使用与模拟

前言&#xff1a;在编程的过程中&#xff0c;我们经常要处理字符和字符串&#xff0c;为了⽅便操作字符和字符串&#xff0c;C语⾔标准库中提供了 ⼀系列库函数&#xff0c;接下来我们就学习⼀下这些函数。 目录 1. 字符函数 1.1 字符分类判断函数 1.2 字符转换函数 1.3 练…

Sui主网升级至V1.33.2

其他升级要点如下所示&#xff1a; #19404&#xff1a; 启用对等节点的共识轮次探测。 #19119&#xff1a; 无符号整数现在支持.to_string()方法&#xff0c;例如10u8.to_string()等同于 b”10".to_string()。 GraphQL #18774&#xff1a; 为GraphQL引入.move名称解…

Vue3.0组合式API:依赖注入provide和inject实现跨层组件的通信

1、Prop 逐级透传问题 通常情况下&#xff0c;当我们需要从父组件向子组件传递数据时&#xff0c;会使用 props。想象一下这样的结构&#xff1a;有一些多层级嵌套的组件&#xff0c;形成了一棵巨大的组件树&#xff0c;而某个深层的子组件需要一个较远的祖先组件中的部分数据…

数字源表测试IC芯片电性能方案

芯片测试作为芯片设计、生产、封装、测试流程中的重要步骤&#xff0c;是使用特定仪器&#xff0c;通过对待测器件DUT(DeviceUnderTest)的检测&#xff0c;区别缺陷、验证器件是否符合设计目标、分离器件好坏的过程。其中直流参数测试是检验芯片电性能的重要手段之一&#xff0…

JAVA国际版同城货运新纪元货拉拉货运车系统小程序源码

&#x1f69a;国际货运新风尚&#xff0c;同城搬家轻松享 —— 货拉拉货运车系统&#xff0c;全球互联新体验&#x1f30d; &#x1f310;【开篇&#xff1a;跨越国界的货运新篇章】&#x1f310; 在这个全球化的时代&#xff0c;无论是跨国企业还是个人需求&#xff0c;都渴…

Java通信协议——UDP通信协议,模拟聊天室(完整详解,附有代码)

UDP通信协议&#xff0c;模拟聊天室 需求说明 实现客户咨询问题&#xff0c;客服人员答复问题 分析 咨询时&#xff0c;客户是发送方&#xff0c;客服人员是接收方 答复时&#xff0c;客服人员是发送方&#xff0c;客户是接收方&#xff0c;实现思路和咨询时相同 当客户端输入 …

【5G QoS】详解5G QoS端到端工作机制

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G技术研究。 博客内容主要围绕…

大田上的路径跟踪论文汇总

文章目录 2022Path tracking control method and performance test based on agricultural machinery pose correction&#xff08;Computers and Electronics in Agriculture&#xff09;An optimal goal point determination algorithm for automatic navigation of agricult…

4款AI生成PPT工具推荐,提升工作效率

在如今的工作环境中&#xff0c;PPT制作是许多技术人员不可避免的任务&#xff0c;尤其是在汇报、展示技术方案、以及项目进展时。随着AI技术的快速发展&#xff0c;使用AI生成PPT成为了提高效率的一种新趋势。本文将介绍几款适合程序员、技术人员的AI生成PPT工具&#xff0c;帮…

如何用 HAproxy 实施高可用部署 | OceanBase 实践

背景介绍 最近&#xff0c;我们部署了Oceanbase数据库&#xff08;以下简称OB&#xff09;&#xff0c;并将部分业务迁移至OB中运行。在部署过程中&#xff0c;我们虽然配置了3个OBProxy&#xff0c;但没有为它们设置高可用配置&#xff0c;应用被固定到某一个OBProxy 上&…

通信工程学习:什么是POS无源光分配器

POS&#xff1a;无源光分配器 POS&#xff08;Passive Optical Splitter&#xff0c;无源光分配器&#xff09;是无源光网络&#xff08;Passive Optical Network, PON&#xff09;中的一个重要组成部分&#xff0c;它位于光线路终端&#xff08;OLT&#xff09;和光网络单元&a…