pandas是Python的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。
pandas建造在NumPy之上,所以使得pandas在以NumPy为中心的应用中得以容易的使用,而pandas库在与其它第三方科学计算支持库结合时也能够完美的进行集成。
在Python中,pandas库的功能十分强大,它可提供高性能的矩阵运算。 - 可用于数据挖掘和数据分析,同时也提供数据清洗功能; - 支持类似SQL的数据增、删、查、改,并且带有丰富的数据处理函数; - 支持时间序列分析功能;支持灵活处理缺失数据等。
pandas有两个强大的利器。
文本文件是一种由若干行字符构成的计算机文件,它是一种典型的顺序文件。
CSV是一种用分隔符分隔的文件格式,因为其分隔符不一定是逗号,所以又被称为字符分隔文件。
文本文件以纯文本形式存储表格数据(数字和文本),它是一种通用、相对简单的文件格式,最广泛的应用是在程序之间转移表格数据,而这些程序本身是在不兼容的格式上进行操作的(往往是私有的、无规范的格式)。
大量程序都支持CSV或其变体,所以CSV或其变体可以 作为大多数程序的标准输入和输出格式。
1).文本文件读取
CSV文件根据其定义也是一种文本文件。在数据读取过程中可以使用文本文件的读取函数对CSV文件进行读取。同时,如果文本文件是字符分隔文件,那么可以使用读取CSV文件的函数进行读取。
pandas提供了read_table()函数读取文本文件,提供了read_csv()函数读取CSV文件。
pandas.read_table(filepath_or_buffer, sep=<no_default>, header='infer', names=<no_default>, index_col=None, dtype=None, engine=None, nrows=None, skiprows=None)
pandas.read_csv(filepath_or_buffer, sep=<no_default>, header='infer', names=<no_default>, index_col=None, dtype=None, engine=None, nrows=None, skiprows=None)
read_table()函数和read_csv()函数应注意以下事项。
2).文本文件存储
文本文件的存储和读取类似,对于结构化数据,可以通过pandas库中的to_csv()方法实现以CSV文件格式存储。
to_csv()函数同样具有许多参数,如果有多个<expression>,那么表达式之间用逗号隔开,基本使用格式如下。
DataFrame.to_csv(path_or_buf=None, sep=',', na_rep='', columns=None, header=True, index=True, index_label=None, mode='w', encoding=None)
Excel是微软公司的办公软件Microsoft Office的组件之一,它可以对数据进行处理、统计分析等操作,广泛地应用于管理、财经和金融等众多领域,其文件保存依照程序版本的不同分为以下两种。 - Microsoft Office Excel 2007之前的版本(不包括2007)默认保存的文件扩展名为.xls。 - Microsoft Office Excel 2007之后的版本默认保存的文件扩展名为.xlsx。
pandas库提供了read_excel()函数读取“xls”和“xlsx”两种Excel文件,基本使用格式如下。
pandas.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, dtype=None, skiprows=None)
将数据存储至Excel,可以使用to_excel()方法,基本使用格式如下。
DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', columns=None, header=True, index=True, index_label=None, encoding=None)
在生产环境中,绝大多数的数据都存储在数据库中。pandas库提供了读取与存储关系型数据库数据的函数与方法。除了pandas库外,还需要使用SQLAlchemy库建立对应的数据库连接。
pandas支持MySQL、postgresql、Oracle、SQL Server和SQLite等主流数据库。
SQLAlchemy是配合相应数据库的Python连接工具。 - MySQL数据库需要安装mysqlclient或pymysql库。 - Oracle数据库需要安装cx_oracle库。 - 使用create_engine()函数,建立一个数据库连接。
1).数据库数据读取
pandas可实现数据库数据的读取,但前提是读者在进行读取操作前确保已安装数据库,并且数据库可以正常打开及使用。进行数据库的读取可利用3种函数进行操作。 - read_sql_table()函数只能读取数据库的某一个表格,不能实现查询的操作。 - read_sql_query()函数则只能实现查询操作,不能直接读取数据库中的某个表。 - read_sql()函数是两者的综合,既能够读取数据库中的某一个表,也能够实现查询操作。
在读取数据库数据前,需要先创建数据库连接。Python提供了SQLAlchemy库的create_engine函数用于创建数据库连接,在creat_engine函数中输入的是一个连接字符串。在使用Python的SQLAlchemy时,MySQL和Oracle数据库连接字符串的格式如下。
数据库产品名+连接工具名://用户名:密码@数据库IP地址:数据库端口号/数据库名称?charset = 数据库数据编码
例如:
engine = create_engine('mysql+pymysql://root:root@127.0.0.1:3306/testdb?charset=utf8')
2).数据库数据存储
将DataFrame写入数据库中,同样也要依赖SQLAlchemy库的create_engine函数创建数据库连接。数据库数据读取有3个函数,但数据存储则只有一个to_sql()方法。
to_sql()方法的基本使用格式如下。
DataFrame.to_sql(name, con, schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, dtype=None, method=None)