像使用mysql同樣使用pandas
標籤(空格分隔): mysql pandasmysql
前言
pandas的DataFrame對象本質就是一張表,DataFrame對象中的index對應的就是數據庫表中的id字段,DataFrame對象中的columns對應的就是數據庫表中的一個個字段名稱,這說明pandas的DataFrame對象和數據庫中的表具備不少的類似點,而實際狀況也是這樣,咱們能夠用操做數據庫相似的方法來操做pandas的DataFrame對象,本文將使用類比的方法來講明pandas對象和數據庫的絲絲關聯sql
<hr>數據庫
數據庫的庫操做
- 建立數據庫
create database db1 charset utf8;
- 查看數據庫
show create database db1; select database();
- 選擇數據庫
use db1;
- 刪除數據庫
drop database db1;
- 修改數據庫
dlter database db1 charset utf8;
<hr> # 數據庫的表操做fetch
- 建立表
字段名1 類型[(寬度) 約束條件], 字段名2 類型[(寬度) 約束條件], 字段名3 類型[(寬度) 約束條件] );
-
查看錶結構:
desc t1
spa -
複製表
create table new_service select * from service;
設計 -
刪除表
drop table 表名;
code -
修改表對象
一、修改表名 alter table 表名 rename 新表名; 二、增長字段 alter table 表名 add 字段名; 數據類型 三、刪除字段 alter table 表名 drop 字段名; 四、修改字段 alter table 表名 modify 字段名 數據類型;
<hr>ip
上述部分設計到數據庫的庫操做和表操做,對於pandas數據則沒有這些相應的操做,對數據的操做纔是pandas的DataFrame對象和數據庫的類似之處rem
數據操做: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