pandas追加写入excel_pandas数据读取

今天呢就给大家分享一个数据分析里面的基础内容之pandas数据读取

数据读取是进行数据预处理,建模与分析的前提,不同的数据源,需要使用不同的函数读取,pandas内置了10余种数据源读取函数和对应的数据写入函数,常见的数据源有3种,分别是数据库数据,文本文件(包含一般文本文件和CSV文件)和Excel文件,掌握这三种数据源读取方法,便能够完成80%左右的数据读取工作。下面我们具体瞅瞅;

读/写数据库数据

在生产环境中,绝大多数的数据都存储在数据库中,pandas提供了读取与存储关系型数据库数据的函数和方法,除pandas库外,还需要使用SQLAlchemy库建立对应的数据库连接,SQLAlchemy配合相应数据库的python连接工具(如,mysql数据库需要安装mysqlclient或者pymysql库,Oracle数据库需要安装cx_oracle库),使用create_engine函数建立一个数据库连接,pandas支持mysql,postgtrsql,Oracle,Sql server和SQLite等主流数据库,下面将以mysql数据库为例,介绍pandas数据库数据得到读取与存储。

数据库数据读取

pandas实现数据库数据读取有三个函数,read_sql,read_sql_table和read_sql_query,read_sql_table只能读取数据库的某一个表格,不能实现查询的操作,read_sql_query则只能实现查询操作,不能直接读取数据库中的某个表,read_sql是俩者的结合,既能够读取数据库中的某一个表,也能够实现查询操作。

三个函数的语法如下

#导入相关的包from sqlalchemy import create_engineimport pandas as pdpd.read_sql_table(table_name,con, schema=None, index_col=None, coerce_float=True, parse_dates=None,columns=None, chunksize=None)pd.read_sql_query(sql, con, index_col=None,coerce_float=True, params=None, parse_dates=None,chunksize=None)pd.read_sql(sql, con, index_col=None, coerce_float=True,params=None, parse_dates=None, columns=None, chunksize=None)

SQLAlchemy连接数据库的代码如下:

from sqlalchemy import create_engine#创建一个mysql连接器,用户名为root,密码为1234#地址为127.0.0.1.数据库名称为testdb,编码为utf-8#注意实验时请填写自己的数据库信息engine = create_engine('mysql+pymysql://root:1234@127.0.0.1:3306/testdb?charset=utf8')print(engine)

在create_engine中输入的是一个连接字符串,在使用python的sqlAlchemy时,mysql和oracle数据库连接字符串的格式如下:

数据库产品名+连接工具名://用户名:密码@数据库ip地址:数据库端口号/数据库名称?charset=数据库数据编码

上述三种函数参数及其重要参数说明

sql or table_name

接受string,表示读取的数据的表名或者sql语句无默认

con

接受数据库连接,表示数据库连接信息,无默认

index_col

接受int,sequence或者False,表示设定的列作为行名,如果是一个数列,则是多重索引,默认为None

coerce_float

接受boolean,将数据库中的decimal类型的数据转换为pandas中的float64类型的数据,默认为True

columns

接受int,表示读数据的列明,默认为None

使用read_sql_table,read_sql_query,read_sql函数读取数据库数据;

from sqlalchemy import create_engineimport pandas as pdengine =create_engine('mysql+pymysql://root:Huawei12#$@192.168.1.45:3306/example?charset=utf8')print(engine)#打印结果如下#Engine(mysql+pymysql://root:***@192.168.1.45:3306/example?charset=utf8)#使用read_sql_query查看example中的数据表数目formlist =pd.read_sql_query('show tables',con=engine)print('example数据库中的表清单为:\n',formlist)

                             7e6901a26ffbf9ba5ea1e76a6fe4a038.png

#使用read_sql_table读取订单详情表atail1 = pd.read_sql_table('meal_order_detail1',con=engine)print('使用read_sql_table读取订单表的长度为:',len(datail1))

67e9c9510314d84ef74418358e25b24f.png

51602541117bf77cb6d766836c490e36.png

#使用read_sql读取订单详情表detail2 = pd.read_sql('select * frommeal_order_detail2',con=engine)print('使用read_sql函数+SQL语句读取的订单详情表长度为:',len(detail2))detail3 =pd.read_sql('meal_order_detail3',con=engine)print('使用read_sql函数+表格名称读取的订单详情表的长度为:',len(detail3))

755916626fb185b62ce0fbe96d276de9.png

数据库数据存储

将DataFrame写入数据库中,同样也要依赖SQLALchemy库的create_engine函数创建数据库连接,数据库数据读取有3个函数,但数据存储则只有一个to_sql方法,用例如下:

df.to_sql(name,con,schema=None,if_exists='fail',index=True,index_label=None,dtype=None)

to_sql方法常用参数及说明

name

接收string,代表数据库表明,无默认

con

接收数据库连接,无默认

if_exists

接收fail,replace和append,fail表示如果表名存在,则不执行写入操作,replace表示如果存在,则将原数据库表删除,在重新创建,append则表示在原数据表的基础上追加数据,默认为fail

index

接收boolean,表示是否将行索引作为数据传入数据库,默认为True

index_label

接收string或者sequence,代表是否引用所用名称,如果index参数为True,此参数为None,则使用默认名称,如果为多重索引,则必须使用sequence形式,默认为None

dtype

接收dict,代表写入的数据类型(列明为key,数据格式为values),默认为None

使用to_sql方法写入数据

#使用to_sql存储orderDatadatail1.to_sql('test1',con=engine,index=False,if_exists='replace')#使用read_sql读取test表formlist1= pd.read_sql_query('show tables',con=engine)print('新增一个表格后,example数据库表清单为:\n',formlist1)

c2ecaefe6eb5f35d7394f9a53419a5db.png

读写文本文件

文本文件是一种由若干行字符构成的计算机文件,他是一种典型的顺序文件,CSV是一种用分隔符分割的文件格式,因为其分隔符不一定是逗号,因此又称为字符分隔文件,文件以纯文本形式存储表格数据,他是一种通用,相对简单的文件格式,最广泛的应用是在程序之间转义表格数据,而这些程序本身是在不兼容的格式上进行操作的,因为大量程序都支持CSV或者其变体,因此可以作为大多数程序的输入和输出格式。

文本文件读取

pandas提供了read_table来读取文本文件,提供了read_csv函数来读取CSV文件,二者语法如下:

ee8ddeba7590242c02b6ee3d45d0f210.png

read_table和read_csv常用参数及其说明

参数名称

说明

filepath

接受string,代表文件路径,无默认

sep

接受string,代表分隔符,read_csv默认为“,”,read_table默认为制表符“tab”

header

接受int或sequence表示将某行数据作为列明,默认为诶infer,表示自动识别

names

接受aray,表示列明,默认为None

index_col

接受int,sequence或False,表示索引列的位置,取值为sequence则代表多重索引,默认为None

dtype

接收dict,代表写入的数据类型(列明为key,数据格式为values),默认为None

engine

接受c或者python,代表数据解析引擎,默认为c

nrows

接受int,表示读取前n行,默认为None

使用read_table和read_csv函数读取菜品订单信息表

#使用read_table读取菜品订单信息表# order = pd.read_table('../Python数据分析与应用/第4章/任务程序/data/meal_order_info.csv',sep=',',encoding='gbk')#len(order)

fa09ba4f85c0af87f8e161f08b3d2b34.png

在读取过程中,有时候你会遇到这种报错,莫得荒,我也不知道为啥,但是我们可以通过读取文件的方式读取文本,如下:

f=open('../meal_order_info.csv')order=pd.read_table(f,sep=',',encoding='utf-8')len(order)order1 = pd.read_csv('../meal_order_info.csv',encoding='utf-8',engine='python')len(order1)

更改参数读取表的订单信息

f=open('../meal_order_info.csv')order2=pd.read_table(f,sep=';',encoding='utf-8')order3 = pd.read_csv('../meal_order_info.csv',encoding='gbk',header=None,engine='python')len(order3)

文本文件存储

文本文件的存储和读取类似,对于结构化数据,可以通过pandas中的to_csv函数实现,常用参数与语法如下:

to_csv(path_or_buf=None, sep=',', na_rep='',float_format=None, columns=None, header=True, index=True, index_label=None,mode='w', encoding=None, compression=None, quoting=None, quotechar='"',line_terminator='\n', chunksize=None, tupleize_cols=None, date_format=None,doublequote=True, escapechar=None, decimal='.')

to_csv函数的常用参数及其说明

参数名称

说明

path_or_buf

接受string,代表文件路径,无默认

sep

接受string,代表分隔符,默认为逗号

na_rep

接受string,代表缺失值,默认为“”

columns

接受list,代表写出的列名,默认为“”

header

接受boolean,代表是否将列明写出,默认为True

index

接受布尔,代表是否将行名(索引)写出,默认为True

index_label

接受sequence。代表索引名,默认为None

mode

接受特定的string,代表数据写入模式,默认为w

encoding

代表文件的编码格式

使用to_csv函数将数据写入CSV文件中

#将order以csv格式存储order.to_csv('../tmp/orderInfo.csv',sep=';',index=False)os.listdir('../tmp')

ffd6fda24d4b3b2ea5580b449d0f7a25.png

读写Excel文件

Excel是微软公司的办公软件Microsoft office的组件之一,他可以对数据进行处理,统计分析等操作,广泛的应用与管理,财经和金融等众多领域。

Excel文件读取

pandas提供了read_excel函数来读取"xls",“xlsx”俩种excel文件,其语法如下:

pd.read_excel(io, sheet_name=0, header=0, names=None,index_col=None, usecols=None, squeeze=False, dtype=None, engine=None,converters=None, true_values=None, false_values=None, skiprows=None,nrows=None, na_values=None, parse_dates=False, date_parser=None,thousands=None, comment=None, skipfooter=0, convert_float=True, **kwds)

read_excel该函数常用参数及其说明

参数名称

说明

io

接收string,表示文件路径,无默认

sheetname

接收string,int,代表Execl表内数据的分表位置,默认为0

header

接受int或sequence,表示将某行数据作为列明,取值为int的时候,代表将列作为列名,取值为sequence,则代表多重索引,默认为infer,表示自动识别

names

接受array,表示列明,默认为None

index_col

接受int,sequence或者false,表示索引列的位置,取值sequence嗲表多重索引,默认为None

dtype

接受dict,代表写入的数据类型

使用read_excel函数读取菜品订单信息表

user = pd.read_excel('../users.xlsx')len(user)user

b2d9aa716f0b5940e7d9839d301e559c.png

Excel文件存储

将文件存储为Excel文件,可以使用to_excel函数,其语法格式如下:

to_excel(excel_writer, sheet_name='Sheet1', na_rep='',float_format=None, columns=None, header=True, index=True, index_label=None,startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None,inf_rep='inf', verbose=True, freeze_panes=None)使用to_execl函数将数据存储为Excel文件user.to_excel('../tmp/userInfo.xlsx',sheet_name='Sheet3')os.listdir('../tmp')

嗯,这就是我们常用到的pandas读取文件的一些操作,貌似没什么难的,孰能生巧就可,下篇文章为大家分享pandas的常用操作,祝大家一臂之力登上数据分析的神坛。

哦,对啦,该篇文章的素材直接来源为网络《python数据分析》

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值