首页 > 其他分享 >Pandas读取保存数据

Pandas读取保存数据

时间:2024-09-24 12:24:24浏览次数:3  
标签:10 读取 read 数据库 保存 df student sql Pandas

Pandas读取保存数据

学习目标

  • 能够使用Pandas读写文件中的数据
  • 知道Pandas读取数据时常用参数index_col、parse_dates、sheet_name、index的作用和用法
  • 知道Pandas和MySQL数据库进行读写交互的方法

1 读写文件

常用读写文件函数清单【查表】无需记忆

文件格式读取函数写入函数
xlsxpd.read_exceldf.to_excel
xlspd.read_exceldf.to_excel
csvpd.read_csvdf.to_csv
tsvpd.read_csvdf.to_csv
jsonpd.read_jsondf.to_json
htmlpd.read_htmldf.to_html
sqlpd.read_sqldf.to_sql

1.1 Excel文件

  • 保存数据

    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对象
    df = pd.DataFrame(data=data, columns=['id', 'name', 'birthday', 'age'])
    # 保存数据
    # sheet_name:表名
    # index:是否保存df行索引值
    # header:是否保存df列名
    df.to_excel('./output/student.xls', sheet_name='student', index=False, header=True)
    
  • 读取数据

    student = pd.read_excel('./output/student.xls')
    print(student)
    

1.2 CSV文件

  • 在CSV文件中,对于每一行,各列采用逗号,分隔;使用\n换行符换行
  • 除了逗号,还可以使用其他类型的分隔符,比如TSV文件,使用制表符\t作为分隔符
  • CSV是数据协作和共享的首选格式,因为可以使用excel工具打开
  • 保存数据

    # 默认保存行索引, 默认使用逗号作为分隔符
    df.to_csv('./output/student.csv')
    # index=False:不保存行索引
    df.to_csv('./output/student_noindex.csv', index=False)
    # sep='\t': 使用\t作为分隔符, 保存成tsv文件, 文件后缀为.tsv
    df.to_csv('./output/student.tsv', sep='\t')
    
  • 读取数据

    # 读取csv文件
    # index_col:通过列下标或列名指定某列为索引
    # parse_dates: 将指定列解析为日期时间类型, 通过列下标或列名指定列
    student = pd.read_csv('./output/student.csv', index_col=['Unnamed: 0'], parse_dates=['birthday'])
    print(student)
    student.info()
    # 读取tsv文件
    # sep:指定分隔符
    # parse_dates=True:将df的索引解析为日期时间类型
    student = pd.read_csv('./output/student.tsv', sep='\t', index_col=[3], parse_dates=True)
    print(student)
    print(student.index)
    
    # 输出结果如下
       id      name   birthday  age
    0   1      张三 1999-03-10   18
    1   2      李四 2002-03-10   15
    2   3      王五 1990-03-10   33
    3   4  隔壁老王 1983-03-10   40
    <class 'pandas.core.frame.DataFrame'>
    Int64Index: 4 entries, 0 to 3
    Data columns (total 4 columns):
     #   Column    Non-Null Count  Dtype         
    ---  ------    --------------  -----         
     0   id        4 non-null      int64         
     1   name      4 non-null      object        
     2   birthday  4 non-null      datetime64[ns]
     3   age       4 non-null      int64         
    dtypes: datetime64[ns](1), int64(2), object(1)
    memory usage: 160.0+ bytes
                Unnamed: 0  id      name  age
    birthday                                 
    1999-03-10           0   1      张三   18
    2002-03-10           1   2      李四   15
    1990-03-10           2   3      王五   33
    1983-03-10           3   4  隔壁老王   40
    DatetimeIndex(['1999-03-10', '2002-03-10', '1990-03-10', '1983-03-10'], dtype='datetime64[ns]', name='birthday', freq=None)
    

2 读写数据库

如果想利用pandas和MySQL数据库进行交互,需要先安装与数据库交互所需要的pymysqlsqlalchemy python包

虚拟机的python解析器已经安装好这两个包,无需重复安装

pip install pymysql

pip install sqlalchemy

2.1 保存数据

  • 准备要写入数据库的数据

    import pandas as pd 
    df = pd.read_csv('./output/student.csv', index_col=[0])
    print(df)
    
    # 输出结果如下
       id      name   birthday  age
    0   1      张三  1999-3-10   18
    1   2      李四  2002-3-10   15
    2   3      王五  1990-3-10   33
    3   4  隔壁老王  1983-3-10   40
    
  • 创建数据库操作引擎对象并指定数据库

    # 导入sqlalchemy的数据库引擎
    from sqlalchemy import create_engine
    
    # 创建数据库引擎,传入url规则的字符串
    engine = create_engine('mysql+pymysql://root:[email protected]:3306/test?charset=utf8')
    # mysql+pymysql://root:[email protected]:3306/test?charset=utf8
    # mysql 表示数据库类型
    # pymysql 表示python操作数据库的包
    # root:123456 表示数据库的账号和密码,用冒号连接
    # 192.168.88.100:3306/test 表示数据库的ip和端口,以及名叫test的数据库
    # charset=utf8 规定编码格式
    
  • 将数据写入MySQL数据库

    # df.to_sql()方法将df数据快速写入数据库, 表不存在时会自动创建
    df.to_sql(name='student', con=engine, index=False, if_exists='append')
    # name:数据表的名称
    # con:数据库交互引擎对象
    # index=False: 表示不将索引保存到数据表中
    # if_exists: 数据写入方式, append->追加写入 replace->覆盖写入
    

2.2 读取数据

  • 指定表名, 指定列名

    # sql:读取的表名
    # con:数据库交互引擎对象
    # columns:读取的列名
    student = pd.read_sql(sql='student', con=engine, columns=['id', 'name'])
    print(student)
    # pd.read_sql_table('student', con=engine, columns=['id', 'name'])
    
  • 使用SQL语句获取数据

    # sql:传入sql语句
    # con:数据库交互引擎对象
    student = pd.read_sql(sql='select * from student where age > 20', con=engine)
    print(student)
    # pd.read_sql_query(sql='select * from student where age > 20', con=engine)
    

总结

  • 写文件方法df.to_csv/excel('xxx.csv/xls')

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

    • index_col 指定索引列
      • index_col = [1] 列下标指定为索引
      • index_col = ['col_name'] 列名指定为索引
    • parse_dates 对指定列解析为时间日期类型
      • 将指定的列解析为时间日期类型
        • parse_dates=[1]通过列下标解析该列为时间日期类型
        • parse_dates=['col_name']通过列名解析该列为时间日期类型
      • parse_dates=True将df的索引解析为时间日期类型
    • pd.read_csv('xxx.tsv', sep='\t') 指定字符分隔符为\t读取tsv文件
  • Pandas和MySQL进行交互(读写)

    # 需要安装 pip istall pymysql
    # 需要安装 pip istall sqlalchemy
    # 导入sqlalchemy的数据库引擎
    from sqlalchemy import create_engine
    
    # 创建数据库引擎,传入url规则的字符串
    engine = create_engine('mysql+pymysql://root:[email protected]:3306/test?charset=utf8')
    # mysql+pymysql://root:[email protected]:3306/test?charset=utf8
    # mysql 表示数据库类型
    # pymysql 表示python操作数据库的包
    # root:123456 表示数据库的账号和密码,用冒号连接
    # 192.168.88.100:3306/test 表示数据库的ip和端口,以及名叫test的数据库
    # charset=utf8 规定编码格式
    
    # df.to_sql()方法将df数据快速写入数据库, 表不存在时会自动创建
    df.to_sql(name='student', con=engine, index=False, if_exists='append')
    # name:数据表的名称
    # con:数据库交互引擎对象
    # index=False: 表示不将索引保存到数据表中
    # if_exists: 数据写入方式, append->追加写入 replace->覆盖写入
    
    # sql:读取的表名
    # con:数据库交互引擎对象
    # columns:读取的列名
    student = pd.read_sql(sql='student', con=engine, columns=['id', 'name'])
    print(student)
    # pd.read_sql_table('student', con=engine, columns=['id', 'name'])
    
    # sql:传入sql语句
    # con:数据库交互引擎对象
    student = pd.read_sql(sql='select * from student where age > 20', con=engine)
    print(student)
    # pd.read_sql_query(sql='select * from student where age > 20', con=engine)
    

标签:10,读取,read,数据库,保存,df,student,sql,Pandas
From: https://blog.csdn.net/weixin_54514072/article/details/142486519

相关文章

  • 如何获取 YouTube 视频封面图,并保存
    获取YouTube视频封面其实很简单。你可以按照以下步骤操作:找到视频ID:在YouTube上打开你想要获取封面的视频,复制视频链接中的视频ID。例如,链接 https://www.youtube.com/watch?v=abc123 中,abc123 就是视频ID。构建封面URL:将视频ID插入到以下URL模板中:默认封......
  • 万象更新 Html5 - h5: h5 IndexedDB: 保存二进制数据
    源码https://github.com/webabcd/Html5作者webabcd万象更新Html5-h5:h5IndexedDB:保存二进制数据示例如下:h5\indexedDB\demo3.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>IndexedD......
  • i2c erproom 读取 ——i2cdetect i2cdump i2cget i2cset 使用方法
    i2cdetecti2cdumpi2cgeti2cset使用方法 1.打印使用说明 i2cdetect–help rk3568_r:/#i2cdetect--helpusage:i2cdetect[-ary]BUS[FIRSTLAST]usage:i2cdetect-FBUSusage:i2cdetect-lDetecti2cdevices.-a Alladdresses(0x00-0x7frathert......
  • Pandas -----------------------基础知识(三)
    dataframe添加列 删除行与列去重修改列自定义函数加载数据importpandasaspd#加载数据集./data/b_LJdata.csvdf=pd.read_csv('./data/b_LJdata.csv').head(10)dfdataframe添加列 在后面追加df['城市']='北京'dfdf['区县']=['朝阳区','......
  • Python中的文件读取艺术:从新手到高手的全面指南
    引言读取文件是任何编程语言中最基本也是最重要的功能之一。在日常开发工作中,我们常常需要处理各种类型的文件,如文本文件、CSV文件、JSON文件等。Python作为一门简洁易学的语言,在处理文件方面提供了非常强大的工具。无论是简单的日志分析、数据清洗还是复杂的机器学习任务,都能通过......
  • 信息学奥赛复赛复习01-CSP-J2019-01-字符、字符数组、字符串、string、字符串读取
    信息学奥赛复赛复习01-CSP-J2019-01-字符、字符数组、字符串、string、字符串读取PDF文档公众号回复关键字:2024092312019CSP-J题目1数字游戏[题目描述]小K同学向小P同学发送了一个长度为8的01字符串来玩数字游戏,小P同学想要知道字符串中究竟有多少个1。注......
  • Python 如何读取和写入文件
    Python如何读取和写入文件文件操作是编程中常见的任务,几乎所有编程语言都支持文件的读写功能。在Python中,文件操作简单直观,适用于从初学者到经验丰富的开发者。无论是处理小型文本文件,还是需要处理大型数据文件,Python提供了丰富的工具和方法来完成这些任务。本文将带......
  • wincc利用VBS脚本读取SQL数据库中的数值
    一、建立wincc项目变量建立的变量可以是内部变量,目的是为了用VBS脚本读写变量,跟SQL数据库里的变量建立链接。二、创建SQL数据库1、单击connect(连接)按钮,注意服务器的名称必须是XXX\WINCC的格式;这一步注意要看电脑里有没有安装数据库管理软件,没有的话需要安装一下,WINCC默认会......
  • EC2机器上MySQL8 修改关闭binlog以及修改保存时间
    从库清空binlog因为MySQL8.0要修改配置文件,在mysqld下面增加skip-log-bin,且需要重启,所以换种思路直接将其设置为3分钟。##单位秒setglobalbinlog_expire_logs_seconds=180;##flushlogs;showbinarylogs;##清理日志,别一下全删完了,删到倒数第二个purgebinarylogs......
  • 【项目实战】JAVA 项目使用 EasyExcel 读取和导入数据到项目中
    1、easyExcel引入依赖进入官网GetStarted就可以了。(官方文档简单好用,跟着走就可以了。)https://alibaba-easyexcel.github.io/index.html<!--easyExcel--><dependency><groupId>com.alibaba</groupId><artifactId>easye......