Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
面文章,實現(xiàn)了通過表單完成數(shù)據(jù)的錄入,并寫入數(shù)據(jù)庫。接下來實現(xiàn)數(shù)據(jù)的修改和刪除。
首先找到user_manager.html文件,增加修改和刪除的按鈕。
找到顯示數(shù)據(jù)的表格<table>標簽,在表頭區(qū)域增加一列<th>操作</th>,然后在顯示數(shù)據(jù)的for循環(huán)中增加一個<td></td>標簽,在標簽內(nèi)增加兩個連接<a>標簽,href先設置為空,各增加一個class樣式。如圖所示:
刷新user_manager.html頁面,如下圖。現(xiàn)在按鈕已經(jīng)添加到前端頁面。
接下來,完善刪除功能。
先在views.py中建立一個刪除的方法,如下。方法傳入兩個參數(shù),一個request,一個需要刪除行的id,使用User類的filter功能在數(shù)據(jù)庫中查找數(shù)據(jù),使用delete()方法刪除數(shù)據(jù),最后返回user_manager頁面。
def user_delete(request,user_id):
User.objects.filter(id=user_id).delete()
return redirect("/user_manager/")
接下來增加路由,以在前端調(diào)用該方法刪除數(shù)據(jù)。打開urls.py文件,新增加一個刪除數(shù)據(jù)的路由。
在前端user_manager.html頁面中,增加刪除的href如下:
試驗一下刪除功能,打開user_manager.html頁面,找到第一條數(shù)據(jù),
點擊刪除按鈕,第一條數(shù)據(jù)已被刪除。
下篇筆記,將記錄如何實現(xiàn)修改數(shù)據(jù)的功能。
本Pandas教程中,我們將詳細介紹如何使用Pandas read_html方法從HTML中獲取數(shù)據(jù)。首先,在最簡單的示例中,我們將使用Pandas從一個字符串讀取HTML。其次,我們將通過幾個示例來使用Pandas read_html從Wikipedia表格中獲取數(shù)據(jù)。在之前的一篇文章(關于Python中的探索性數(shù)據(jù)分析)中,我們也使用了Pandas從HTML表格中讀取數(shù)據(jù)。
在開始學習Python和Pandas時,為了進行數(shù)據(jù)分析和可視化,我們通常從實踐導入數(shù)據(jù)開始。在之前的文章中,我們已經(jīng)了解到我們可以直接在Python中輸入值(例如,從Python字典創(chuàng)建Pandas dataframe)。然而,通過從可用的源導入數(shù)據(jù)來獲取數(shù)據(jù)當然更為常見。這通常是通過從CSV文件或Excel文件中讀取數(shù)據(jù)來完成的。例如,要從一個.csv文件導入數(shù)據(jù),我們可以使用Pandas read_csv方法。這里有一個如何使用該方法的快速的例子,但一定要查看有關該主題的博客文章以獲得更多信息。
現(xiàn)在,上面的方法只有在我們已經(jīng)有了合適格式的數(shù)據(jù)(如csv或JSON)時才有用(請參閱關于如何使用Python和Pandas解析JSON文件的文章)。
我們大多數(shù)人會使用Wikipedia來了解我們感興趣的主題信息。此外,這些Wikipedia文章通常包含HTML表格。
要使用pandas在Python中獲得這些表格,我們可以將其剪切并粘貼到一個電子表單中,然后,例如使用read_excel將它們讀入Python。現(xiàn)在,這個任務當然可以用更少的步驟來完成:我們可以通過web抓取來對它進行自動化。一定要查看一下什么是web抓取。
當然,這個Pandas讀取HTML教程將要求我們安裝Pandas及其依賴項。例如,我們可以使用pip來安裝Python包,比如Pandas,或者安裝一個Python發(fā)行版(例如,Anaconda、ActivePython)。下面是如何使用pip安裝Pandas: pip install pandas。
注意,如果出現(xiàn)消息說有一個更新版本的pip可用,請查看這篇有關如何升級pip的文章。注意,我們還需要安裝lxml或BeautifulSoup4,當然,這些包也可以使用pip來安裝: pip install lxml。
下面是如何使用Pandas read_html從HTML表格中抓取數(shù)據(jù)的最簡單的語法:
現(xiàn)在我們已經(jīng)知道了使用Pandas讀取HTML表格的簡單語法,接下來我們可以查看一些read_html示例。
第一個示例是關于如何使用Pandas read_html方法的,我們將從一個字符串讀取HTML表格。
現(xiàn)在,我們得到的結(jié)果不是一個Pandas DataFrame,而是一個Python列表。也就是說,如果我們使用type函數(shù),我們可以看到:
如果我們想得到該表格,我們可以使用列表的第一個索引(0)
在第二個Pandas read_html示例中,我們將從Wikipedia抓取數(shù)據(jù)。實際上,我們將得到蟒科蛇(也稱為蟒蛇)的HTML表格。
現(xiàn)在,我們得到了一個包含7個表(len(df))的列表。如果我們?nèi)ikipedia頁面,我們可以看到第一個表是右邊的那個。然而,在本例中,我們可能對第二個表更感興趣。
在第三個示例中,我們將從瑞典的covid-19病例中讀取HTML表。這里,我們將使用read_html方法的一些附加參數(shù)。具體來說,我們將使用match參數(shù)。在此之后,我們還需要清洗數(shù)據(jù),最后,我們將進行一些簡單的數(shù)據(jù)可視化操作。
如上圖所示,該表格的標題為:“瑞典各郡新增COVID-19病例”。現(xiàn)在,我們可以使用match參數(shù)并將其作為一個字符串輸入:
通過這種方式,我們只得到這個表,但它仍然是一個dataframes列表。現(xiàn)在,如上圖所示,在底部,我們有三個需要刪除的行。因此,我們要刪除最后三行。
現(xiàn)在,我們將使用Pandas iloc刪除最后3行。注意,我們使用-3作為第二個參數(shù)(請確保你查看了這個Panda iloc教程,以獲得更多信息)。最后,我們還創(chuàng)建了這個dataframe的一個副本。
在下一節(jié)中,我們將學習如何將多索引列名更改為單個索引。
現(xiàn)在,我們要去掉多索引列。也就是說,我們將把2列索引(名稱)變成唯一的列名。這里,我們將使用DataFrame.columns 和 DataFrame.columns,get_level_values:
最后,正如你在“date”列中所看到的,我們使用Pandas read_html從WikiPedia表格抓取了一些注釋。接下來,我們將使用str.replace方法和一個正則表達式來刪除它們:
現(xiàn)在,我們繼續(xù)使用Pandas set_index將日期列變成索引。這樣一來,我們稍后就可以很容易地創(chuàng)建一個時間序列圖。
現(xiàn)在,為了能夠繪制這個時間序列圖,我們需要用0填充缺失的值,并將這些列的數(shù)據(jù)類型更改為numeric。這里我們也使用了apply方法。最后,我們使用cumsum方法來獲得列中每個新值累加后的值:
在最后一個示例中,我們使用Pandas read_html獲取我們抓取的數(shù)據(jù),并創(chuàng)建了一個時間序列圖。現(xiàn)在,我們還導入了matplotlib,這樣我們就可以改變Pandas圖例的標題的位置:
在這個Pandas教程中,我們學習了如何使用Pandas read_html方法從HTML中抓取數(shù)據(jù)。此外,我們使用來自一篇Wikipedia文章的數(shù)據(jù)來創(chuàng)建了一個時間序列圖。最后,我們也可以通過參數(shù)index_col來使用Pandas read_html將' Date '列設置為索引列。
英文原文:https://www.marsja.se/how-to-use-pandas-read_html-to-scrape-data-from-html-tables
譯者:一瞬
著WPS開始使用JS宏,我也開始嘗試使用JavaScript(簡稱JS)在WPS表內(nèi)進行自動化開發(fā),實現(xiàn)一些小功能。今天的講的是如何自動清除表格內(nèi)容。
做表格自動化開發(fā),例如統(tǒng)計等等,每次運行腳本都需要清除之前運行得出的內(nèi)容,否則新舊結(jié)構(gòu)擠在一起就出現(xiàn)混亂了,分不清那個是最新的結(jié)果,這里我以我正在做的的一個折舊計算器為例進行說明。
JS宏和VBA宏本質(zhì)上都是一樣的工具,只不過JS宏可以實現(xiàn)跨平臺,但相關功能還沒有VBA那么完善。以上的效果其實就是兩行代碼實現(xiàn)的。代碼如下:
function catl(){
var urow=Application.Worksheets.Item("計算器").Range("A65535").End(xlUp).Row
Application.Worksheets.Item("計算器").Range("A5:D"+urow).Delete()
}
第一句,獲得當前表格中A列用了多少行,由于我這個表格用的是前四列,用這個語句就可以制定用了多少行,第二句是清除前四列第四行以后的所有內(nèi)容,也就是保留表頭,表格其他部分。
金山在做WPS的JS相關接口的時候已經(jīng)盡量向原來VBA的接口靠攏了,例如var urow=Application.Worksheets.Item("計算器").Range("A65535").End(xlUp).Row中的Application.Worksheets.部分和.Range("A65535").End(xlUp).Row部分幾乎要就是VBA語句,只不過官方文檔還不是很完善,這個End(xlUp)在文檔中壓根就沒有提這個用法。是我自己試出來的。
我是且行且思,一個程序員/數(shù)據(jù)分析師/金山辦公KVP,終身學習者,不定時和大家分享知識和好
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。