Pandas 必知必會的使用技巧,值得收藏!

2021-01-10 騰訊網

本期的主題是關於python的一個數據分析工具pandas的,歸納整理了一些工作中常用到的pandas使用技巧,方便更高效地實現數據分析。文章很短,不用收藏就能Get~

Pandas技巧總結

1.計算變量缺失率

df=pd.read_csv('titanic_train.csv')

def missing_cal(df):

"""

df :數據集

return:每個變量的缺失率

"""

missing_series = df.isnull().sum()/df.shape[0]

missing_df = pd.DataFrame(missing_series).reset_index()

missing_df = missing_df.rename(columns={'index':'col',

0:'missing_pct'})

missing_df = missing_df.sort_values('missing_pct',ascending=False).reset_index(drop=True)

return missing_df

missing_cal(df)

如果需要計算樣本的缺失率分布,只要加上參數axis=1

2.獲取分組裡最大值所在的行方法

分為分組中有重複值和無重複值兩種。無重複值的情況。

df = pd.DataFrame({'Sp':['a','b','c','d','e','f'], 'Mt':['s1', 's1', 's2','s2','s2','s3'], 'Value':[1,2,3,4,5,6], 'Count':[3,2,5,10,10,6]})

df

df.iloc[df.groupby(['Mt']).apply(lambda x: x['Count'].idxmax())]

先按Mt列進行分組,然後對分組之後的數據框使用idxmax函數取出Count最大值所在的列,再用iloc位置索引將行取出。有重複值的情況

df["rank"] = df.groupby("ID")["score"].rank(method="min", ascending=False).astype(np.int64)

df[df["rank"] == 1][["ID", "class"]]

對ID進行分組之後再對分數應用rank函數,分數相同的情況會賦予相同的排名,然後取出排名為1的數據。

3.多列合併為一行

df = pd.DataFrame({'id_part':['a','b','c','d'], 'pred':[0.1,0.2,0.3,0.4], 'pred_class':['women','man','cat','dog'], 'v_id':['d1','d2','d3','d1']})

df.groupby(['v_id']).agg({'pred_class': [', '.join],'pred': lambda x: list(x),

'id_part': 'first'}).reset_index()

4.刪除包含特定字符串所在的行

df = pd.DataFrame({'a':[1,2,3,4], 'b':['s1', 'exp_s2', 's3','exps4'], 'c':[5,6,7,8], 'd':[3,2,5,10]})

df[df['b'].str.contains('exp')]

5.組內排序

df = pd.DataFrame([['A',1],['A',3],['A',2],['B',5],['B',9]], columns = ['name','score'])

介紹兩種高效地組內排序的方法。

df.sort_values(['name','score'], ascending = [True,False])

df.groupby('name').apply(lambda x: x.sort_values('score', ascending=False)).reset_index(drop=True)

6.選擇特定類型的列

drinks = pd.read_csv('data/drinks.csv')

# 選擇所有數值型的列

drinks.select_dtypes(include=['number']).head()

# 選擇所有字符型的列

drinks.select_dtypes(include=['object']).head()

drinks.select_dtypes(include=['number','object','category','datetime']).head()

# 用 exclude 關鍵字排除指定的數據類型

drinks.select_dtypes(exclude=['number']).head()

7.字符串轉換為數值

df = pd.DataFrame({'列1':['1.1','2.2','3.3'],

'列2':['4.4','5.5','6.6'],

'列3':['7.7','8.8','-']})

df

df.astype({'列1':'float','列2':'float'}).dtypes

用這種方式轉換第三列會出錯,因為這列裡包含一個代表 0 的下劃線,pandas 無法自動判斷這個下劃線。為了解決這個問題,可以使用 to_numeric() 函數來處理第三列,讓 pandas 把任意無效輸入轉為 NaN。

df = df.apply(pd.to_numeric, errors='coerce').fillna(0)

8.優化 DataFrame 對內存的佔用

方法一:只讀取切實所需的列,使用usecols參數

cols = ['beer_servings','continent']

small_drinks = pd.read_csv('data/drinks.csv', usecols=cols)

方法二:把包含類別型數據的 object 列轉換為 Category 數據類型,通過指定 dtype 參數實現。

dtypes ={'continent':'category'}

smaller_drinks = pd.read_csv('data/drinks.csv',usecols=cols, dtype=dtypes)

9.根據最大的類別篩選 DataFrame

10.把字符串分割為多列

df = pd.DataFrame({'姓名':['張 三','李 四','王 五'],

'所在地':['北京-東城區','上海-黃浦區','廣州-白雲區']})

df

df.姓名.str.split(' ', expand=True)

11.把 Series 裡的列錶轉換為 DataFrame

df = pd.DataFrame({'列1':['a','b','c'],'列2':[[10,20], [20,30], [30,40]]})

df

df_new = df.列2.apply(pd.Series)

pd.concat([df,df_new], axis='columns')

12.用多個函數聚合

orders = pd.read_csv('data/chipotle.tsv', sep='\t')

orders.groupby('order_id').item_price.agg(['sum','count']).head()

13.分組聚合

通過字典或Series進行分組

people = pd.DataFrame(np.random.randn(5, 5),

columns=['a', 'b', 'c', 'd', 'e'],

index=['Joe', 'Steve', 'Wes', 'Jim', 'Travis'])

mapping = {'a':'red', 'b':'red', 'c':'blue',

'd':'blue', 'e':'red', 'f':'orange'}

by_column = people.groupby(mapping, axis=1)

by_column.sum()

飛馬會

相關焦點

  • Pandas 數據處理|Datetime 時間模塊在 Pandas 中的使用
    Datatime 作為 Python 中的時間模塊類型,處理時間有關數據是非常方便的, Pandas 作為數據分析程序包同樣也支持 DataTime 數據機制,例如1,函數 to_datetime() 將數據列表中的 Series 列轉化為 datetime 類型,#Convert the type to datetimeapple.Date =
  • 英語小作文:Pandas 熊貓
    新東方網>英語>英語學習>英語寫作>中小學英語作文>正文英語小作文:Pandas 熊貓 2013-01-15 17:29 來源:恆星英語 作者:
  • World's only all-white panda's new gilded look!
    Only when the parent pandas both carry the gene can the baby show the albino traits.Albinism usually does not affect the animal's physical makeup and functions.
  • 小學英語作文:Pandas went visiting the park
    熊貓去遊樂園(Pandas went visiting the park)   Panda is one of my best favourite animals.These two pandas are mommy and her baby girl, living at a beautiful mountain somewhere in China
  • 快速提升效率,這6個 Pandas 技巧一定要知道
    pandas是python中常用的數據分析庫,出現頻率非常高,而且pandas功能之多讓人咋舌,即使pandas老手也沒法保證能高效使用pandas做數據分析。這篇文章目的梳理幾個高效實用的pandas小技巧,供大家參考。1.
  • 數據處理必看:如何讓你的 pandas 循環加快 71803 倍
    雷鋒網 AI 開發者按,如果你使用 python 和 pandas 進行數據分析,那麼不久你就會第一次使用循環了。然而,即使是對小型數據集,使用標準循環也很費時,你很快就會意識到大型數據幀可能需要很長的時間。當我第一次等了半個多小時來執行代碼時,我找到了接下來想與你共享的替代方案。標準循環數據幀是具有行和列的 pandas 對象。
  • Pandas Rub Themselves in Horse Manure to Feel Warm, Study Finds
    Researchers recorded 38 instances of wild giant pandas interacting
  • 盤點Pandas 的100個常用函數
    import pandas as pdimport numpy as npx = pd.Series(np.random.normal(2,3,1000))y = 3*x + 10 + pd.Series(np.random.normal(1,2,1000))# 計算x與y的相關係數print(x.corr(y))# 計算y的偏度print(y.skew())# 計算y的統計描述值print
  • Python數據處理包,pandas 乾貨知識,關於軸的理解
    前言axis 表示軸,是處理多維數據時用於表示維度方向的概念,在 pandas 中大部分的方法都有 axis 參數,因為 pandas 需要調用者告訴他,需要處理的是哪個維度的數據。本文將分享我對 axis 的理解,希望幫助你更好理解 axis 的概念,這些概念不僅僅應用在 pandas ,同樣適合於其他相關的庫的理解(如 numpy 中的3維或以上的處理)。
  • Panda, a chubby angel of friendship
    Accordingly, as the lebensraum of pandas getting smaller, there was a time when pandas and saber-toothed tigers compete for food.
  • 2017年6月英語四級翻譯技巧:轉換詞性
    這種轉換會使譯文更加靈活變通,不必拘泥於原文形式,卻能更準確傳達出原文內涵。它可能涉及動詞、名詞、形容詞和副詞之間的相互轉換。下面我們以具體的考題為例:   例1.【試題原句】中國的網際網路社區是全世界發展最快的。
  • 這幾個手機小技巧值得收藏
    這幾個手機小技巧值得收藏 ○ ○ 下面以oppo手機為例:(需要注意的是手機要支持這項功能,部分手機需要在設置裡面把功能打開) 在設置裡面把功能打開 通知欄會提示安裝了新的存儲設備 文件管理裡面查看文件 電池充電須知 : 鋰電池無需激活,將電量充滿即可。
  • Python:將XML數據存儲到Pandas DataFrame中
    在這篇文章中,我們將討論如何使用python xml庫中的 「ElementTree」模塊來解析xml數據並將數據存儲在panda DataFrame中。首先,讓導入Python庫:import pandas as pdfrom xml.etree.ElementTree import parse現在,讓我們看一下'books.xml'文件中的標籤:我們可以通過將文件名傳遞給'parse()'方法來定義'XML'文檔對象:document = parse('books.xml')
  • 零基礎學Python--不得不說的Pandas小技巧
    今天我們就來講Pandas的一些使用方法和技巧,作為大家在寫Python程序時候的查閱筆記來使用。  我們仍然使用我們之前使用過的OHLCV數據作為示例,當然有些技巧中這個示例可能不足以表現其功能的強大,我們會適時的對數據進行一些修改。為了照顧沒有讀過以前文章的同學,我們照例貼出我們的CSV文件內容,其中『>』符號作為縮進使用。
  • 男人選購墨鏡必知的技巧
    原標題:男人選購墨鏡必知的技巧   男士們在出門的時候,除了需要做好防曬工作之外,還要準備一款適合自己的墨鏡!男士墨鏡的種類非常的多,但是不是所有的墨鏡都適合自己!所以男士選擇墨鏡需要考慮自身的因素,那麼究竟墨鏡的選購需要注意些什麼呢,下面就一起來學習一下吧!
  • 暑假來了,邊玩邊學背起來,中小學生常用歇後語大全,值得收藏
    暑假來了,趕緊邊玩邊學背起來,中小學生常用歇後語大全,值得收藏。歇後語是中國勞動人民自古以來在生活實踐中創造的一種特殊語言形式,是一種短小、風趣、形象的語句。小編為家長們整理了大量的常用歇後語練習,這些歇後語都是很好的作文素材,家長們可以收藏起來和轉發給親朋好友們,有空就給孩子們看看,相信經過孩子們的努力,語文成績和作文水平會有顯著的提升。
  • 數據分析從業者必看,10 個加速 python 數據分析的簡單的小技巧
    數據科學愛好者 Parul Pandey 在近日發表了一篇博文,分享了在數據科學中非常實用的 10 個小技巧。雷鋒網 AI 科技評論將他的文章編譯整理如下。有時候,一點小小的黑客行為可以節省時間,挽救生命。一個小小的快捷方式或附加組件有時會被證明是天賜之物,並且可以真正提高生產力。所以,下面是我最喜歡的一些技巧,我以本文的形式一起使用和編譯它們。
  • Pandas GUI:如何輕鬆獲取Pandas數據幀?
    這些庫本質上是在hood中運行Pandas的功能,如SweetViz和Pandas profiling庫。· 基於GUI的Pandas替代品,如Bamboolib。最近,筆者發現了另一個基於GUI的Pandas替代,叫做PandasGUI。它具有繪製數據幀以及重新構建數據幀的功能,用戶也可以進行任意自定義操作。本文將介紹它的各種功能以及在數據中使用的方法。
  • Netizens worry about panda foaming at the mouth in Chinese zoo
    The ecology administration of Gansu published a statement on Tuesday, saying 「panda Shulan’s foaming is normal," explaining that the foam was either saliva or caused by the female panda being in
  • 關於Numpy和Pandas axis的理解
    drop這個可以認為是特殊的,但記住一點當axis=0的時候是從上往下的,dorp指出了要刪除iloc為1的行,那麼此時便會從上往下進行刪除,即以列為單位刪除整行;同理axis=1,從左往右推薦,當column='C'的滿足條件,整列刪除。總結說了這麼多,你要記住的就是,axis=0的時候一定是從上往下的;axis=1的時候肯定是從左往右。