8 個 Python 高效數據分析的技巧

2021-03-02 上海數據分析

這篇文章介紹了 8 個使用 Python 進行數據分析的方法,不僅能夠提升運行效率,還能夠使代碼更加「優美」。

定義某種列表時,寫 For 循環過於麻煩,幸運的是,Python 有一種內置的方法可以在一行代碼中解決這個問題。

下面是使用 For 循環創建列表和用一行代碼創建列表的對比。

x = [1,2,3,4]
out = []
for item
in x:
out.append(item**2)
print(out)

[1, 4, 9, 16]

# vs.

x = [1,2,3,4]
out = [item**2 for item
in x]
print(out)

[1, 4, 9, 16]

厭倦了定義用不了幾次的函數?Lambda 表達式是你的救星!

Lambda 表達式用於在 Python 中創建小型,一次性和匿名函數對象, 它能替你創建一個函數。

lambda 表達式的基本語法是:


lambda arguments: expression

注意!只要有一個 lambda 表達式,就可以完成常規函數可以執行的任何操作。 

你可以從下面的例子中,感受 lambda 表達式的強大功能:

double =
lambda x: x * 2
print(double(5))

10

一旦掌握了 lambda 表達式,學習將它們與 Map 和 Filter 函數配合使用,可以實現更為強大的功能。

具體來說,map 通過對列表中每個元素執行某種操作並將其轉換為新列表。 

在本例中,它遍歷每個元素並乘以 2,構成新列表。 (注意!list()函數只是將輸出轉換為列表類型)

# Map
seq = [1, 2, 3, 4, 5]
result =
list(map(lambda var: var*2, seq))
print(result)

[2, 4, 6, 8, 10]

Filter 函數接受一個列表和一條規則,就像 map 一樣,但它通過比較每個元素和布爾過濾規則來返回原始列表的一個子集。

# Filter
seq = [1, 2, 3, 4, 5]
result =
list(filter(lambda x: x > 2, seq))
print(result)

[3, 4, 5]

Arange 返回給定步長的等差列表。

它的三個參數 start、stop、step 分別表示起始值,結束值和步長, 請注意!stop 點是一個「截止」值,因此它不會包含在數組輸出中。

# np.arange(start, stop, step)
np.arange(3, 7, 2)

array([3, 5])

Linspace 和 Arrange 非常相似,但略有不同。 

Linspace 以指定數目均勻分割區間,所以給定區間 start 和 end,以及等分分割點數目 num,linspace 將返回一個 NumPy 數組。 

這對繪圖時數據可視化和聲明坐標軸特別有用。

# np.linspace(start, stop, num)
np.linspace(2.0, 3.0, num=5)

array([ 2.0,  2.25,  2.5,  2.75, 3.0]


在 Pandas 中,刪除一列或在 NumPy 矩陣中求和值時,可能會遇到 Axis。

我們用刪除一列(行)的例子:

df.drop('Column A', axis=1)
df.drop('Row A', axis=0)

如果你想處理列,將 Axis 設置為 1,如果你想要處理行,將其設置為 0。

但為什麼呢? 

回想一下 Pandas 中的 shape。

df.shape
(# of Rows, # of Columns)

從 Pandas DataFrame 中調用 shape 屬性返回一個元組,第一個值代表行數,第二個值代表列數。

如果你想在 Python 中對其進行索引,則行數下標為 0,列數下標為 1,這很像我們如何聲明軸值。


如果您熟悉 SQL,那麼這些概念對您來說可能會更容易。 

無論如何,這些函數本質上就是以特定方式組合 DataFrame 的方式。 

在哪個時間跟蹤哪一個最適合使用可能很困難,所以讓我們回顧一下。

Concat 允許用戶在表格下面或旁邊追加一個或多個 DataFrame(取決於您如何定義軸)。

Merge 將多個 DataFrame 合併指定主鍵(Key)相同的行。

Join 和 Merge 一樣,合併了兩個 DataFrame。

 但它不按某個指定的主鍵合併,而是根據相同的列名或行名合併。

Apply 是為 Pandas Series 而設計的。如果你不太熟悉 Series,可以將它想成類似 Numpy 的數組。

Apply 將一個函數應用於指定軸上的每一個元素。

使用 Apply,可以將 DataFrame 列(是一個 Series)的值進行格式設置和操作,不用循環,非常有用!

df = pd.DataFrame([[4, 9],] *
3, columns=['A', 'B'])
df
A B
0  4  9
1  4  9
2  4  9

df.apply(np.sqrt)
A B
0  2.0  3.0
1  2.0  3.0
2  2.0  3.0

df.apply(np.sum, axis=0)
A
12
B
27

df.apply(np.sum, axis=1)
0    13
1    13
2    13


如果您熟悉 Microsoft Excel,那麼你也許聽說過數據透視表。 

Pandas 內置的 pivot_table 函數以 DataFrame 的形式創建電子表格樣式的數據透視表,,它可以幫助我們快速查看某幾列的數據。 

下面是幾個例子:

非常智能地將數據按照「Manager」分了組:

pd.pivot_table(df, index=["Manager", "Rep"])

或者也可以篩選屬性值

pd.pivot_table(df,index=["Manager","Rep"],values=["Price"])

希望上面的這些描述能夠讓你發現 Python 一些好用的函數和概念。

來源:

https://codequs.com/p/HyY9AMYeQ/python-for-data-science-8-concepts-you-may-have-forgotten

相關焦點

  • Python高效數據分析的8個技巧
    源 / Conor Dewey    編譯 / 專知【導讀】不管是參加Kaggle比賽,還是開發一個深度學習應用,第一步總是數據分析,這篇文章介紹了8個使用Python進行數據分析的方法,不僅能夠提升運行效率,還能夠使代碼更加「優美」。
  • 數據分析從業者必看,10 個加速 python 數據分析的簡單的小技巧
    數據科學愛好者 Parul Pandey 在近日發表了一篇博文,分享了在數據科學中非常實用的 10 個小技巧。雷鋒網(公眾號:雷鋒網) AI 科技評論將他的文章編譯整理如下。有時候,一點小小的黑客行為可以節省時間,挽救生命。一個小小的快捷方式或附加組件有時會被證明是天賜之物,並且可以真正提高生產力。
  • 8個Python高效數據分析的技巧
    文章來源於網絡來源|CSDN這篇文章介紹了8個使用Python
  • python數據分析專題 (7):python數據分析模塊
    也就是這些python的擴展包讓python可以做數據分析,主要包括numpy,scipy,pandas,matplotlib,scikit-learn等等諸多強大的模塊,在結合上ipython交互工具 ,以及python強大的爬蟲數據獲取能力,字符串處理能力,讓python成為完整的數據分析工具。
  • 小白數據分析——Python職位數據分析全鏈路
    數據清洗有了數據後,先不要著急分析。我們需要對數據先有個大概的了解,並在這個過程中剔除一些異常的記錄,防止它們影響後續的統計結果。總之,按照這3個屬性清洗完之後,還剩 9715 個職位。完成數據清洗後,我們就正式進入分析的環節了,分析分為兩部分,統計分析和文本分析,前者是對數值型指標做統計,後者是對文本進行分析。我們平時接觸到最多是前者,它可以讓我們從宏觀的角度去了解被分析的對象。文本分析也有不可替代的價值,我們下篇重點介紹。2.
  • Python做數據分析-簡潔、易讀、強大
    由於python是一種解釋性語言,大部分編譯型語言都要比python代碼運行速度快,有些同學就因此鄙視python。但是python是一門高級語言,其生產效率更高,時間通常比CPU的時間值錢,因此為了權衡利弊,考慮用python是值得的。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    ,然後再根據自 己的需求和規劃選擇學習其他方向課程,學完後一定要多實踐 總目錄 零基礎全能篇(4套課程) 實用編程技巧進價(1套課程) 數據分析與挖掘(8套課程) 辦公自動化(3套課程) 機器學習與人工智慧(7套課程) 開發實戰篇(4套課程) 量化投資(2套課程) 網絡爬蟲(
  • 超適合Python小白的乾貨,Python數據分析50個實戰項目
    2.大話NBA | 用數據帶你回顧喬丹的職業生涯3.分析幾十萬條知乎數據,我挖掘出了這些秘密4.用(大)數據全方位解讀電視劇《大秦帝國之崛起》5.以虎嗅網4W+文章的文本挖掘為例,展現數據分析的一整套流程6.從大數據輿情傳播角度看《三生三世十裡桃花》7.北京二手房房價分析8.kaggle數據分析實踐項目練習
  • python金融風控評分卡模型和數據分析
    (原創課程,版權所有,項目合作QQ:231469242,微信公眾號:pythonEducation) 課程介紹python金融風控評分卡模型和數據分析微專業課包含《python信用評分卡建模(附代碼)》,《python風控建模實戰lendingClub》,《金融現金貸用戶數據分析和畫像》三套課程系列
  • 量化交易之《Python數據分析》
    Numpy:提供數值數組和函數Scipy:科學計算庫Matplotlib:數據可視化 Numpy 數組的優勢1 Numpy數組能夠運用向量化運算來處理整個數組,而完成同樣的任務,python的列表則通常必須藉助循環語句遍歷列表,並對逐個元素進行相應的處理2 Numpy使用了優化過的C
  • Python數據分析—apply函數
    在對海量數據進行分析的過程中,我們可能要把文本型的數據處理成數值型的數據,方便放到模型中進行使用。
  • 大數據分析Python NumPy庫使用教程
    我將在大數據分析Python NumPy庫使用教程中學到什麼? 大數據分析Python NumPy庫使用教程為數據工程師提供有關NumPy的從零開始的培訓。這意味著您不需要具有NumPy的任何經驗,也不會浪費任何時間學習與數據工程工作無關的東西。
  • Python數學建模技巧之pandas數據處理
    因此,採用python去分析幾乎就成了唯一的選擇。恰好Python裡面的pandas庫提供了大數據處理分析的基本方法,是分析大型數據集的基礎武器。下面就具體講解一下pandas這個庫裡面最有用的一些函數操作。
  • 零基礎學python,你需要掌握這8個技巧!
    作為這幾年火爆的python,想要零基礎起步學習,興趣愛好是首要的,什麼語言都是入門簡單,精通難。相比java,c等語言來說python極其容易入門,但是簡單的語法也正是它的缺點,靈活導致很多bug在運行過程中才能發現,導致多人協同上很難保證統一的風格。
  • 大數據時代,如何培養數據分析思維?|建模|excel|數據分析|python|...
    大數據時代來臨,「數據」熱度飆升,衍生出的行業也受到追捧。據悉,中國大數據行業人才需求2020年將達210萬,未來5年需求量在2000萬人左右。可見,國內數據分析崗錢途與前景並存,想入門該朝陽產業,需要先明白數據分析究竟是什麼?
  • python數據分析專題 (9):numpy基礎
    NumPy(Numerical Python的簡稱)是高性能科學計算和數據分析的基礎包。NumPy最重要的一個特點就是其N維數組對象(即ndarray),該對象是一個快速而靈活的大數據集容器。新手可能不理解這句話的含義,這個需要慢慢去理解 。總之,知道numpy是python數據分析最重要的基礎包就可以了。
  • 為什麼數據分析要學習Python?
    酷炫的圖表,理性的分析闡述,出其不意又在情理之中的思考角度,總讓人對這群「用數據講故事的人」充滿了嚮往。數據分析師大體工作流程可以簡化描述成:數據獲取整理——數據分析——數據報告幾個關鍵環節。2、進階能力:使用Python語言進行更高效、更深入、更強大的數據分析Python是近年來最火的程式語言之一,在數據分析領域,Python語言的運行效率是Excel望塵莫及的,圖表的交互性和工作可復用性也非Excel可比擬。
  • 10 個 Python 字符串處理技巧
    (給Python開發者加星標,提升Python技能)來源:數據派THU在探尋文本分析途徑時卻不知從何下手,該怎麼辦?
  • 數據分析工具篇——pandas高效函數
    ,這些方法圍繞數據的查詢結果進行深入處理,在數據分析中主要做特徵處理工作。Dataframe數據結構的去重主要有三個函數:unique、drop_duplicates、duplicated。   就像之前筆者說的,實現的方法有很多,重要的是有一個方法記在心裡,如有需要可以直接應用,後面優化過程可以再去找一些高效的函數即可。
  • Python數據分析PPT報告自動化
    很多時候,我們需要做一些重複性的工作,比如說,每個月製作類似的數據分析報告,整個框架是基本固定的,此時,我們可以採用 Python 來自動生成數據分析報告,把更多的時間和精力用在分析上面,而不是調整報告的格式。