回覆列表
  • 1 # 52sissi

      在如何使用Python指令碼轉換資料和命令列中,我們將深入探討如何使用Python指令碼和命令列來轉換資料。

      但是首先,值得提出一個您可能正在思考的問題:“ Python如何適合命令列,為什麼當我知道我可以使用IPython筆記本完成所有資料科學工作時,為什麼還要使用命令列與Python進行互動?還是Jupyter實驗室?”

      筆記本非常適合快速進行資料視覺化和探索,但是Python指令碼是將我們學到的東西投入生產的一種方式。假設您想建立一個網站,以幫助人們釋出具有理想標題和提交時間的Hacker News帖子。為此,您需要指令碼。

      本教程假定您具有函式的基本知識,並且有一點命令列經驗也不會受到損害。如果您以前從未使用過Python,請隨時檢視我們涵蓋Python函式基礎的任務,或者更深入地研究我們的一些資料科學課程。最近,我們釋出了兩個新的互動式命令列課程:“ 命令列元素”和“命令列中的文字處理”,因此如果您想更深入地研究命令列,我們也建議您

      也就是說,不必過分擔心先決條件!我們將解釋我們正在做的所有事情,所以讓我們開始吧!

      熟悉資料

      Hacker News是一個站點,使用者可以在該站點上透過Internet(通常是有關技術和創業公司)提交文章,而其他人可以“讚揚”這些文章,表示他們喜歡它們。提交的投票越多,在社群中就越受歡迎。熱門文章進入Hacker News的“首頁”,在其他網站上它們更有可能被他人看到。

      submission_time -故事提交時。

      upvotes -提交的投票數。

      url —提交的基本域。

      headline—提交的標題。使用者可以對其進行編輯,而不必與原始文章的標題相匹配。

      我們將編寫指令碼來回答三個關鍵問題:

      哪些域名最常提交給Hacker News?

      大多數文章什麼時候提交?

      切記:在程式設計時,有多種方法可以處理任務。在本教程中,我們將逐步解決這些問題,但是肯定還有其他方法同樣有效,因此請隨時嘗試並嘗試提出自己的方法!

      使用命令列和Python指令碼讀取資料

      要加註星標,讓我們Transforming_Data_with_Python在桌面上建立一個資料夾。要使用命令列建立資料夾,可以使用mkdir命令,後跟資料夾名稱。例如,如果要建立一個名為的資料夾test,則可以導航到Desktop目錄,然後鍵入mkdir test。

      儘管有多種使用命令列建立檔案的方法,但我們可以利用一種稱為管道傳輸和重定向輸出的技術來一次完成兩件事:將輸出從stdout(命令列生成的標準輸出)重定向到檔案中並建立一個新檔案!換句話說,我們可以讓它建立一個新檔案並使它的輸出成為該檔案的內容,而不是讓命令列僅列印其輸出。

      要做到這一點,我們可以使用>和>>,這取決於我們想用檔案來完成。如果檔案不存在,兩者都會建立一個檔案;但是,>將使用重定向的輸出覆蓋檔案中已有的文字,同時>>將任何重定向的輸出附加到檔案中。

      我們希望將資料讀入該檔案並建立一個描述性的檔名和函式名稱,因此我們將建立一個名為的函式,load_data()並將其儲存在名為的檔案中read.py。讓我們使用讀取資料的命令列建立函式。為此,我們將使用該printf函式。(我們將使用printf它,因為它允許我們列印換行符和製表符,我們將使用它們來使指令碼對自己和其他人更具可讀性)。

      為此,我們可以在命令列中輸入以下內容

      printf "import pandas as pd\n\ndef load_data():\n\thn_stories = pd.read_csv("hn_stories.csv")\n\thn_stories.colummns = ["submission_time", "upvotes", "url", "headline"]\n\treturn(hn_stores)\n" > read.py

      檢查上面的程式碼,有很多事情要做。讓我們將其分解。在函式中,我們是:

      a.請記住,我們要使指令碼可讀,我們正在使用printf命令透過命令列生成一些輸出,以在生成輸出時保留格式。

      b.進口大熊貓。

      c.將資料集(hn_stories.csv)讀入pandas資料框。

      d.使用df.columns列名新增到我們的資料幀。

      e.建立一個名為的函式load_data(),其中包含用於讀取和處理資料集的程式碼。

      f.利用換行符(\n)和製表符(\t)保留格式,因此Python可以讀取指令碼。

      g.將輸出重定向printf到read.py使用>運算子呼叫的檔案。由於read.py尚不存在,因此已建立檔案。

      執行上面的程式碼後,我們可以cat read.py在命令列中鍵入並執行命令以檢查的內容read.py。如果一切正常執行,我們的read.py檔案將如下所示:

      創造 __init__.py

      在該專案的其餘部分,我們將建立更多指令碼來回答我們的問題並使用該load_data()函式。儘管我們可以將該函式貼上到使用該函式的每個檔案中,但是如果我們正在處理的專案很大,則可能會變得非常麻煩。

      為了解決這個問題,我們可以建立一個名為的檔案__init__.py。本質上,__init__.py允許資料夾將其目錄檔案視為包。最簡單的形式__init__.py可以是一個空檔案。它只需要存在就可以將目錄檔案視為包。您可以在Python文件中找到有關包和模組的更多資訊。

      因為load_data()是中的函式read.py,所以我們可以使用匯入包的相同方法來匯入該函式:from read import load_data()。

      還記得使用命令列建立檔案的多種方法嗎?我們可以使用另一個命令來建立檔案__init__.py這次,我們將使用該touch命令來建立檔案。touch是一個在您執行命令後立即為您建立一個空檔案的命令:

      探索標題中的單詞

      現在,我們已經建立了一個指令碼來讀取和處理資料以及建立的資料__init__.py,我們可以開始分析資料了!我們要探索的第一件事是標題中出現的獨特詞。為此,我們要執行以下操作:

      1)count.py使用命令列建立一個名為的檔案。

      2)load_data從匯入read.py,並呼叫函式以讀取資料集。

      3)將所有標題合併為一個長長的字串。當您合併標題時,我們希望在每個標題之間留一個空格。在此步驟中,我們將使用Series.str.cat連線字串。

      4)將長字串拆分成單詞。

      5)使用Counter類可以計算每個單詞在字串中出現的次數。

      6)使用該.most_common()方法將100個最常用的單詞儲存到wordCount。

      如果使用命令列建立此檔案,則外觀如下:

      printf "from read import load_data\nfrom collections import Counter\n\nstories = load_data()\nheadlines = stories["headline"].str.cat(sep = " ").lower()\nwordCount = Counter(headlines.split(" ")).most_common(100)\nprint(wordCount)\n" > count.py

      執行上面的程式碼後,您可以cat count.py在命令列中鍵入並執行命令以檢查的內容count.py。如果一切正常執行,您的count.py檔案將如下所示:

      現在,我們已經建立了Python指令碼,我們可以從命令列執行指令碼以獲取一百個最常用單詞的列表。要執行指令碼,我們從命令列鍵入python count.py命令。

      指令碼執行後,您將看到以下列印結果:

      [("the", 2045), ("to", 1641), ("a", 1276), ("of", 1170), ("for", 1140), ("in", 1036), ("and", 936), ("", 733), ("is", 620), ("on", 568), ("hn:", 537), ("with", 537), ("how", 526), ("-", 487), ("your", 480), ("you", 392), ("ask", 371), ("from", 310), ("new", 304), ("google", 303), ("why", 262), ("what", 258), ("an", 243), ("are", 223), ("by", 219), ("at", 213), ("show", 205), ("web", 192), ("it", 192), ("–", 184), ("do", 183), ("app", 178), ("i", 173), ("as", 161), ("not", 160), ("that", 160), ("data", 157), ("about", 154), ("be", 154), ("facebook", 150), ("startup", 147), ("my", 131), ("|", 127), ("using", 125), ("free", 125), ("online", 123), ("apple", 123), ("get", 122), ("can", 115), ("open", 114), ("will", 112), ("android", 110), ("this", 110), ("out", 109), ("we", 106), ("its", 102), ("now", 101), ("best", 101), ("up", 100), ("code", 98), ("have", 97), ("or", 96), ("one", 95), ("more", 93), ("first", 93), ("all", 93), ("software", 93), ("make", 92), ("iphone", 91), ("twitter", 91), ("should", 91), ("video", 90), ("social", 89), ("&", 88), ("internet", 88), ("us", 88), ("mobile", 88), ("use", 86), ("has", 84), ("just", 80), ("world", 79), ("design", 79), ("business", 79), ("5", 78), ("apps", 77), ("source", 77), ("cloud", 76), ("into", 76), ("api", 75), ("top", 74), ("tech", 73), ("javascript", 73), ("like", 72), ("programming", 72), ("windows", 72), ("when", 71), ("ios", 70), ("live", 69), ("future", 69), ("most", 68)]

      在我們的網站上滾動瀏覽它們會有些尷尬,但是您可能會注意到最常見的詞,例如等等。這些詞被稱為停用詞the,to a for這些詞對人類語音很有用,但對資料分析沒有任何幫助。您可以在我們的spaCy教程中找到更多有關停用詞的資訊;如果要擴充套件此專案,則從我們的分析中刪除停用詞將是一個有趣的下一步。

      即使包含了停用詞,我們也可以發現一些趨勢。除了停用詞之外,這些詞中的絕大多數都是與技術和創業相關的術語。考慮到HackerNews專注於科技創業公司,這並不奇怪,但是我們可以看到一些有趣的特定趨勢。例如,谷歌是該資料集中最常提及的品牌。Facebook,Apple和Twitter等其他品牌也是討論的熱門話題。

      探索域提交

      現在我們已經探索了不同的標題並顯示了前100個最常用的詞,現在我們可以探索域提交了!為此,我們可以執行以下操作:

      1)domains.py使用命令列建立一個名為的檔案。

      2)load_data從匯入read.py,並呼叫函式以讀取資料集。

      3)使用value_counts()大熊貓中的方法來計算列中每個值的出現次數。

      4)遍歷該系列並列印索引值及其關聯的總數。

      這是命令列形式的外觀:

      printf "from read import load_data\n\nstories = load_data()\ndomains = stories["url"].value_counts()\nfor name, row in domains.items():\n\tprint("{0}: {1}".format(name, row))\n" > domains.py

      再一次,如果我們cat domains.py在命令列中輸入來檢查domains.py,我們應該看到:

      探索提交時間

      我們想知道大多數文章何時提交。一種簡單的重組方法是檢視文章的提交時間。為了弄清楚這一點,我們需要使用該submission_time列。

      該submission_time列包含如下時間戳:2011-11-09T21:56:22Z。這些時間以UTC表示,UTC是大多數軟體用於保持一致性的通用時區(想象一個數據庫中填充的時間都具有不同的時區;要使用它會非常麻煩)。

      要從時間戳獲取小時,我們可以使用該dateutil庫。中的parser模組dateutil包含parse函式,該函式可以帶一個時間戳,如何使用Python指令碼轉換資料和命令列https://www.aaa-cg.com.cn/data/2304.html並返回一個datetime物件。這是文件的連結。解析時間戳後,hour結果日期物件的屬性將告訴您文章提交的時間。

      為此,我們可以執行以下操作:

      1)times.py使用命令列建立一個名為的檔案。

      2)編寫一個函式以從時間戳中提取小時。此函式應首先用於dateutil.parser.parse解析時間戳,然後從結果datetime物件中提取小時,然後使用來返回小時.hour。

      3)使用pandas apply()方法建立提交時間列。

      4)使用value_counts()大熊貓中的方法來計算每小時發生的次數。

      5)列印結果。

      我們在命令列中執行以下操作:

      printf "from dateutil.parser import parse\nfrom read import load_data\n\n\ndef extract_hour(timestamp):\n\tdatetime = parse(timestamp)\n\thour = datetime.hour\n\treturn hour\n\nstories = load_data()\nstories["hour"] = stories["submission_time"].apply(extract_hour)\ntime = stories["hour"].value_counts()\nprint(time)" > times.py

      這是它看起來像一個單獨.py檔案的樣子(如上所述,您可以透過cat times.py從命令列執行以檢查檔案來進行確認):

      現在,我們已經建立了Python指令碼,我們可以從命令列執行指令碼,以獲取特定時間內釋出了多少篇文章的列表。為此,您可以從命令列鍵入python times.py命令。執行此指令碼,您將看到以下結果:

      您會注意到大多數提交內容是在下午釋出的。但是請記住,這些時間是UTC時間。如果您有興趣擴充套件此專案,請嘗試在指令碼中新增一個部分,以將UTC的輸出轉換為本地時區。

      下一步

      在如何使用Python指令碼轉換資料和命令列中,我們探索了資料並建立了一個短指令碼目錄,這些短指令碼可相互配合以提供所需的答案。這是構建我們的資料分析專案的生產版本的第一步。

      但是,當然,這僅僅是開始!在如何使用Python指令碼轉換資料和命令列中,我們沒有使用過upvotes資料,因此這是擴充套件分析範圍的一個不錯的下一步:

      a.標題長度最大才能獲得最多投票?

      b.提交時間最多的是什麼?

      c.投票總數隨時間變化如何?

      我們鼓勵您結合自己的問題,並在繼續探索此資料集時發揮創造力!

    https://www.toutiao.com/i6831049808313057804/

  • 2 # 芳說芳語

    1、首先在資源管理器裡複製一下py檔案存放的路徑,按下windows鍵+r,在執行裡輸入cmd,回車開啟命令列:

    2、在命令列裡,先切換到py檔案的路徑下面,接著輸入“python 檔名.py ”執行python檔案:

    3、按下回車鍵,可以看到視窗中py檔案開始運行了,注意在命令列執行py檔案,要將python安裝路徑新增到環境變數path中,否則會報錯,找不到命令。至此python執行檔案的操作就完成了:

  • 中秋節和大豐收的關聯?
  • 春秋外交家與戰國外交家有什麼不同?