像使用mysql一样使用pandas
像使用mysql一样使用pandas
标签(空格分隔): mysql pandas
前言
pandas的DataFrame对象本质就是一张表,DataFrame对象中的index对应的就是数据库表中的id字段,DataFrame对象中的columns对应的就是数据库表中的一个个字段名称,这说明pandas的DataFrame对象和数据库中的表具有很多的相似点,而实际情况也是这样,我们可以用操作数据库类似的方法来操作pandas的DataFrame对象,本文将使用类比的方法来说明pandas对象和数据库的丝丝关联
数据库的库操作
- 创建数据库
create database db1 charset utf8;
- 查看数据库
show create database db1;
select database();
- 选择数据库
use db1;
- 删除数据库
drop database db1;
- 修改数据库
dlter database db1 charset utf8;
# 数据库的表操作
- 创建表
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);
-
查看表结构:
desc t1
-
复制表
create table new_service select * from service;
-
删除表
drop table 表名;
-
修改表
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