python編碼操作技巧(python採用什麼編碼)

本文目錄一覽:

可以讓你快速用Python進行數據分析的10個小技巧

一些小提示和小技巧可能是非常有用的,特別是在編程領域。有時候使用一點點黑客技術,既可以節省時間,還可能挽救「生命」。

一個小小的快捷方式或附加組件有時真是天賜之物,並且可以成為真正的生產力助推器。所以,這裡有一些小提示和小技巧,有些可能是新的,但我相信在下一個數據分析項目中會讓你非常方便。

Pandas中數據框數據的Profiling過程

Profiling(分析器)是一個幫助我們理解數據的過程,而Pandas Profiling是一個Python包,它可以簡單快速地對Pandas 的數據框數據進行 探索 性數據分析。

Pandas中df.describe()和df.info()函數可以實現EDA過程第一步。但是,它們只提供了對數據非常基本的概述,對於大型數據集沒有太大幫助。 而Pandas中的Profiling功能簡單通過一行代碼就能顯示大量信息,且在互動式HTML報告中也是如此。

對於給定的數據集,Pandas中的profiling包計算了以下統計信息:

由Pandas Profiling包計算出的統計信息包括直方圖、眾數、相關係數、分位數、描述統計量、其他信息——類型、單一變數值、缺失值等。

安裝

用pip安裝或者用conda安裝

pip install pandas-profiling

conda install -c anaconda pandas-profiling

用法

下面代碼是用很久以前的泰坦尼克數據集來演示多功能Python分析器的結果。

#importing the necessary packages

import pandas as pd

import pandas_profiling

df = pd.read_csv(‘titanic/train.csv’)

pandas_profiling.ProfileReport(df)

一行代碼就能實現在Jupyter Notebook中顯示完整的數據分析報告,該報告非常詳細,且包含了必要的圖表信息。

還可以使用以下代碼將報告導出到互動式HTML文件中。

profile = pandas_profiling.ProfileReport(df)

profile.to_file(outputfile=”Titanic data profiling.html”)

Pandas實現互動式作圖

Pandas有一個內置的.plot()函數作為DataFrame類的一部分。但是,使用此功能呈現的可視化不是互動式的,這使得它沒那麼吸引人。同樣,使用pandas.DataFrame.plot()函數繪製圖表也不能實現交互。 如果我們需要在不對代碼進行重大修改的情況下用Pandas繪製互動式圖表怎麼辦呢?這個時候就可以用Cufflinks庫來實現。

Cufflinks庫可以將有強大功能的plotly和擁有靈活性的pandas結合在一起,非常便於繪圖。下面就來看在pandas中如何安裝和使用Cufflinks庫。

安裝

pip install plotly

# Plotly is a pre-requisite before installing cufflinks

pip install cufflinks

用法

#importing Pandas

import pandas as pd

#importing plotly and cufflinks in offline mode

import cufflinks as cf

import plotly.offline

cf.go_offline()

cf.set_config_file(offline=False, world_readable=True)

是時候展示泰坦尼克號數據集的魔力了。

df.iplot()

df.iplot() vs df.plot()

右側的可視化顯示了靜態圖表,而左側圖表是互動式的,更詳細,並且所有這些在語法上都沒有任何重大更改。

Magic命令

Magic命令是Jupyter notebook中的一組便捷功能,旨在解決標準數據分析中的一些常見問題。使用命令%lsmagic可以看到所有的可用命令。

所有可用的Magic命令列表

Magic命令有兩種:行magic命令(line magics),以單個%字元為前綴,在單行輸入操作;單元magic命令(cell magics),以雙%%字元為前綴,可以在多行輸入操作。如果設置為1,則不用鍵入%即可調用Magic函數。

接下來看一些在常見數據分析任務中可能用到的命令:

% pastebin

%pastebin將代碼上傳到Pastebin並返回url。Pastebin是一個在線內容託管服務,可以存儲純文本,如源代碼片段,然後通過url可以與其他人共享。事實上,Github gist也類似於pastebin,只是有版本控制。

在file.py文件中寫一個包含以下內容的python腳本,並試著運行看看結果。

#file.py

def foo(x):

return x

在Jupyter Notebook中使用%pastebin生成一個pastebin url。

%matplotlib notebook

函數用於在Jupyter notebook中呈現靜態matplotlib圖。用notebook替換inline,可以輕鬆獲得可縮放和可調整大小的繪圖。但記得這個函數要在導入matplotlib庫之前調用。

%run

用%run函數在notebook中運行一個python腳本試試。

%run file.py

%%writefile

%% writefile是將單元格內容寫入文件中。以下代碼將腳本寫入名為foo.py的文件並保存在當前目錄中。

%%latex

%%latex函數將單元格內容以LaTeX形式呈現。此函數對於在單元格中編寫數學公式和方程很有用。

查找並解決錯誤

互動式調試器也是一個神奇的功能,我把它單獨定義了一類。如果在運行代碼單元時出現異常,請在新行中鍵入%debug並運行它。 這將打開一個互動式調試環境,它能直接定位到發生異常的位置。還可以檢查程序中分配的變數值,並在此處執行操作。退出調試器單擊q即可。

Printing也有小技巧

如果您想生成美觀的數據結構,pprint是首選。它在列印字典數據或JSON數據時特別有用。接下來看一個使用print和pprint來顯示輸出的示例。

讓你的筆記脫穎而出

我們可以在您的Jupyter notebook中使用警示框/注釋框來突出顯示重要內容或其他需要突出的內容。注釋的顏色取決於指定的警報類型。只需在需要突出顯示的單元格中添加以下任一代碼或所有代碼即可。

藍色警示框:信息提示

p class=”alert alert-block alert-info”

bTip:/b Use blue boxes (alert-info) for tips and notes.

If it』s a note, you don』t have to include the word 「Note」.

/p

黃色警示框:警告

p class=”alert alert-block alert-warning”

bExample:/b Yellow Boxes are generally used to include additional examples or mathematical formulas.

/p

綠色警示框:成功

p class=”alert alert-block alert-success”

Use green box only when necessary like to display links to related content.

/p

紅色警示框:高危

p class=”alert alert-block alert-danger”

It is good to avoid red boxes but can be used to alert users to not delete some important part of code etc.

/p

列印單元格所有代碼的輸出結果

假如有一個Jupyter Notebook的單元格,其中包含以下代碼行:

In [1]: 10+5

11+6

Out [1]: 17

單元格的正常屬性是只列印最後一個輸出,而對於其他輸出,我們需要添加print()函數。然而通過在notebook頂部添加以下代碼段可以一次列印所有輸出。

添加代碼後所有的輸出結果就會一個接一個地列印出來。

In [1]: 10+5

11+6

12+7

Out [1]: 15

Out [1]: 17

Out [1]: 19

恢復原始設置:

InteractiveShell.ast_node_interactivity = “last_expr”

使用’i’選項運行python腳本

從命令行運行python腳本的典型方法是:python hello.py。但是,如果在運行相同的腳本時添加-i,例如python -i hello.py,就能提供更多優勢。接下來看看結果如何。

首先,即使程序結束,python也不會退出解釋器。因此,我們可以檢查變數的值和程序中定義的函數的正確性。

其次,我們可以輕鬆地調用python調試器,因為我們仍然在解釋器中:

import pdb

pdb.pm()

這能定位異常發生的位置,然後我們可以處理異常代碼。

自動評論代碼

Ctrl / Cmd + /自動注釋單元格中的選定行,再次命中組合將取消注釋相同的代碼行。

刪除容易恢復難

你有沒有意外刪除過Jupyter notebook中的單元格?如果答案是肯定的,那麼可以掌握這個撤消刪除操作的快捷方式。

如果您刪除了單元格的內容,可以通過按CTRL / CMD + Z輕鬆恢復它。

如果需要恢復整個已刪除的單元格,請按ESC + Z或EDIT撤消刪除單元格。

結論

在本文中,我列出了使用Python和Jupyter notebook時收集的一些小提示。我相信它們會對你有用,能讓你有所收穫,從而實現輕鬆編碼!

python str與bytes編碼解碼

下面一張圖搞懂編碼、解碼、編碼表之間的關係。

不難看出,它們是一種根據編碼表進行翻譯、映射的過程:

實際上,字元串類型只有encode()方法,沒有decode()方法,而bytes類型只有decode()方法而沒有encode()方法。

二進位格式的數據也常稱為裸數據(raw data),所以str數據經過編碼後得到raw data,raw data解碼後得到的str。

上面說了,編碼是將字元數據轉換成位元組數據(raw data),解碼是將位元組數據轉換成字元數據。在Python中字元數據也就是字元串,即str類型,位元組數據也就是bytes類型或bytearray類型。

編碼時,可以使用位元組類型的構造方法bytes()、bytearray()來構造位元組,也可以使用str類型的encode()方法來轉換。

解碼時,可以使用str類型的構造方法str()來構造字元串,也可以使用bytes、bytearray()類型的decode()方法。

另外需要注意的是,編碼和解碼的過程中都需要指定編碼表(字符集),默認採用的是utf-8字符集。

例如,使用encode()的方式將str編碼為bytes數據。

使用bytes()和bytearray()將str構造成bytes或bytearray數據,這兩個方法都要求str-byte的過程中給定編碼。

實際上,bytes()、bytearray()這兩個方法構造位元組數據的時候還有點複雜,因為可以從多個數據源來構造,比如字元串、整數值、buffer。如何使用這兩個方法構造位元組數據,詳細內容參考help(bytes)和help(bytearray)給出的說明,這裡給幾個簡單示例。

構造bytes的方式:

構造bytearray的方式:

解碼是位元組序列到str類型的轉換。

例如,使用decode()方法進行解碼”我”字,它的utf-8的編碼對應為”\xe6\x88\x91″:

使用str()進行轉換。

當編碼、解碼的過程使用了不同的(不兼容的)編碼表時,就會出現亂碼。所以,解決亂碼的唯一方式是指定對應的編碼表進行編碼、解碼。

例如,使用utf-8編碼”我”字,得到一個bytes序列,然後使用gbk解碼這個bytes序列。

這裡報錯了,因為utf-8的位元組序列里有gbk無法解碼的位元組。如果使用文本編輯器一樣的工具去顯化這個過程,得到的將是亂碼字元。

原文地址:

Python 插曲:編碼風格是如何使用的呢?

插曲:編碼風格

此時你已經可以寫一些更長更複雜的 Python 程序,是時候討論一下 編碼風格 了。大多數語言可以寫(或者更明白的說, 格式化 )作幾種不同的風格。有些比其它的更好讀。讓你的代碼對別人更易讀是個好想法,養成良好的編碼風格對此很有幫助。

對於 Python,PEP 8 引入了大多數項目遵循的風格指導。它給出了一個高度可讀,視覺友好的編碼風格。每個 Python 開發者都應該讀一下,大多數要點都會對你有幫助:

使用 4 空格縮進,而非 TAB

在小縮進(可以嵌套更深)和大縮進(更易讀)之間,4空格是一個很好的折中。TAB 引發了一些混亂,最好棄用

折行以確保其不會超過 79 個字元

這有助於小顯示器用戶閱讀,也可以讓大顯示器能並排顯示幾個代碼文件

使用空行分隔函數和類,以及函數中的大塊代碼

可能的話,注釋獨佔一行

使用文檔字元串

把空格放到操作符兩邊,以及逗號後面,但是括弧里側不加空格:a = f(1, 2) + g(3, 4)

統一函數和類命名

推薦類名用 駝峰命名, 函數和方法名用 小寫_和_下劃線。總是用 self 作為方法的第一個參數(關於類和方法的知識詳見 初識類 )

不要使用花哨的編碼,如果你的代碼的目的是要在國際化環境。Python 的默認情況下,UTF-8,甚至普通的 ASCII 總是工作的最好

同樣,也不要使用非 ASCII 字元的標識符,除非是不同語種的會閱讀或者維護代碼。

你寫的Python編碼,別人知道嗎

Python 編碼規範重要性的原因用一句話來概括就是:統一的編碼規範可以提高開發效率。

無論你是 編程者,還是 閱讀者,好的規範能讓你的效率事半功倍,甚至機器在運行時,提高程序運行的效率。今天就帶你盤一盤python的編碼規範。

ps.python的代碼編寫基本上都要遵循PEP8的風格

1、分號

不要在行尾加分號, 也不要用分號將兩條命令放在同一行。

2、命名

module_name, package_name, ClassName, method_name

應該避免的名稱

單字元名稱, 除了計數器和迭代器.

包/模塊名中的連字元(-)

雙下劃線開頭並結尾的名稱(Python保留, 例如__init__)

命名約定

所謂”內部(Internal)”表示僅模塊內可用, 或者, 在類內是保護或私有的.

用單下劃線(_)開頭表示模塊變數或函數是protected的(使用import * from時不會包含).

用雙下劃線(__)開頭的實例變數或方法表示類內私有.

將相關的類和頂級函數放在同一個模塊里. 不像Java, 沒必要限制一個類一個模塊.

對類名使用大寫字母開頭的單詞(如CapWords, 即Pascal風格), 但是模塊名應該用小寫加下劃線的方式(如lower_with_under.py). 儘管已經有很多現存的模塊使用類似於CapWords.py這樣的命名, 但現在已經不鼓勵這樣做, 因為如果模塊名碰巧和類名一致, 這會讓人困擾.

3、行長度

每行不超過80個字元

以下情況除外:

長的導入模塊語句

注釋里的URL

不要使用反斜杠連接行。

Python會將 圓括弧, 中括弧和花括弧中的行隱式的連接起來 , 你可以利用這個特點. 如果需要, 你可以在表達式外圍增加一對額外的圓括弧。

推薦:

foo_bar(self, width, height, color=’black’, design=None, x=’foo’,

emphasis=None, highlight=0)

if (width == 0 and height == 0 and

color == ‘red’ and emphasis == ‘strong’):

如果一個文本字元串在一行放不下, 可以使用圓括弧來實現隱式行連接:

x = (‘這是一個非常長非常長非常長非常長 ‘

‘非常長非常長非常長非常長非常長非常長的字元串’)

4、縮進

用4個空格來縮進代碼

絕對不要用tab, 也不要tab和空格混用. 對於行連接的情況, 你應該要麼垂直對齊換行的元素(見 :ref:`行長度 ` 部分的示例), 或者使用4空格的懸掛式縮進(這時第一行不應該有參數):

5、空行

頂級定義之間空兩行, 方法定義之間空一行

頂級定義之間空兩行, 比如函數或者類定義. 方法定義, 類定義與第一個方法之間, 都應該空一行. 函數或方法中, 某些地方要是你覺得合適, 就空一行.

6、空格

按照標準的排版規範來使用標點兩邊的空格

括弧內不要有空格.

按照標準的排版規範來使用標點兩邊的空格

7、類

類應該在其定義下有一個用於描述該類的文檔字元串. 如果你的類有公共屬性(Attributes), 那麼文檔中應該有一個屬性(Attributes)段. 並且應該遵守和函數參數相同的格式.

8、塊注釋和行注釋

最需要寫注釋的是代碼中那些技巧性的部分. 如果你在下次 代碼審查 的時候必須解釋一下, 那麼你應該現在就給它寫注釋. 對於複雜的操作, 應該在其操作開始前寫上若干行注釋. 對於不是一目了然的代碼, 應在其行尾添加註釋.

# We use a weighted dictionary search to find out where i is in

# the array. We extrapolate position based on the largest num

# in the array and the array size and then do binary search to

# get the exact number.

if i (i-1) == 0: # true iff i is a power of 2

為了提高可讀性, 注釋應該至少離開代碼2個空格.

另一方面, 絕不要描述代碼. 假設閱讀代碼的人比你更懂Python, 他只是不知道你的代碼要做什麼.

# BAD COMMENT: Now go through the b array and make sure whenever i occurs

# the next element is i+1

9、字元串

正確示範:

x = a + b

x = ‘%s, %s!’ % (imperative, expletive)

x = ‘{}, {}!’.format(imperative, expletive)

x = ‘name: %s; score: %d’ % (name, n)

x = ‘name: {}; score: {}’.format(name, n)

錯誤示範:

x = ‘%s%s’ % (a, b) # use + in this case

x = ‘{}{}’.format(a, b) # use + in this case

x = imperative + ‘, ‘ + expletive + ‘!’

x = ‘name: ‘ + name + ‘; score: ‘ + str(n)

10、導包

每個導入應該獨佔一行

導入總應該放在文件頂部, 位於模塊注釋和文檔字元串之後, 模塊全局變數和常量之前. 導入應該按照從最通用到最不通用的順序分組:

【總結】

1.命名

2.空白

3.語句

4.注釋

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
XVXA的頭像XVXA
上一篇 2024-11-02 13:13
下一篇 2024-11-02 13:13

相關推薦

  • Python列表中負數的個數

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

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    編程 2025-04-29

發表回復

登錄後才能評論