安裝
pip install SQLAlchemy
import pymysql
import pandas as pd
from sqlalchemy import create_engine
sql = 'select * from company_sql'
con = create_engine('mysql+pymysql://root:root@localhost:3306/demo?charset=utf8')
df = pd.read_sql(sql, con)
補(bǔ)充說明:'mysql+pymysql://user:password@host:port/db?charset'
查詢
# 使用數(shù)據(jù)庫的查詢
sql = 'select * from company_sql where companySize = "50-150人" '
# 直接使用pandas
df[df['companySize'] == '50-150人']
# 兩種方式都是可行的蒸甜,主要看性能
實(shí)戰(zhàn)進(jìn)階
對(duì)連接數(shù)據(jù)庫的方式做一個(gè)簡單的優(yōu)化
def read(sql):
# 每次調(diào)用方法就可以快速的操作各個(gè)表
con = create_engine('mysql+pymysql://root:root@localhost:3306/demo?charset=utf8')
df = pd.read_sql(sql, con)
return df
合并
company_id = read('select * from company_sql')
company = read('select * from dataanalyst_sql')
company_all = pd.merge(company, company_id, on='companyId')
company_all
分組的使用
c = company_all.groupby(['city', 'companyFullName']).count()['positionId']
#使用 .reset_index()
c.head()
查看數(shù)據(jù)類型
c.info()
c.dtypes
保存到數(shù)據(jù)庫
# name: 數(shù)據(jù)庫名稱皮璧,可以是存在的载萌,也可以是不存在的
# if_exists:存在就加入懂傀,不存在就創(chuàng)建新的
# index:False不要把索引加入數(shù)據(jù)庫中
c.to_sql(name="new_table",
con='mysql+pymysql://root:root@localhost:3306/demo?charset=utf8',
if_exists='append', index=False)
問題補(bǔ)充:最后你可能發(fā)現(xiàn),數(shù)據(jù)庫中字段的類型是這樣的
image.png
并不是我們想要的形式,所以如果你比較追求完美的話,建議先把表牧愁,字段建好!M饬V戆搿!偷线!