python把數(shù)據(jù)框?qū)懭隡ySQL的方法
背景:
下文利用上海市2016年9月1日公共交通卡刷卡數(shù)據(jù)
如圖:

想做一下上海市通勤數(shù)據(jù)挖掘,由于源文件有800多兆,用python讀取起來(lái)很慢很卡,于是想導(dǎo)入數(shù)據(jù)庫(kù)MySQL里面處理,以前一般是打開(kāi)workbench可視化操作導(dǎo)入數(shù)據(jù)庫(kù),這次想換成代碼實(shí)現(xiàn),于是琢磨著如何把這個(gè)csv文件用python導(dǎo)進(jìn)去。
一般的,python把數(shù)據(jù)框?qū)懭霐?shù)據(jù)庫(kù)有兩種方法
利用insert into 命令一條一條插入:
采用這種方法,可以爬一條立馬向數(shù)據(jù)庫(kù)里面插入一條數(shù)據(jù),整體銜接好,不怕大量數(shù)據(jù)一次性塞進(jìn)數(shù)據(jù)庫(kù)導(dǎo)致?lián)矶拢?/p>
pd.io.sql.to_sql( )整個(gè)數(shù)據(jù)框以追加的方式整體復(fù)制進(jìn)去
今天主要研究第二種方法
實(shí)現(xiàn)代碼:
import pandas as pd ?#導(dǎo)入數(shù)據(jù)分析模塊
import pymysql #導(dǎo)入數(shù)據(jù)庫(kù)接口模塊
from sqlalchemy import create_engine
data=pd.read_csv(r"D:\數(shù)據(jù)\yikatongchengkeshuakashuju\201608\SPTCC20160901.csv",engine='python',header=None) #讀取數(shù)據(jù)encoding='mbcs',
data.columns=["卡號(hào)","日期","時(shí)間","站點(diǎn)","交通方式","費(fèi)用","是否有優(yōu)惠"] #由于原csv文件沒(méi)有表頭,這里添加表頭
#print(data.head()) #測(cè)試
db=pymysql.connect("localhost","root","123456","metro_sh",charset="utf8") #鏈接數(shù)據(jù)庫(kù)metro_sh
cursor=db.cursor() #獲取游標(biāo)
cursor.execute("drop table if exists metro_sh_20160901") #以重新寫(xiě)入的方式導(dǎo)入數(shù)據(jù)表
connect=create_engine("mysql+pymysql://root:123456@localhost:3306/metro_sh?charset=utf8")
pd.io.sql.to_sql(data,"metro_sh_20160901",connect,schema="metro_sh",index=False,if_exists="append")結(jié)果截圖:

代碼解讀:
create_engine( )參數(shù)說(shuō)明:
create_engine(mysql+mysqldb://用戶(hù)名:密碼@localhost:端口/數(shù)據(jù)庫(kù)名?編碼)
設(shè)置數(shù)據(jù)庫(kù)的編碼方式的時(shí)候最好與之前pd.read_csv()中的encoding參數(shù)一致
pd.io.sql.to_sql( )參數(shù)說(shuō)明:
(數(shù)據(jù)框, ‘表名’, con=連接鍵, schema=‘數(shù)據(jù)庫(kù)名’, if_exists=‘操作方式’)
操作方式有append、fail、replace
append:如果表存在,則將數(shù)據(jù)添加到這個(gè)表的后面fail:如果表存在就不寫(xiě)入replace:如果存在表,刪了,覆蓋
該方法有一個(gè)缺點(diǎn):
該方法整體性好,內(nèi)存消耗大,如果內(nèi)存大可以一試
到此這篇關(guān)于如何讓python把數(shù)據(jù)框?qū)懭隡ySQL的文章就介紹到這了,更多相關(guān)python把數(shù)據(jù)框?qū)懭隡ySQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于matplotlib+tkinter實(shí)現(xiàn)簡(jiǎn)單的繪圖系統(tǒng)
在理解matplotlib嵌入到tkinter中的原理之后,就已經(jīng)具備了打造繪圖系統(tǒng)的技術(shù)基礎(chǔ),所以本文來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的繪圖系統(tǒng),感興趣的小伙伴小伙伴可以了解一下2023-08-08
Python使用Srapy框架爬蟲(chóng)模擬登陸并抓取知乎內(nèi)容
這里我們來(lái)看如何通過(guò)Python使用Srapy框架爬蟲(chóng)模擬登陸并抓取知乎內(nèi)容的實(shí)例,要實(shí)現(xiàn)持續(xù)的爬取需要利用到cookie的保存,我們首先還是來(lái)回顧一下cookie的相關(guān)知識(shí)點(diǎn):2016-07-07
解決安裝python庫(kù)時(shí)windows error5 報(bào)錯(cuò)的問(wèn)題
今天小編就為大家分享一篇解決安裝python庫(kù)時(shí)windows error5 報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
基于Python下載網(wǎng)絡(luò)圖片方法匯總代碼實(shí)例
這篇文章主要介紹了基于Python下載網(wǎng)絡(luò)圖片方法匯總代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
Pygame?精準(zhǔn)檢測(cè)圖像碰撞的問(wèn)題
這篇文章主要介紹了Pygame?精準(zhǔn)檢測(cè)圖像碰撞,在用Pygame寫(xiě)游戲的時(shí)候,有人可能會(huì)遇到兩個(gè)Rect對(duì)象碰撞但是對(duì)象之間還有空間間隔的問(wèn)題,這里,將教大家用一種方法精準(zhǔn)地檢測(cè)圖像碰撞,需要的朋友可以參考下2022-06-06
Python統(tǒng)計(jì)分析模塊statistics用法示例
這篇文章主要介紹了Python統(tǒng)計(jì)分析模塊statistics用法,結(jié)合實(shí)例形式分析了Python統(tǒng)計(jì)分析模塊statistics計(jì)算平均數(shù)、中位數(shù)、出現(xiàn)次數(shù)、標(biāo)準(zhǔn)差等相關(guān)操作技巧,需要的朋友可以參考下2019-09-09
Python學(xué)習(xí)筆記之視頻人臉檢測(cè)識(shí)別實(shí)例教程
這篇文章主要給大家介紹了關(guān)于Python學(xué)習(xí)筆記之視頻人臉檢測(cè)識(shí)別的相關(guān)資料,文中通過(guò)示例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03

