
pandas 是為了解決數據分析任務而創建的一種工具。pandas提供了大量能使我們快速便捷地處理數據的函數和方法,它是使Python成為強大而高效的數據分析環境的重要因素之一。今天小編就給大家分享一篇關于常見pandas函數的文章,希望對大家有所幫助。
文章來源: DeepHub IMBA
作者:P**nHub兄弟網站
pandas是一個受眾廣泛的python數據分析庫。它提供了許多函數和方法來加快數據分析過程。pandas之所以如此普遍,是因為它的功能強大、靈活簡單。本文將介紹20個常用的 Pandas 函數以及具體的示例代碼,助力你的數據分析變得更加高效。
import numpy as np import pandas as pd
我們有時需要根據條件篩選數據,一個簡單方法是query函數。為了更直觀理解這個函數,我們首先創建一個示例 dataframe。
values_1 = np.random.randint(10, size=10) values_2 = np.random.randint(10, size=10) years = np.arange(2010,2020) groups = ['A','A','B','A','B','B','C','A','C','C'] df = pd.DataFrame({'group':groups, 'year':years, 'value_1':values_1,'value_2':values_2}) df
使用query函數的語法十分簡單:
df.query('value_1 < value_2')
當我們想要在 dataframe 里增加一列數據時,默認添加在最后。當我們需要添加在任意位置,則可以使用 insert 函數。使用該函數只需要指定插入的位置、列名稱、插入的對象數據。
# new column new_col = np.random.randn(10) # insert the new column at position 2 df.insert(2, 'new_col', new_col) df
示例dataframe 包含3個小組的年度數據。我們可能只對年度數據感興趣,但在某些情況下,我們同樣還需要一個累計數據。Pandas提供了一個易于使用的函數來計算加和,即cumsum。
如果我們只是簡單使用cumsum函數,(A,B,C)組別將被忽略。這樣得到的累積值在某些情況下意義不大,因為我們更需要不同小組的累計數據。對于這個問題有一個非常簡單方便的解決方案,我們可以同時應用groupby和cumsum函數。
df['cumsum_2'] = df[['value_2','group'].groupby('group').cumsum()] df
Sample方法允許我們從DataFrame中隨機選擇數據。當我們想從一個分布中選擇一個隨機樣本時,這個函數很有用。
sample1 = df.sample(n=3) sample1
上述代碼中,我們通過指定采樣數量 n 來進行隨機選取。此外,也可以通過指定采樣比例 frac 來隨機選取數據。當 frac=0.5時,將隨機返回一般的數據。
sample2 = df.sample(frac=0.5) sample2
為了獲得可重復的樣品,我們可以指定random_state參數。如果將整數值傳遞給random_state,則每次運行代碼時都將生成相同的采樣數據。
where函數用于指定條件的數據替換。如果不指定條件,則默認替換值為 NaN。
df['new_col'].where(df['new_col'] > 0, 0)
where函數首先根據指定條件定位目標數據,然后替換為指定的新數據。上述代碼中,where(df['new_col']>0,0)指定'new_col'列中數值大于0的所有數據為被替換對象,并且被替換為0。
重要的一點是,pandas 和 numpy的where函數并不完全相同。我們可以得到相同的結果,但語法存在差異。Np.where還需要指定列對象。以下兩行返回相同的結果:
df['new_col'].where(df['new_col'] > 0, 0) np.where(df['new_col'] > 0, df['new_col'], 0)
在處理數據幀時,我們經常使用過濾或選擇方法。Isin是一種先進的篩選方法。例如,我們可以根據選擇列表篩選數據。
years = ['2010','2014','2017'] df[df.year.isin(years)]
Loc 和 iloc 函數用于選擇行或者列。
loc用于按標簽選擇數據。列的標簽是列名。對于行標簽,如果我們不分配任何特定的索引,pandas默認創建整數索引。因此,行標簽是從0開始向上的整數。與iloc一起使用的行位置也是從0開始的整數。
下述代碼實現選擇前三行前兩列的數據(iloc方式):
df.iloc[:3,:2]
下述代碼實現選擇前三行前兩列的數據(loc方式):
df.loc[:2,['group','year']]
注:當使用loc時,包括索引的上界,而使用iloc則不包括索引的上界。
下述代碼實現選擇"1","3","5"行、"year","value_1"列的數據(loc方式):
df.loc[[1,3,5],['year','value_1']]
此函數用于計算一系列值的變化百分比。假設我們有一個包含[2,3,6]的序列。如果我們對這個序列應用pct_change,則返回的序列將是[NaN,0.5,1.0]。從第一個元素到第二個元素增加了50%,從第二個元素到第三個元素增加了100%。Pct_change函數用于比較元素時間序列中的變化百分比。
df.value_1.pct_change()
Rank函數實現對數據進行排序。假設我們有一個包含[1,7,5,3]的序列。分配給這些值的等級為[1,4,3,2]。
df['rank_1'] = df['value_1'].rank() df
Melt用于將維數較大的 dataframe轉換為維數較少的 dataframe。一些dataframe列中包含連續的度量或變量。在某些情況下,將這些列表示為行可能更適合我們的任務??紤]以下情況:
我們有三個不同的城市,在不同的日子進行測量。我們決定將這些日子表示為列中的行。還將有一列顯示測量值。我們可以通過使用'melt'函數輕松實現:
df_wide.melt(id_vars=['city']) df
變量名和列名通常默認給出。我們也可以使用melt函數的var_name和value_name參數來指定新的列名。
假設數據集在一個觀測(行)中包含一個要素的多個條目,但您希望在單獨的行中分析它們。
我們想在不同的行上看到“c”的測量值,這很容易用explode來完成。
df1.explode('measurement').reset_index(drop=True) df
Nunique統計列或行上的唯一條目數。它在分類特征中非常有用,特別是在我們事先不知道類別數量的情況下。讓我們看看我們的初始數據:
df.year.nunique() 10 df.group.nunique() 3
我們可以直接將nunique函數應用于dataframe,并查看每列中唯一值的數量:
如果axis參數設置為1,nunique將返回每行中唯一值的數目。
'lookup'可以用于根據行、列的標簽在dataframe中查找指定值。假設我們有以下數據:
我們要創建一個新列,該列顯示“person”列中每個人的得分:
df['Person_point'] = df.lookup(df.index, df['Person']) df
Pandas支持廣泛的數據類型,其中之一就是object。object包含文本或混合(數字和非數字)值。但是,如果有其他選項可用,則不建議使用對象數據類型。使用更具體的數據類型,某些操作執行得更快。例如,對于數值,我們更喜歡使用整數或浮點數據類型。
infer_objects嘗試為對象列推斷更好的數據類型??紤]以下數據:
df2.dtypes A object B object C object D object dtype: object
通過上述代碼可知,現有所有的數據類型默認都是object。讓我們看看推斷的數據類型是什么:
df2.infer_objects().dtypes A int64 B float64 C bool D object dtype: object
'infer_obejects'可能看起來微不足道,但在有很多列時作用巨大。
Memory_usage()返回每列使用的內存量(以字節為單位)??紤]下面的數據,其中每一列有一百萬行。
df_large = pd.DataFrame({'A': np.random.randn(1000000), 'B': np.random.randint(100, size=1000000)}) df_large.shape (1000000, 2)
每列占用的內存:
df_large.memory_usage() Index 128 A 8000000 B 8000000 dtype: int64
整個 dataframe 占用的內存(轉換為以MB為單位):
df_large.memory_usage().sum() / (1024**2) #converting to megabytes 15.2589111328125
describe函數計算數字列的基本統計信息,這些列包括計數、平均值、標準偏差、最小值和最大值、中值、第一個和第三個四分位數。因此,它提供了dataframe的統計摘要。
Merge()根據共同列中的值組合dataframe??紤]以下兩個數據:
我們可以基于列中的共同值合并它們。設置合并條件的參數是“on”參數。
df1和df2是基于column_a列中的共同值進行合并的,merge函數的how參數允許以不同的方式組合dataframe,如:“inner”、“outer”、“left”、“right”等。
Select_dtypes函數根據對數據類型設置的條件返回dataframe的子集。它允許使用include和exlude參數包含或排除某些數據類型。
df.select_dtypes(include='int64')
df.select_dtypes(exclude='int64')
顧名思義,它允許替換dataframe中的值。第一個參數是要替換的值,第二個參數是新值。
df.replace('A', 'A_1')
我們也可以在同一個字典中多次替換。
df.replace({'A':'A_1', 'B':'B_1'})
Applymap用于將一個函數應用于dataframe中的所有元素。請注意,如果操作的矢量化版本可用,那么它應該優先于applymap。例如,如果我們想將每個元素乘以一個數字,我們不需要也不應該使用applymap函數。在這種情況下,簡單的矢量化操作(例如df*4)要快得多。
然而,在某些情況下,我們可能無法選擇矢量化操作。例如,我們可以使用pandas dataframes的style屬性更改dataframe的樣式。以下代碼將負值的顏色設置為紅色:
def color_negative_values(val): color = 'red' if val < 0 else 'black' return 'color: %s' % color
通過Applymap將上述代碼應用到dataframe:
df3.style.applymap(color_negative_values)
作者:Soner Y?ld?r?m
deephub翻譯組:Oliver Lee
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25在當今數字化時代,數據分析師的重要性與日俱增。但許多人在踏上這條職業道路時,往往充滿疑惑: 如何成為一名數據分析師?成為 ...
2025-04-24