像使用mysql一样使用pandas

像使用mysql一样使用pandas

标签(空格分隔): mysql pandas


前言

pandas的DataFrame对象本质就是一张表,DataFrame对象中的index对应的就是数据库表中的id字段,DataFrame对象中的columns对应的就是数据库表中的一个个字段名称,这说明pandas的DataFrame对象和数据库中的表具有很多的相似点,而实际情况也是这样,我们可以用操作数据库类似的方法来操作pandas的DataFrame对象,本文将使用类比的方法来说明pandas对象和数据库的丝丝关联


数据库的库操作

  1. 创建数据库
    create database db1 charset utf8;
  2. 查看数据库
show create database db1;
select database();
  1. 选择数据库
    use db1;
  2. 删除数据库
    drop database db1;
  3. 修改数据库
    dlter database db1 charset utf8;

# 数据库的表操作
  1. 创建表
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);
  1. 查看表结构:
    desc t1

  2. 复制表
    create table new_service select * from service;

  3. 删除表
    drop table 表名;

  4. 修改表

 1、修改表名
 alter table 表名 rename 新表名;
 2、增加字段
 alter table 表名 add 字段名; 数据类型
 3、删除字段
 alter table 表名 drop 字段名;
 4、修改字段
 alter table 表名 modify 字段名 数据类型;

上述部分设计到数据库的库操作和表操作,对于pandas数据则没有这些相应的操作,对数据的操作才是pandas的DataFrame对象和数据库的相似之处

数据操作:pandas和数据库的对比

  • 分别在mysql和pandas中创建数据表
    mysql中:
create table tips (
     id int primary_key auto_increment,
     total_bill float,
     tip float,
     sex ENUM ('male','female'),
     smoker ENUM('yes','no'),
     day ENUM('mon','tue','wed','thr','fri','sat','sun'),
     time ENUM('breakfast','lunch','dinner'),
     size int;);

DataFrame中:(应用pymysql获取表格数据,将表格数据放入DataFrame对象中)

import pandas as pd
import pymysql
db = pymysql.connect('localhost','root','','db5')
cursor = db.cursor(pymysql.cursors.DictCursor)
cursor.execute('select * from tips;')
data = cursor.fetchall()
data = [list(dic.values()) for dic in data]
df = pd.DataFrame(data1,columns['id','total_bill','tip','sex','smoker','day','time','size'])
#这样获得的DataFrame对象会多出一列index,需要将id设为index
df = df.set_index('id')

表格数据如下所示:

    total_bill   tip     sex smoker  day    time  size
id                                                    
1        16.99  1.01  female     no  sun  dinner     2
2        10.34  1.66    male     no  sun  dinner     3
3        21.01  3.50    male     no  sun  dinner     3
4        23.68  3.31    male     no  sun  dinner     3
5        24.59  3.61  female     no  sun  dinner     4
posted @ 2018-06-18 23:39  Expert668  阅读(587)  评论(0编辑  收藏  举报