python把數(shù)據(jù)框?qū)懭隡ySQL的方法
背景:
下文利用上海市2016年9月1日公共交通卡刷卡數(shù)據(jù)
如圖:
想做一下上海市通勤數(shù)據(jù)挖掘,由于源文件有800多兆,用python讀取起來很慢很卡,于是想導(dǎo)入數(shù)據(jù)庫MySQL里面處理,以前一般是打開workbench
可視化操作導(dǎo)入數(shù)據(jù)庫,這次想換成代碼實(shí)現(xiàn),于是琢磨著如何把這個(gè)csv文件用python導(dǎo)進(jìn)去。
一般的,python把數(shù)據(jù)框?qū)懭霐?shù)據(jù)庫有兩種方法
利用insert into 命令一條一條插入:
采用這種方法,可以爬一條立馬向數(shù)據(jù)庫里面插入一條數(shù)據(jù),整體銜接好,不怕大量數(shù)據(jù)一次性塞進(jìn)數(shù)據(jù)庫導(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ù)庫接口模塊 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=["卡號","日期","時(shí)間","站點(diǎn)","交通方式","費(fèi)用","是否有優(yōu)惠"] #由于原csv文件沒有表頭,這里添加表頭 #print(data.head()) #測試 db=pymysql.connect("localhost","root","123456","metro_sh",charset="utf8") #鏈接數(shù)據(jù)庫metro_sh cursor=db.cursor() #獲取游標(biāo) cursor.execute("drop table if exists metro_sh_20160901") #以重新寫入的方式導(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ù)說明:
create_engine(mysql+mysqldb://用戶名:密碼@localhost:端口/數(shù)據(jù)庫名?編碼)
設(shè)置數(shù)據(jù)庫的編碼方式的時(shí)候最好與之前pd.read_csv()中的encoding參數(shù)一致
pd.io.sql.to_sql( )參數(shù)說明:
(數(shù)據(jù)框, ‘表名’, con=連接鍵, schema=‘數(shù)據(jù)庫名’, if_exists=‘操作方式’)
操作方式有append、fail、replace
append
:如果表存在,則將數(shù)據(jù)添加到這個(gè)表的后面fail
:如果表存在就不寫入replace
:如果存在表,刪了,覆蓋
該方法有一個(gè)缺點(diǎn):
該方法整體性好,內(nèi)存消耗大,如果內(nèi)存大可以一試
到此這篇關(guān)于如何讓python把數(shù)據(jù)框?qū)懭隡ySQL的文章就介紹到這了,更多相關(guān)python把數(shù)據(jù)框?qū)懭隡ySQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
樹莓派3 搭建 django 服務(wù)器的實(shí)例
今天小編就為大家分享一篇樹莓派3 搭建 django 服務(wù)器的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08教你用Python腳本快速為iOS10生成圖標(biāo)和截屏
這篇文章主要介紹了教你用Python快速為iOS10生成圖標(biāo)和截屏的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09探索Python進(jìn)度條魔法解密任務(wù)進(jìn)展新玩法
在日常編程和應(yīng)用開發(fā)中,展示進(jìn)度條是一種常見的技巧,不僅能夠提供用戶友好的體驗(yàn),還可以顯示任務(wù)執(zhí)行的進(jìn)度,Python作為一種多才多藝的編程語言,提供了多種方法來創(chuàng)建進(jìn)度條,本篇文章將深入探討這些方法,為您呈現(xiàn)各種實(shí)現(xiàn)進(jìn)度條的技術(shù)和技巧2024-01-01pytorch更新tensor中指定index位置的值scatter_add_問題
這篇文章主要介紹了pytorch更新tensor中指定index位置的值scatter_add_問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06關(guān)于Django使用 django-celery-beat動態(tài)添加定時(shí)任務(wù)的方法
本文給大家介紹Django使用 django-celery-beat動態(tài)添加定時(shí)任務(wù)的方法,安裝對應(yīng)的是celery版本,文中給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-10-10python中g(shù)etopt()函數(shù)用法詳解
這篇文章主要介紹了python中g(shù)etopt()函數(shù)用法,通過getopt模塊中的getopt(?)方法,我們可以獲取和解析命令行傳入的參數(shù),需要的朋友可以參考下2022-12-12