国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
那些年我們在python掉進的坑系列之一pandas的to

在目前大數(shù)據(jù)和人工智能的大趨勢下,越來越多的人開始學習python作為自己入手數(shù)據(jù)和AI的第一門語言,筆者也是如此。很多人在接觸python的第一步都是學習pandas,主要是這個框架是最接近于R和Matlab學習起來輕松易懂。但是在pandas的使用中,有很多問題和很多人因為對編程和計算機概念不理解,導致很多很多的坑,筆者在此開一個系列博文,不定期更新中會將自己遇到的坑介紹給大家。


pandas坑之to_sql


pandas是將格式化數(shù)據(jù)直接編程python可讀的DataFrame格式(其實本質(zhì)上就是字典,并且自動設置了index和colunms),pandas本身的操作給了用戶很好的體驗和數(shù)據(jù)分析過程,但是pandas從數(shù)據(jù)庫讀取再轉(zhuǎn)錄入數(shù)據(jù)庫是不少新人一直頭疼的問題,筆者也為此最初頭疼不已。根據(jù)《利用python進行數(shù)據(jù)分析》的書中,有大致介紹一個函數(shù)——to_sql,相信很多人都是對此了解的。


但是,使用to_sql這個函數(shù)有一個問題,雖然to_sql函數(shù)可以直接將字典數(shù)據(jù)直接存入數(shù)據(jù)庫,但是,to_sql限制是非常之大的(畢竟別人寫的類)

我們先看一個操作

import pandas as pd

import pymysql


conn=pymysql.connect(host,port,user,password,charset,db)

df1=pd.DataFrame(list)

df.to_sql(tablename,conn)


相信很多人都是按照以上進行的傻瓜操作,但是筆者在這里只能告訴你們,這是大錯特錯的。


要學習python最快的方法,并不是上什么培訓班,看視頻,最快的方法,就是去閱讀python的庫文檔,python手冊。畢竟python雖然在使用上非常難,但是在學習上并不是特別難(相對于java和C++)。

根據(jù)庫的文檔,我們看到to_sql函數(shù)支持兩類mysql引擎一個是sqlalchemy,另一個是sqlliet3.沒錯,在你寫入庫的時候,pymysql是不能用的!??!mysqldb也是不能用的,你只能使用sqlalchemy或者sqlliet3!!鑒于sqllift3已經(jīng)很久沒有更新了,筆者這里建議使用sqlalchemy??!


所以上面那段要改寫成下面這樣:

import pandas as pd

from sqlalchemy import create_engine

conn = create_engine('mysql+mysqldb://root:password@localhost:3306/databasename?charset=utf8') 

下面一步很關(guān)鍵,注意?。?!to_sql函數(shù)并不在pd之中,而是在io.sql之中,是sql腳本下的一個類?。?!所以to_sql的最好寫法就是:

pd.io.sql.to_sql(df1,tablename,con=conn,if_exists='repalce')


是不是感覺大功告成了???

那是你的錯覺,趕緊回到數(shù)據(jù)庫看看吧??!你會發(fā)現(xiàn)WTF為什么我原來的數(shù)據(jù)都沒有了?。?/p>

這就是to_sql的第二個坑if_exists字段:

很多新人按照網(wǎng)上的教程,都將if_exists字段定義為‘replace’活著‘fail’,要么發(fā)現(xiàn)原來數(shù)據(jù)沒有了,要么發(fā)現(xiàn)什么時候都沒有做!

麻煩請各位新人仔細閱讀文檔?。?!

fail的意思如果表存在,啥也不做

replace的意思,如果表存在,刪了表,再建立一個新表,把數(shù)據(jù)插入

append的意思,如果表存在,把數(shù)據(jù)插入,如果表不存在創(chuàng)建一個表!!


你看懂了嗎,所以大家一定要讀文檔!讀文檔??!讀文檔!??!










本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
建議收藏!Python 讀取千萬級數(shù)據(jù)自動寫入 MySQL 數(shù)據(jù)庫
Python數(shù)據(jù)存儲讀取,6千字搞定各種方法!
python數(shù)據(jù)保存:記錄pandas數(shù)據(jù)分析完成后的輕量級數(shù)據(jù)保存!
Python批量處理Excel數(shù)據(jù)后,導入SQL Server
Pandas速查卡-Python數(shù)據(jù)科學
Pandas常用命令匯總,建議收藏!
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服