用python取證調查(python向上取證)

本文目錄一覽:

python可以做數據分析,好處是什麼呢?怎麼學習?

鏈接:

提取碼:7234

煉數成金:Python數據分析。Python是一種面向對象、直譯式計算機程序設計語言。也是一種功能強大而完善的通用型語言,已經具有十多年的發展歷史,成熟且穩定。Python 具有腳本語言中最豐富和強大的類庫,足以支持絕大多數日常應用。 Python語法簡捷而清晰,具有豐富和強大的類庫。它常被昵稱為膠水語言,它能夠很輕鬆的把用其他語言製作的各種模塊(尤其是C/C++)輕鬆地聯結在一起。

課程將從Python的基本使用方法開始,一步步講解,從ETL到各種數據分析方法的使用,並結合實例,讓學員能從中借鑒學習。

課程目錄:

Python基礎

Python的概覽——Python的基本介紹、安裝與基本語法、變量類型與運算符

了解Python流程控制——條件、循環語句與其他語句

常用函數——函數的定義與使用方法、主要內置函數的介紹

…..

python能幹什麼?

學完Python之後,可以從事以下工作崗位:

1、web開發:Python擁有非常完善的與web服務器進行交互的庫,以及大量免費前端網頁模板,有非常優秀而且成熟的diangoWEB框架,功能齊全。

2、Linux運維:通過shell腳本去實現自動化運維,但是編程能力較弱,可以使用功能的庫很少,而Python作為膠水語言,可以很方便的與其他想結合,對各類工具進行二次開發,形成一套自己的運維管理系統。

3、遊戲開發:在遊戲開發方面可能Python無法匹敵C++,但是由於Python腳本化的優點,類似於遊戲劇本、遊戲玩法邏輯等這種非常靈活的設計上,修改起來非常方便。如果用於開發一款遊戲程序,Python是非常具有優勢的。

4、網絡爬蟲:在爬蟲方面,Python可以說是獨領風騷了,Python具有非常豐富的庫去網頁文檔的接口api以及後期網頁文檔的快速處理。

5、桌面軟件:在Windows系統桌面開發領域,C++等語言應用十分廣泛,而Python可以實現與C++無縫對接,並且同時支持QT以及GTK。

6、數據分析:python作為一門工程性語言,對於數據處理的類庫是相當豐富的,比如有高性能的科學計算類庫NumPy和SciPy。

7、人工智能:其實可以寫人工智能語言有很多,為何Python是首先呢?因為Python是膠水語言,具有獨特優勢才具有如此好的效果,主要使用python是因為CPython和底層原因的融合使得開發起來更加方便。

更多技術乾貨,可關註:

怎樣用 Python 進行數據分析?

做數據分析,首先你要知道有哪些數據分析的方法,然後才是用Python去調用這些方法

那Python有哪些庫類是能做數據分析的,很多,pandas,sklearn等等

所以你首先要裝一個anaconda套件,它包含了幾乎所有的Python數據分析工具,

之後再學怎麼分析。

如何用 Python 和正則表達式抽取文本結構化信息?

痛點

很多人的日常工作,都是要和大量的文本打交道的。

例如學者需要閱讀大量的文獻材料,從中找到靈感、數據與論據。

學生需要閱讀很多教科書和論文,然後寫自己的報告或者做幻燈。

財經分析師,需要從大量的新聞報道中,找到行業的發展趨勢和目標企業動態的蛛絲馬跡。

不是所有的文本處理,都那麼新鮮而有趣。

有一項重要但繁瑣的工作,就是從大量的文本當中抽取結構化的信息。

許多數據分析的場景,都要求輸入結構化的信息。

例如在咱們之前介紹過的《貸還是不貸:如何用 Python 和機器學習幫你決策?》和《如何用 Python 和深度神經網絡鎖定即將流失的客戶?》中,你都看到了,機器模型更喜歡被結構化的表格信息來餵養。

然而,結構化的信息,不一定就在那裡,靜候你來使用。很多時候,它蘊藏在以往生成的非結構化文本中。

你可能早已習慣,人工閱讀文本信息,把關鍵點摘取出來,然後把它們拷貝粘貼放到一個表格中。從原理上講,這樣做無可厚非。但是實際操作裏面,效率太低,而且太麻煩。

大部分人,是不願意從事這種簡單重複的枯燥工作的。

一遍遍機械重複鼠標劃定文本範圍,「Ctrl+C」、切換到表格文檔、找准輸入位置,再 「Ctrl+V」……

這種事兒做得太多,對你的肩肘關節,甚至是身心健康,都有可能造成不利影響。

想不想嘗試用一種更簡單的自動化方式,替你快速完成這些煩人的操作步驟呢??

讀過本文後,希望你能找到答案。

樣例

這裡,我們舉一個極端簡化的中文文本抽取信息例子。

之所以這樣做,是為了避免你在解讀數據上花費太多時間。

我更希望,你能夠聚焦於方法,從而掌握新知。

假設一個高中班主任,高考後讓班長統計一下學生們的畢業去向。班長很認真地進行了調查,然後做了如下彙報:

張華考上了北京大學

李萍進了中等技術學校

韓梅梅進了百貨公司

……

為了讓你對樣例足夠熟悉,甚至有共鳴,這裡我從 1998 年版的新華字典中,「借鑒」 了部分內容。

夠貼心吧?

現實生活中,一個班大概不會只有 3 個人,因此你可以想像這是一個長長的句子列表。

但其實班主任有個隱含的意思沒有表達出來,即:

我想要一張表格!

所以,看到這一長串的句子,你可以想像他的表情。

班長估計也很難堪:

想要表格你早說啊!

這時候,假設你是班長,怎麼辦?

信息都在文本裏面。但如果需要轉換成表格,就得一個個信息點去尋找和處理。

其實,對於四五十人的班級來說,手動操作也不是什麼太難的事情。

但是設想一下,如果你需要處理的數據量,是這個例子的十倍、百倍甚至千萬倍呢?

繼續堅持手動處理?

這不僅麻煩,而且不現實。

我們需要找到一種簡單的方法,幫助我們自動抽取相應的信息。

此處我們使用的方法,是正則表達式。

正則

「正則表達式」 這個名字,初聽起來好像很玄妙。實際上,它是從英文 「regular expression」 翻譯過來的。

如果譯成白話,那就是 「有規律的表述形式」。

這,聽起來,是不是就更加接地氣了?

但是,給你補一下 「假行家 101」 課程:

說別人聽得懂的話,你能唬得住誰?

約定俗成,咱們繼續沿用 「正則表達式」,來稱呼它好了。

從創生之日起,它就給文本處理帶來了高效率。

但是,用它的主要人群,卻不是時常跟文字打交道的作家、編輯、學者、文員,而是……

程序員!

程序員寫的代碼,是文本;程序員處理的數據,很多也是文本格式。其中便有很多顯著的規律可循。

正是靠着正則表達式這種獨門秘籍,許多別人做起來,需要昏天黑地一整周的任務,程序員可以半小時搞定,然後喝着咖啡等下班。

即便到了泛人工智能的今天,正則表達式依然有許多令你意想不到的應用。

例如人機對話系統。

你可能看了新聞報道,總以為人機對話都是靠着知識圖譜或者深度學習搞出來的。

不能說這裏面,沒有上述炫酷技術的參與。但它們充其量,只佔其中一部分,或許還只是一小部分。

生產實踐裏面,大量的對話規則後面,並不是讓你倍感神奇深奧的神經網絡,而是一堆正則表達式。

你可能會擔心,這樣高端的應用技術,自己能掌握嗎?

答案是:

當然!

正則表達式,並不難學。

尤其是當你把它和 Python 結合到一起,那簡直就是效率神器了。

我們這就來看看,正則表達式怎麼幫我們識別出樣例文本裏面 「人名」 和 「去向」 信息。

試練

請你開啟一個瀏覽器,鍵入這個網址()。

你會看見如下界面。

它可是一個正則表達式實驗的利器。我教 INFO 5731 課程時,學生們就是在掌握了這個工具以後,迅速玩兒轉了正則表達式。

這麼好的工具,一定要價不菲吧?

不,它是免費的。你放心大膽使用就好了。

我們首先把左側的編程語言,從默認的 PHP ,調整為 Python。

之後,把需要進行處理的文本,貼到中間空白的大文本框裏面。

下面我們來嘗試進行 「匹配」。

什麼叫做匹配呢?

就是你寫一個表達式,電腦便拿着雞毛當令箭,在每一行文本上,都認認真真地找有沒有符合該表達式的文本段落。

如有,則會高亮顯示出來。

這裡我們觀察一下,發現每個句子裏面,人員去向前面,都有一個 「了」 字。

好,我們就在中部上方小文本框里,把 「了」 字輸入進去。

可以看到,三句話裏面的 「了」,全都亮了。

這就是你接觸到的第一種匹配方式 —— 按照字符原本的意思來查找一致的內容。

因為樣例文本的規律性,我們可以把 「了」 當成一個定位符,它後面,到句子結束位置,是 「去向」 信息。

咱們需要找的一半結構化信息,不就是這個 「去向」 嗎?

我們嘗試匹配 「去向」。

怎麼匹配呢?這次每一行的字兒都不一樣啊?

沒關係,正則表達式強大之處,此時就顯示出來了。

你可以用一個點號,也就是.,表示任意字符。

字母、數字、標點…… 甚至是中文,也能涵蓋在內。

然後我們繼續想想看,去向信息這裡,會有幾個字呢?

不好說。

例子裏面這簡單的三句話,就有 「4 個字」 或者 「6 個字」 兩種情況。

所以,我們無法指定去向信息裏面字符的長度。

但這也沒關係,我們只需要用一個星號(*),就可以代表出現次數,從 0 到無窮大都可以匹配。

當然,實際情況中,是不會真出現無窮大的。

我們在剛才輸入的基礎上,加上.*,結果就成了這個樣子:

不錯嘛!

不過似乎去向信息和 「了」 字兒都是一樣顏色的高亮。那不就混到了一起嗎?

我們可不想這樣。

怎麼辦?

請你在.* 的兩側,嘗試加入一對小括號(注意,不要用中文全角符號)試試看。

你會發現,這次 「了」 依然用藍色表示,而後面的去向信息,已經變成了綠色。

這一對小括號,很重要,它叫做 「分組」,是提取信息的基本單位。

我們的任務已經解決了一半了,是吧?

下面我們來嘗試把人名一併抽取出來。

我們來找人名的錨定位置。

細細觀察,你不難發現,每個人名的後面,都有個動詞跟着。

升學的同學,用的是 「考」 字,而就業的同學,用的是 「進」 字。

我們先嘗試一下 「考」 字。

這裡我們嘗試直接把 「考」 字放在 「了」 字以前。但是你會發現,什麼匹配結果也沒有。

為什麼?

回看數據,你會發現,人家用的原詞是 「考上了」。

當然這裡我們可以輸入 「上」 字。不過你要考慮一下更為通用的情況。

好比說,「考取了」 怎麼辦?「考入了」 呢?

更好的方式,是繼續使用我們剛才學會的 「大招」,在 「考」 和 「了」 之間,插入一個.*。

這時候,你的正則表達式的樣子是 考.*了(.*)

看,第一行的信息成功匹配了吧?

但是,那後面還有兩行沒有匹配,怎麼辦?

我們依樣畫葫蘆,就會發現,使用進.*了(.*) 就能正確匹配後兩行。

問題來了:

匹配第一行的,匹配不了後兩行,反之亦然。

這不好。我們希望寫的表達式,能夠更通用。

怎麼辦?

我們看看正則表達式當中 「或」 關係的表示。

這裡,我們可以把兩個字符用豎線隔開,旁邊用中括號括起來,代表兩者任一出現,都算匹配成功。

也就是,把正則表達式,寫成這樣:[考|進].*了(.*)

太棒了,三行的內容都已經匹配成功。

這裡,動詞詞組,和代表時態的 「了」 作為中間錨定信息,我們可以放心大膽,把之前的人名信息,提取出來了。

也就是這樣寫:(.*)[考|進].*了(.*)

注意此時,人名分組是綠色,去向分組是紅色的。

我們成功提取了兩組信息!慶祝一下!

可是,如果你給班主任看這裡的結果,估計他不會滿意。

表格,我要表格!

別著急,該 Python 出場了。

下面我們嘗試在 Python 把數據正式提取出來。

環境

本文的配套源代碼,我放在了 Github 上。

你可以在我的公眾號 「玉樹芝蘭」(nkwangshuyi)後台回復 「regex」,查看完整的代碼鏈接。

如果你對我的教程滿意,歡迎在頁面右上方的 Star 上點擊一下,幫我加一顆星。謝謝!

注意這個頁面的中央,有個按鈕,寫着 「在 Colab 打開」(Open in Colab)。請你點擊它。

然後,Google Colab 就會自動開啟。

我建議你點一下上圖中紅色圈出的 「COPY TO DRIVE」 按鈕。這樣就可以先把它在你自己的 Google Drive 中存好,以便使用和回顧。

Colab 為你提供了全套的運行環境。你只需要依次執行代碼,就可以復現本教程的運行結果了。

如果你對 Google Colab 不熟悉,沒關係。我這裡有一篇教程,專門講解 Google Colab 的特點與使用方式。

為了你能夠更為深入地學習與了解代碼,我建議你在 Google Colab 中開啟一個全新的 Notebook ,並且根據下文,依次輸入代碼並運行。在此過程中,充分理解代碼的含義。

這種看似笨拙的方式,其實是學習的有效路徑。

代碼

首先,讀入 Python 正則表達式包。

import re

然後,我們把數據準備好。注意為了演示代碼的通用性,我這裡在最後加了一行文字,區別於之前的文字規律,看看我們的代碼能否正確處理它。

data = “””張華考上了北京大學

李萍進了中等技術學校

韓梅梅進了百貨公司

他們都有光明的前途”””

然後,該寫正則表達式了。你真的需要自己手動來寫嗎?

當然不必。

強大的 regex101 網站,已經幫助我們準備好了。

請你點擊上圖中紅色圈出的按鈕,網站會為你準備好一個初始代碼的模板,可以匹配你需要的模式。

你不需要完全照搬代碼。其中有這樣一句,是很重要的,拷貝過來,貼到 Colab Notebook 就好。

regex = r”(.*)[考|進].*了(.*)”

以上就是你的正則表達式,在 Python 裏面應有的樣子。

我們準備一個空列表,用來接收數據。

mylist = []

接着,寫一個循環。

for line in data.split(‘n’):

 mysearch = re.search(regex, line)

 if mysearch:

   name = mysearch.group(1)

   dest = mysearch.group(2)

   mylist.append((name, dest))

我給你解釋一下這個循環裏面,各條語句的含義:

data.split(‘n’) 把文本數據按行來拆分開。這樣我們就可以針對每一行,來獲取數據。mysearch = re.search(regex, line) 這一句嘗試匹配模式到該行內容。if mysearch 這個判斷語句,是讓程序分辨一下,該行是否有我們要找的模式。例如最後一行文字,裏面並沒有咱們前面分析的文字模式。遇到這樣的行,直接跳過。name = mysearch.group(1) 是說匹配的第一組內容,也就是 regex101 網站里綠色代表的人名分組存到 name 變量里。下一句依次類推。注意 group 對應你正則表達式裏面小括號出現的順序,從 1 開始計數。mylist.append((name, dest)) 把該行抽取到的信息,存入到咱們之前定義的空列表裏面。

注意,如果不加 mysearch = re.search(regex, line) 這一句,程序會對每一行都嘗試匹配並且抽取分組內容,那麼結果就會報這樣的錯誤:

所以你看,用正則表達式抽取信息時,不能蠻幹。

此時,我們查看一下 mylist 這個列表裏面的內容:

mylist

結果為:

[(‘張華’, ‘北京大學’), (‘李萍’, ‘中等技術學校’), (‘韓梅梅’, ‘百貨公司’)]

不錯,一個不多,一個不少,恰好是我們需要的。

我們要把它導出成為表格。方法有很多,但是最簡便順手的,是用 Pandas 數據分析軟件包。

import pandas as pd

只需要利用 pd.DataFrame 函數,我們就能把上面列表和元組(tuple)組成的一個二維結構,變成數據框。

df = pd.DataFrame(mylist)

df.columns = [‘姓名’, ‘去向’]

注意,這裡我們還非常細心地修改了表頭。

看看你的勞動成果吧:

df

有了數據框,轉換成為 Excel ,就是一行代碼的事情了:

df.to_excel(“dest.xlsx”, index=False)

進入 Files 標籤頁,刷新並且查看一下當前目錄下的內容:

這個 dest.xlsx 就是輸出的結果了。下載之後我們可以用 Excel 打開查看。

任務完成!

你可以把結果提交給班主任,看他滿意的笑容了。

小結

這篇教程裏面,咱們談了如何利用文本字符規律,藉助 Python 和正則表達式,來提取結構化信息。

希望你已經掌握了以下本領:

了解正則表達式的功用;

用 regex101 網站嘗試正則表達式匹配,並且生成初步的代碼;

用 Python 批量提取信息,並且根據需求導出結構化數據為指定格式。

再次強調一下,對於這麼簡單的樣例,使用上述方法,絕對是大炮轟蚊子。

然而,如果你需要處理的數據是海量的,這個方法給你節省下來的時間,會非常可觀。

希望你能夠舉一反三,在自己的工作中靈活運用它。

更多Python知識,請關註:Python自學網!!

北大青鳥設計培訓:如何利用python語言進行數據分析?

隨着互聯網的不斷發展,數據分析已經成為指導我們工作方向的主要依據之一,而今天我們就一起來了解一下,如何利用python編程開發來進行數據分析,下面電腦培訓就開始今天的主要內容吧。

為什麼要學習Python進行數據分析?Python作為一種用於數據分析的語言,近引起了廣泛的興趣。

我以前學過Python的基礎知識。

下面是一些支持學習Python的原因:開源-免費安裝很棒的在線社區簡單易學可以成為數據科學和基於web的分析產品生成的通用語言不用說,它也有一些缺點:它是一種解釋語言而不是編譯語言——因此可能會佔用更多的CPU時間。

但是,考慮到節省了程序員的時間(由於易於學習),它仍然是一個不錯的選擇。

Python2.7和3.4這是Python中受爭議的話題之一。

您一定會遇到它,特別是如果您是初學者的話。

這裡沒有正確/錯誤的選擇。

這完全取決於情況和你的需要。

我會試着給你一些建議來幫助你做出明智的選擇。

為什麼Python2.7?很棒的社區支持!這是你早年需要的東西。

Python2於2000年末發佈,已經使用了超過15年。

過多的三方庫!雖然許多庫都提供了3.x支持,但仍然有很多模塊只能在2.x版本上工作。

如果您計劃將Python用於特定的應用程序,比如高度依賴外部模塊的web開發,那麼使用2.7可能會更好。

原創文章,作者:EPKL,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/147145.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
EPKL的頭像EPKL
上一篇 2024-11-01 14:06
下一篇 2024-11-01 14:06

相關推薦

  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論