Python-数据分析-Pandas统计分析基础1

       学校选修课的复习笔记 大部分内容来自PPT

1.读取不同种类的数据

      常见的数据有三种,分别是数据库文件(.sql文件)、文本文件(包括CSV文件)(.csv文件)、Excel文件(.xlsx文件)

2.关系型数据库管理系统(RDBMS)

      RDBMS即Relational Database Management System,具有以下特点:

      数据以许多行和列组成一张表单,每行为各种记录名称,每列为对应数据域,若干表单组成Database。

3.RDBMS术语

      数据表:表是数据的矩阵,在一个数据库中的表看起来像是一个简单的电子表格。

      冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性

      主键:主键是唯一的。一个数据表中只能包含一个主键,你可以使用主键来查询数据。

      外键:外键用于关联两个表。

      复合键:复合键将多个列作为一个索引键,一般用于复合索引。

      索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。

      参照完整性:参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

4.MySQL数据库

       MySQL是一个关系型数据库管理系统,支持多种语言,且是开源的。

5.常用数据库命令

       mysql> SHOW DATABASE;    显示当前数据库服务器中的数据库列表

       mysql> CREATE DATABASE;      建立数据库

       mysql> USE 库名;

       mysql> CREATE TABLE 表名(字段名 VARCHAR(20),字段名CHAR(1));

       mysql> DROP DATABASE 库名;   删除数据库

       mysql> DROP TABLE 表名;  删除数据表

       mysql> DELETE FROM 表名;    清空表中记录

       mysql> INSERT INTO 表名 VALUES ("hyq","M");

       mysql -> UPDATE 表名 SET 字段名1='a',字段名2='b', WHERE 字段名3 = 'c';   更新表中数据

       mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE 表名;   用文本形式将数据装进数据表

       mysql> USE 数据库名;

       mysql> SOURCE d:/mysql.sql   导入.sql文件命令

6. 读写数据库数据

       在建立Python与MySQL连接时,需要安装SQLAlchemy库和pymysql库

       (1).数据库数据读取

             使用create_engine函数建立一个数据库连接。

            数据库连接字符串如下:

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

            例如:'mysql+pymysql://root:[email protected]:3306/testdb?charset=utf-8'

            数据库读取函数:

pandas.read_sql_table(table_name,con,schema=None,index_col=None,coerce_float=True,columns=None)   

            read_sql_table只能读取数据库的某一个表格,不能实现查询的操作

 pandas.read_sql_query(sql,con,index_col=None,coerce_float=True)

            read_sql_query只能实现查询操作,不能直接读取数据库中某个表 

pandas.read_sql(sql,con,index_col=None,coerce_float=True,columns=None)

            read_sql是两者的综合,即能够读取数据库中的某一表,也能够实现查询操作 

            Pandas三个数据库读取函数参数几乎完全一致,唯一的区别在于传入的是语句还是表名

            sql or table_name  接收string,表示读取的数据的表明或者sql 语句,无默认。

            con   接收数据库连接,表示数据库连接信息。无默认。

            index_col  接收int,sequence或者False,表示设定哪一列作为index,如果设置多个索引,这个参数就是一个数列。默认为None。

            coerce_float   接收boolean。将数据库中的decimal类型的数据转换为pandas中的float64类型的数据。默认为True。

            columns   接收list,表示读取数据的列名。默认为None。

      (2).数据库数据存储

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

             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。

detail1.to_sql('test1',con=engine,index=False,if_exists='replace')
formlist1 = pd.read_sql_query('show tables',con=engine)
print('新增一个表格后testdb数据库数据表清单为:','\n',formlist1)

  7.读写文本文件

       (1).文件读取

             文本文件是一种由若干行字符构成的计算机文件,它是一种典型的顺序文件。

             csv是一种逗号分隔的文件格式,因为其分隔符不一定是逗号,又被称为字符分隔文件,文件以纯文本形式存储表格数据(数字和文本)

             csv文本是一种通用、相对简单的文件格式,最广泛的应用是在程序之间转移表格数据,而这些程序本身实在不兼容的格式上进行操作的(往往是私有的、无规范的格式)。

             因为大量程序都支持csv或者其变体,因此可以大多数程序的输入和输出格式。

             使用read_table来读取文本文件,使用read_csv函数来读取csv文件。

pandas.read_table(filepath_or_buffer,sep='\t',header='infer',names=None,index_col=None,dtype=None,engine=None,nrows=None)


pandas.read_csv(filepath_or_buffer,sep=',',header='infer',names=None,index_col=None,dtype=None,engine=None,nrows=None)

             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。

             encoding表示文件的编码格式,常用的编码有utf-8、utf-16、gbk、gb2312、gb18030等

       (2).文件存储

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。代表文件路径。无默认。

            sep   接收string。代表分隔符。默认为","。

            na_rep   接收string。代表缺失值。默认为""。

            columns    接收list。代表写出的列名。默认为None。

            header    接收boolean。代表是否将列名写出。默认为True。

            index   接收boolean,代表是否将行名(索引)写出。默认为True。

            index_labels   接收sequence。表示索引名。默认为None。

            mode   接收特定string。代表数据写入模式。默认为w。

            encoding   接收特定string。代表储存文件的编码格式。默认为None。

import os
print("订单信息表写入文本文件前目录内文件列表为:\n",os.listdir('tmp'))
order.to_csv('../tmp/orderInfo.csv',sep=';',index=False)
print("订单信息表写入文本文件前目录内文件列表为:\n",os.listdir('tmp'))

     (3). Excel文件读取

pandas.read_excel(io,sheetname=0,header=0,index_col=None,names=None,dtype=None)

            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。 

user = pandas.read_excel('data/users.xlsx')
print("客户信息表写入excel文件前目录文件列表为: \n",os.listdir('tmp'))

user.to_excel('tmp/userInfo.xlsx')

print("客户信息表写入excel文件后目录内文件列表为:\n",os.listdir('tmp'))

猜你喜欢

转载自blog.csdn.net/Kayaobi/article/details/83032163