[黑马程序员Pandas教程]——Pandas读取保存数据

news2024/11/26 5:21:54

目录:

  1. 学习目标
  2. 读写文件
    1. 写文件
    2. 读取文件
      1. index_col参数指定索引
      2. parse_dates参数指定列解析为时间日期类型
      3. encoding参数指定编码格式
      4. 读取tsv文件
    3. Pandas读写文件小结
  3. 读写数据库
    1. 安装pymysql包
    2. 将数据写入数据库
    3. 从数据库中加载数据
  4. 总结
  5. 项目地址

1.学习目标

  • 能够使用Pandas读写文件中的数据

  • 知道Pandas读取数据时常用参数index_col、parse_dates、encoding的作用和用法

  • 知道Pandas和Mysql数据库做读写交互的方法

2.读写文件

文件格式读取函数写入函数
xlsxpd.read_exceldf.to_excel
xlspd.read_exceldf.to_excel
csvpd.read_csvdf.to_csv
tsvpd.read_csvdf.to_csv
jsonpd.read_jsonto_json
htmlpd.read_htmldf.to_html
sqlpd.read_sqldf.to_sql
剪贴板df.read_clipboarddf.to_clipboard

 

写文件
import pandas as pd

# 构造df数据集
df = pd.DataFrame(
    [
        ['1960-5-7', '刘海柱', '职业法师'],
        ['1978-9-1', '赵金龙', '大力哥'],
        ['1984-12-27', '周立齐', '窃格瓦拉'],
        ['1969-1-24', '于谦', '相声皇后']
    ],
    columns=['birthday', 'name', 'AKA']
)
print(df)

# 此时应该在运行代码的相同路径下就生成了一个名为“写文件.csv”的文件
df.to_csv('./datas/写文件.csv')

读取文件
import pandas as pd

df = pd.read_csv('./datas/写文件.csv')
print(df)
index_col参数指定索引

index_col参数可以在读文件的时候指定列作为返回dataframe的索引,两种用法如下

  • 通过列下标指定为索引

  • 通过列名指定为索引

  • 通过列下标指定为索引index_col=[列下标]

import pandas as pd

df = pd.read_csv('./datas/写文件.csv', index_col=[0])
print(df)
  • 通过列名指定为索引index_col=['列名']

import pandas as pd

df = pd.read_csv('./datas/写文件.csv', index_col=['Unnamed: 0'])
print(df)
  • 上述代码返回结果一致

parse_dates参数指定列解析为时间日期类型

parse_dates参数可以在读文件的时候解析时间日期类型的列,两种作用如下:

  • 将指定的列解析为时间日期类型

    • 通过列下标解析该列为时间日期类型

    • 通过列名解析该列为时间日期类型

  • 将df的索引解析为时间日期类型

  • 通过列下标解析该列为时间日期类型parse_dates=[列下标]

import pandas as pd

print(pd.read_csv('./datas/写文件.csv').info())
print(pd.read_csv('./datas/写文件.csv', parse_dates=[1]).info())
  • 通过列名解析该列为时间日期类型parse_dates=[列名]

import pandas as pd

print(pd.read_csv('./datas/写文件.csv').info())
print(pd.read_csv('./datas/写文件.csv', parse_dates=['birthday']).info())
  • 将df的索引解析为时间日期类型parse_dates=True

import pandas as pd

df = pd.read_csv('./datas/写文件.csv', index_col=[1], parse_dates=True)
print(df)
print(df.index)
encoding参数指定编码格式
  • 字符是有编码格式的,常见的编码格式有:ASCII、GB2312、UTF8;关于编码和编码格式课后阅读百度百科https://baike.baidu.com/item/标准编码格式
  • 运行下面的代码会报错,因为pandas在读取文件时,默认认为数据文件的编码格式是UTF8,但1960-2019全球GDP数据.csv这个文件的编码格式是GBK

pd.read_csv('../数据集/1960-2019全球GDP数据.csv') # 报错 UnicodeDecodeError: 'utf-8' codec can't decode ...
  • 所以我们在读取这个文件的时候就需要指定编码格式为encoding='gbk'

import pandas as pd

# print(pd.read_csv('../datas/data_set/1960-2019全球GDP数据.csv').head())
print(pd.read_csv('../datas/data_set/1960-2019全球GDP数据.csv', encoding='gbk').head())

 

读取tsv文件
  • tsv文件:特殊的csv文件,以\t作为字符分隔符(csv文件是以半角逗号,作为字符分隔符的),文件扩展名为.tsv
  • 还是使用pd.read_csv()函数读取tsv文件,需要使用参数sep='\t'来指定字符分隔符

import pandas as pd

print(pd.read_csv('../datas/data_set/tsv示例文件.tsv', sep='\t', index_col=[0]))

 

Pandas读写文件小结
  • 写文件方法df.to_csv('xxx.csv')

  • pd.read_csv()读取文件,常用参数如下

    • index_col 指定索引列

      • index_col = [1] 列下标指定为索引

      • index_col = ['col_name'] 列名指定为索引

    • parse_dates 对指定列解析为时间日期类型

      • 将指定的列解析为时间日期类型

        • parse_dates=[1]通过列下标解析该列为时间日期类型

        • parse_dates=['col_name']通过列名解析该列为时间日期类型

      • parse_dates=True将df的索引解析为时间日期类型

    • encoding='gbk'参数指定编码格式

    • pd.read_csv('xxx.tsv', sep='\t') 指定字符分隔符为\t读取tsv文件

3.读写数据库

  • 以MySQL数据库为例,此时默认你已经在本地安装好了MySQL数据库。如果想利用pandas和MySQL数据库进行交互,需要先安装与数据库交互所需要的python包
安装pymysql包
pip install pymysql==1.0.2
将数据写入数据库
import pandas as pd

df = pd.read_csv('../datas/data_set/tsv示例文件.tsv', sep='\t', index_col=[0])
print(df)


# 创建数据库操作引擎对象并指定数据库
# 需要安装pymysql,部分版本需要额外安装sqlalchemy
# 导入sqlalchemy的数据库引擎
from sqlalchemy import create_engine

# 创建数据库引擎,传入url规则的字符串
engine = create_engine('mysql+pymysql://root:666666@127.0.0.1:3308/test?charset=utf8')
# mysql+pymysql://root:chuanzhi@127.0.0.1:3306/test?charset=utf8
# mysql 表示数据库类型
# pymysql 表示python操作数据库的包
# root:chuanzhi 表示数据库的账号和密码,用冒号连接
# 127.0.0.1:3306/test 表示数据库的ip和端口,以及名叫test的数据库
# charset=utf8 规定编码格式

# 将数据写入MySQL数据库
# df.to_sql()方法将df数据快速写入数据库
df.to_sql('test_pdtosql', engine, index=False, if_exists='append')
# 第一个参数为数据表的名称
# 第二个参数engine为数据库交互引擎
# index=False 表示不添加自增主键
# if_exists='append' 表示如果表存在就添加,表不存在就创建表并写入

  • 此时我们就可以在本地test库的test_pdtosql表中看到写入的数据

 

从数据库中加载数据
  • 读取整张表,返回dataframe

import pandas as pd
from sqlalchemy import create_engine

# 创建数据库引擎,传入url规则的字符串
engine = create_engine('mysql+pymysql://root:666666@127.0.0.1:3308/test?charset=utf8')

# 指定表名,传入数据库连接引擎对象
print(pd.read_sql('test_pdtosql', engine))
  • 使用SQL语句获取数据,返回dataframe

import pandas as pd
from sqlalchemy import create_engine

# 创建数据库引擎,传入url规则的字符串
engine = create_engine('mysql+pymysql://root:666666@127.0.0.1:3308/test?charset=utf8')

# 传入sql语句,传入数据库连接引擎对象
print(pd.read_sql('select name,AKA from test_pdtosql', engine))

 

4.总结

  • df.to_csv('xxx.csv') 写文件

  • pd.read_csv() 读取文件,常用参数如下

    • index_col 指定索引列

      • index_col = [1] 列下标指定为索引

      • index_col = ['col_name'] 列名指定为索引

    • parse_dates 对指定列解析为时间日期类型

      • 将指定的列解析为时间日期类型

        • parse_dates=[1]通过列下标解析该列为时间日期类型

        • parse_dates=['col_name']通过列名解析该列为时间日期类型

      • parse_dates=True将df的索引解析为时间日期类型

    • encoding='gbk'参数指定编码格式

    • pd.read_csv('xxx.tsv', sep='\t') 指定字符分隔符为\t读取tsv文件

  • Pandas和Mysql进行交互(读写)

 

# 需要安装 pip istall pymysql
# 可能需要额外安装 pip istall sqlalchemy
# 导入sqlalchemy的数据库引擎
from sqlalchemy import create_engine

# 创建数据库引擎,传入uri规则的字符串
engine = create_engine('mysql+pymysql://root:chuanzhi@127.0.0.1:3306/test?charset=utf8')
# mysql+pymysql://root:chuanzhi@127.0.0.1:3306/test?charset=utf8
# mysql 表示数据库类型
# pymysql 表示python操作数据库的包
# root:chuanzhi 表示数据库的账号和密码,用冒号连接
# 127.0.0.1:3306/test 表示数据库的ip和端口,以及名叫test的数据库
# charset=utf8 规定编码格式

# df.to_sql()方法将df数据快速写入数据库
df.to_sql('test_pdtosql', engine, index=False, if_exists='append')
# 第一个参数为数据表的名称
# 第二个参数engine为数据库交互引擎
# index=False 表示不添加自增主键
# if_exists='append' 表示如果表存在就添加,表不存在就创建表并写入

# 指定表名,传入数据库连接引擎对象
pd.read_sql('test_pdtosql', engine)
# 传入sql语句,传入数据库连接引擎对象
pd.read_sql('select name,AKA from test_pdtosql', engine)

5.项目地址

Python: 66666666666666 - Gitee.com

 

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

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

相关文章

吊打Fast Request还免费? 这款插件真心好用!

今天给大家推荐一款IDEA插件:Apipost Helper,比Fast Request更好用并且完全免费!三大亮点功能:写完代码IDEA内一键生成API文档;写完代码IDEA内一键调试,;生成API目录树,双击即可快速…

keil5暗色主题配置

在keil文件目录下找到global.prop 将以下内容替换至该文件即可 # properties for all file types indent.automatic1 virtual.space0 view.whitespace0 view.endofline0 code.page0 caretline.visible0 highlight.matchingbraces1 print.syntax.coloring1 use.tab.color1 crea…

PostgreSQL基本操作

目录 1.源码安装PostgreSQL 1.1.前置条件(root下操作) 1.1.1.卸载yum安装的postgresql 1.1.2.创建postgres用户 1.1.3.安装部分依赖 1.1.4.源码安装uuid 1.2.安装PostgreSQL 1.2.1.使用postgres用户管理PostgreSQL 1.2.2.下载解压postgres12源码…

【算法每日一练]-图论(保姆级教程 篇1(模板篇)) #floyed算法 #dijkstra算法 #spfa算法

今天开始讲图论 目录 图的存储 算任意两点的最短路径: floyed算法: 算一个点到其他所有点的最短距离 dijkstra算法: spfa算法: 图的存储 其实:邻接矩阵和链式向前星都能存边的信息,vector只能存点的信息,再搭配上v[]…

【JUC】四、可重入锁、公平锁、非公平锁、死锁现象

文章目录 1、synchronized2、公平锁和非公平锁3、可重入锁4、死锁 1、synchronized 写个demo,具体演示下对象锁与类锁,以及synchronized同步下的几种情况练习分析。demo里有资源类手机Phone,其有三个方法,发短信和发邮件这两个方…

加速可编程创新,2023年英特尔FPGA中国技术日披露全矩阵FPGA产品与应用方案

在新场景、新应用海量增长的驱动下,中国本地市场对于FPGA产品的需求也在日益多元化和快速扩展。我们始终致力于以中国客户的实际需求为导向,基于领先的FPGA产品和软件为千行百业提供全场景的解决方案。——叶唯琛 英特尔可编程方案事业部中国总经理 今日…

智能运维软件,提升效率的利器

随着信息技术的飞速发展,企业对于IT系统的依赖程度日益加深。为保障IT系统的稳定运行,越来越多的企业选择智能运维管理软件,以全面高效的监控和管理系统和资产情况。 一、运维监控平台的重要性 无监控,不运维。将资产并入监控系…

盘点72个ASP.NET Core源码Net爱好者不容错过

盘点72个ASP.NET Core源码Net爱好者不容错过 学习知识费力气,收集整理更不易。 知识付费甚欢喜,为咱码农谋福利。 链接:https://pan.baidu.com/s/1nlQLLly_TqGrs5O8eOmZjA?pwd8888 提取码:8888 项目名称 (Chinese) 物业收费…

敏捷开发中如何写好用户故事

写好用户故事是敏捷开发中非常重要的一环,它们是描述用户需求的核心。以下是一些关于如何编写优秀用户故事的建议: 使用标准模板: 一个常用的用户故事模板是“As a [用户角色],I want [功能],so that [价值]”。这种模…

flutter下拉列表

下拉列表 内容和下拉列表的标题均可滑动 Expanded: 内容限制组件,将其子类中的无限扩展的界面限制在一定范围中。在此使用,是为了防止下拉列表中的内容超过了屏幕限制。 SingleChildScrollView: 这个组件,从名字中可…

JavaScript中的原型和原型链

给大家推荐一个实用面试题库 1、前端面试题库 (面试必备) 推荐:★★★★★ 地址:web前端面试题库 原型和原型链是JavaScript中一个重要且常常被误解的概念。它们在理解对象、继承和属性查找时扮演着关键的角色。 1…

智慧城市项目建设介绍

1. 项目建设背景 随着城市化进程的加速,城市发展面临着诸多挑战,如环境污染、城镇综合管理、经济发展布局等。为了应对这些挑战,智慧城市应运而生,成为城市发展的重要方向。智慧城市通过运用信息技术和智能化技术,实…

腾讯云标准型S5服务器五年优惠价格表(4核8G和2核4G)

腾讯云服务器网整理五年云服务器优惠活动 txyfwq.com/go/txy 配置可选2核4G和4核8G,公网带宽可选1M、3M或5M,系统盘为50G高性能云硬盘,标准型S5实例CPU采用主频2.5GHz的Intel Xeon Cascade Lake或者Intel Xeon Cooper Lake处理器,…

(六)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB

一、七种算法(DBO、LO、SWO、COA、LSO、KOA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁…

libgdx实现雪花、下雪效果(二十三)

libgdx实现雪花、下雪效果(二十三) 转自:https://lingkang.top/archives/libgdx-shi-xian-xue-hua package effect;import com.badlogic.gdx.ApplicationAdapter; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.backends.lwjgl3.…

腾讯云4核8G和2核4G服务器五年优惠价格表

腾讯云百科整理五年云服务器优惠活动 txybk.com/go/txy 配置可选2核4G和4核8G,公网带宽可选1M、3M或5M,系统盘为50G高性能云硬盘,标准型S5实例CPU采用主频2.5GHz的Intel Xeon Cascade Lake或者Intel Xeon Cooper Lake处理器,睿频3…

【C++】join ()和detach ()函数详解和示例

简单的来说,join ()方法建立的线程具有阻碍作用,该线程不结束,另一些函数就无法运行。detach ()方法建立的线程,可以和另一些函数同时进行。下面以示例进行详细说明,以帮助大家理解和使用。 目录 join ()detach () jo…

Java —— 继承

目录 1. 为什么需要继承 2. 继承概念 3. 继承的语法 4. 父类成员访问 4.1 子类中访问父类的成员变量 1. 子类和父类不存在同名成员变量 2. 子类和父类成员变量同名 4.2 子类中访问父类的成员方法 1. 成员方法名字不同 2. 成员方法名字相同 5. super关键字 6. 子类构…

腾讯云CVM服务器5年可选2核4G和4核8G配置

腾讯云服务器网整理五年云服务器优惠活动 txyfwq.com/go/txy 配置可选2核4G和4核8G,公网带宽可选1M、3M或5M,系统盘为50G高性能云硬盘,标准型S5实例CPU采用主频2.5GHz的Intel Xeon Cascade Lake或者Intel Xeon Cooper Lake处理器,…

市场行情回暖、利好月来袭,Web3 广告业领头羊 Verasity 或迎爆发

随着区块链技术的普及和发展,越来越多的行业正在被区块链技术所重塑,例如金融、游戏行业等,而数字广告行业的结构和运作方式也正在被区块链技术所重塑。 众所周知,传统数字广告行业往往存在着信息不对称、广告欺诈、数字隐私等问题…