赞
踩
目录
数据的读取是进行数据预处理、数据建模和分析的基础。
对于不同的数据文件,pandas提供了不同函数进行读取。
pandas内置了10余种读写函数。
常见的数据文件格式有3种形式,分别是CSV文件、Excel文件和数据库。
pandas提供了read_csv函数来读取csv文件。
pandas.read_csv(filepath_or_buffer, sep='\t', header='infer', names=None, index_col=None, dtype=None, engine=None, nrows=None)
- # 代码2-1
- # 使用read_csv读取销售流水记录表
- import pandas as pd
- data1 = pd.read_csv('../data/销售流水记录1.csv', encoding='gb18030')
- print('使用read_csv读取的销售流水记录表的长度为:', len(data1))
-
-
-
- # 代码2-2
- # 使用read_csv读取销售流水记录表, header=None
- data2 = pd.read_csv('../data/销售流水记录2.csv', header=None, encoding='gb18030')
- print('使用read_csv读取的销售流水记录表的长度为:', len(data2))
- print('列名为None时订单信息表为:')
- data2.iloc[0:5,0:4]
-
- # 使用utf-8解析销售流水记录表
- data3 = pd.read_csv('../data/销售流水记录2.csv', header=None, encoding='utf-8')
文本文件的存储和读取类似,结构化数据可以通过pandas中的to_csv函数实现以csv文件格式存储文件。
DataFrame.to_csv(path_or_buf=None, sep=',', na_rep='', columns=None, header=True, index=True, index_label=None, mode='w', encoding=None)
- # 代码2-3
- import os
- print('销售流水记录表写入文本文件前目录内文件列表为:\n', os.listdir('../tmp'))
- data1.to_csv('../tmp/SaleInfo.csv', sep=';', index=False) # 将data1以CSV格式存储
- print('销售流水记录表表写入文本文件后目录内文件列表为:\n', os.listdir('../tmp'))
pandas提供了read_excel函数来读取“xls”“xlsx”两种Excel文件。
pandas.read_excel(io, sheetname=0, header=0, index_col=None, names=None, dtype=None)
- # 代码2-4
- data3 = pd.read_excel('../data/折扣信息表.xlsx') # 读取折扣信息表的数据
- print('data3信息长度为:', len(data3))
将文件存储为Excel文件,可以使用to_excel方法。其语法格式如下。
DataFrame.to_excel(excel_writer=None, sheetname=None, na_rep='', header=True, index=True, index_label=None, mode='w', encoding=None)
to_excel函数和to_csv函数的常用参数基本一致,区别之处在于指定存储文件的文件路径参数名称为excel_writer,并且没有sep参数。
此外,还增加了一个sheetnames参数,用于指定存储的Excel Sheet的名称,默认为sheet1。
- # 代码2-5
- print('data3写入Excel文件前目录内文件列表为:\n', os.listdir('../tmp'))
- data3.to_excel('../tmp/data_save.xlsx')
- print('data3写入Excel文件后目录内文件列表为:\n', os.listdir('../tmp'))
pandas提供了读取与存储关系型数据库数据的函数与方法。除了pandas库外,还需要使用SQLAlchemy库建立对应的数据库连接。SQLAlchemy配合相应数据库的Python连接工具,使用create_engine函数,建立一个数据库连接。
creat_engine中填入的是一个连接字符串。在使用Python的SQLAlchemy时,MySQL和Oracle数据库连接字符串的格式如下:
数据库产品名+连接工具名://用户名:密码@数据库IP地址:数据库端口号/数据库名称?charset = 数据库 数据编码
read_sql_table只能够读取数据库的某一个表格,不能实现查询的操作。
pandas.read_sql_table(table_name, con, schema=None, index_col=None, coerce_float=True, columns=None)
read_sql_query则只能实现查询操作,不能直接读取数据库中的某个表。
pandas.read_sql_query(sql, con, index_col=None, coerce_float=True)
read_sql是两者的综合,既能够读取数据库中的某一个表,也能够实现查询操作。
pandas.read_sql(sql, con, index_col=None, coerce_float=True, columns=None).
- # 代码2-6
- import pandas as pd
- import sqlalchemy
- # 创建一个mysql连接器,用户名为root,密码为123456
- # 地址为127.0.0.1,数据库名称为test
- sqlalchemy_db = sqlalchemy.create_engine(
- 'mysql+pymysql://root:123456@127.0.0.1:3306/test')
- print(sqlalchemy_db)
-
-
-
- # 代码2-7
- import pandas as pd
- # 使用read_sql_query函数查看test中的数据表数目
- formlist = pd.read_sql_query('show tables', con=sqlalchemy_db)
- print('testdb数据库数据表清单为:', '\n', formlist)
-
- # 使用read_sql_table函数读取销售流水记录表sale2
- detail1 = pd.read_sql_table('sale2', con=sqlalchemy_db)
- print('使用read_sql_table读取销售流水记录表的长度为:', len(detail1))
-
- # 使用read_sql函数读取销售流水记录表
- detail2 = pd.read_sql('select * from sale2', con=sqlalchemy_db)
- print('使用read_sql函数 + sql语句读取销售流水记录表的长度为:', len(detail2))
- detail3 = pd.read_sql('sale2', con=sqlalchemy_db)
- print('使用read_sql函数+表格名称读取的销售流水记录表的长度为:', len(detail3))
将DataFrame数据写入数据库中,同样也要依赖SQLAlchemy的数据库连接。数据库数据读取有3个函数,但数据存储则只有一个to_sql()方法。
DataFrame.to_sql(name, con, schema=None, if_exists='fail', index=True, index_label=None, dtype=None)
- # 代码2-8
- # 使用to_sql方法存储orderData
- detail1.to_sql('sale_copy', con=sqlalchemy_db, index=False, if_exists='replace')
- # 使用read_sql读取test表格
- formlist1 = pd.read_sql_query('show tables', con=sqlalchemy_db)
- print('新增一个表格后test数据库数据表清单为:', '\n', formlist1)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。