大数据,成就未来pandas统计分析基础2020/2/262大数据挖掘专家1掌握DataFrame的常用操作目录读写不同数据源的数据2转换与处理时间序列数据33大数据挖掘专家pandas提供了读取与存储关系型数据库数据的函数与方法。除了pandas库外,还需要使用SQLAlchemy库建立对应的数据库连接。SQLAlchemy配合相应数据库的Python连接工具(例如MySQL数据库需要安装mysqlclient或者pymysql库),使用create_engine函数,建立一个数据库连接。creat_engine中填入的是一个连接字符串。在使用Python的SQLAlchemy时,MySQL和Oracle数据库连接字符串的格式如下数据库产品名+连接工具名://用户名:密码@数据库IP地址:数据库端口号/数据库名称?charset=数据库数据编码读写数据库数据1.数据库数据读取4大数据挖掘专家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)读写数据库数据1.数据库数据读取5大数据挖掘专家参数名称说明sqlortable_name接收string。表示读取的数据的表名或者sql语句。无默认。con接收数据库连接。表示数据库连接信息。无默认index_col接收int,sequence或者False。表示设定的列作为行名,如果是一个数列则是多重索引。默认为None。coerce_float接收boolean。将数据库中的decimal类型的数据转换为pandas中的float64类型的数据。默认为True。columns接收list。表示读取数据的列名。默认为None。读写数据库数据1.数据库数据读取pandas三个数据库数据读取函数的参数几乎完全一致,唯一的区别在于传入的是语句还是表名。6大数据挖掘专家数据库数据读取有三个函数,但数据存储则只有一个to_sql方法。DataFrame.to_sql(name,con,schema=None,if_exists=’fail’,index=True,index_label=None,dtype=None)读写数据库数据2.数据库数据存储参数名称说明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。7大数据挖掘专家文本文件是一种由若干行字符构成的计算机文件,它是一种典型的顺序文件。csv是一种逗号分隔的文件格式,因为其分隔符不一定是逗号,又被称为字符分隔文件,文件以纯文本形式存储表格数据(数字和文本)。读写文本文件1.文本文件读取8大数据挖掘专家使用read_table来读取文本文件。pandas.read_table(filepath_or_buffer,sep=’\t’,header=’infer’,names=None,index_col=None,dtype=None,engine=None,nrows=None)使用read_csv函数来读取csv文件。pandas.read_csv(filepath_or_buffer,sep=’\t’,header=’infer’,names=None,index_col=None,dtype=None,engine=None,nrows=None)读写文本文件1.文本文件读取9大数据挖掘专家read_table和read_csv常用参数及其说明。读写文本文件1.文本文件读取参数名称说明filepath接收string。代表文件路径。无默认。sep接收string。代表分隔符。read_csv默认为“,”,read_table默认为制表符“[Tab]”。header接收int或sequence。表示将某行数据作为列名。默认为infer,表示自动识别。names接收array。表示列名。默认为None。index_col接收int、sequence或False。表示索引列的位置,取值为sequence则代表多重索引。默认为None。dtype接收dict。代表写入的数据类型(列名为key,数据格式为values)。默认为None。engine接收c或者python。代表数据解析引擎。默认为c。nrows接收int。表示读取前n行。默认为None。10大数据挖掘专家read_table和read_csv函数中的sep参数是指定文本的分隔符的,如果分隔符指定错误,在读取数据的时候,每一行数据将连成一片。header参数是用来指定列名的,如果是None则会添加一个默认的列名。encoding代表文件的编码格式,常用的编码有utf-8、utf-16、gbk、gb2312、gb18030等。如果编码指定错误数据将无法读取,IPython解释器会报解析错误。读写文本文件1.文本文件读取11大数据挖掘专家文本文件的存储和读取类似,结构化数据可以通过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)读写文本文件参数名称说明参数名称说明path_or_buf接收string。代表文件路径。无默认。index接收boolean,代表是否将行名(索引)写出。默认为True。sep接收string。代表分隔符。默认为“,”。index_labels接收sequence。表示索引名。默认为None。na_rep接收string。代表缺失值。默认为“”。mode接收特定string。代表数据写入模式。默认为w。columns接收list。代表写出的列名。默认为None。encoding接收特定string。代表存储文件的编码格式。默认为None。header接收boolean,代表是否将列名写出。默认为True。2.文本文件储存12大数据挖掘专家pandas提供了read_excel函数来读取“xls”“xlsx”两种Excel文件。pandas.read_excel(io,sheetname=0,header=0,index_col=None,names=None,dtype=None)读写Excel文件参数名称说明io接收string。表示文件路径。无默认。sheetname接收string、int。代表excel表内数据的分表位置。默认为0。header接收int或sequence。表示将某行数据作为列名。默认为infer,表示自动识别。names接收int、sequence或者False。表示索引列的位置,取值为sequence则代表多重索引。默认为None。index_col接收int、sequence或者False。表示索引列的位置,取值为sequence则代表多重索引。默认为None。dtype接收dict。代表写入的数据类型(列名为key,数据格式为values)。默认为None。1.Excel文件读取13大数据挖掘专家将文件存储为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_csv方法的常用参数基本一致,区别之处在于指定存储文件的文件路径参数名称为excel_writer,并且没有sep参数,增加了一个sheetnames参数用来指定存储的Excelsheet的名称,默认为sheet1。读写Excel文件2.Excel文件储存14大数据挖掘专家1掌握DataFrame的常用操作目录读写不同数据源的数据2转换与处理时间序列数据315大数据挖掘专家函数返回值values元素index索引columns列名dtypes类型size元素个数ndim维度数shape数据形状(行列数目)查看DataFrame的常用属性基础属性16大数据挖掘专家对单列数据的访问:DataFrame的单列数据为一个Series。根据DataFrame的定义可以知晓DataFrame是一个带有标签的二维数组,每个标签相当每一列的列名。有以下两种方式来实现对单列数据的访问。•以字典访问某一个key的值的方式使用对应的列名,实现单列数据的访问。•以属性的方式访问,实现单列数据的访问。(不建议使用,易引起混淆)查改增删DataFrame数据1.查看访问DataFrame中的数据——数据基本查看方式17大数据挖掘专家对某一列的某几行访问:访问DataFrame中某一列的某几行时,单独一列的DataFrame可以视为一个Series(另一种pandas提供的类,可以看作是只有一列的DataFrame),而访问一个Series基本和访问一个一维的ndarray相同。对多列数据访问:访问DataFrame多列数据可以将多个列索引名称视为一个列表,同时访问DataFrame多列数据中的多行数据和访问单列数据的多行数据方法基本相同。查改增删DataFrame数据1.查看访问DataFrame中的数据——数据基本查看方式18大数据挖掘专家对某几行访问:•如果只是需要访问DataFrame某几行数据的实现方式则和上述的访问多列多行相似,选择所有列,使用“:”代替即可。•head和tail也可以得到多行数据,但是用这两种方法得到的数据都是从开始或者末尾获取的连续数据。默认参数为访问5行,只要在方法后方的“()”中填入访问行数即可实现目标行数的查看。查改增删DataFrame数据1.查看访问DataFrame中的数据——数据基本查看方式19大数据挖掘专家loc方法是针对DataFrame索引名称的切片方法,如果传入的不是索引名称,那么切片操作将无法执行。利用loc方法,能够实现所有单层索引切片操作。loc方法使用方法如下。DataFrame.loc[行索引名称或条件,列索引名称]iloc和loc区别是iloc接收的必须是行索引和列索引的位置。iloc方法的使用方法如下。DataFrame.iloc[行索引位置,列索引位置]查改增删DataFrame数据1.查看访问DataFrame中的数据——loc,iloc访问方式20大数据挖掘专家使用loc方法和iloc实现多列