国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何用Python對數據進行分組

89542767 / 881人閱讀


  小編寫這篇文章的主要目的,就是告訴大家一些知識,告訴大家如何使用Python對數據進行分組,另外,相關的代碼,也會給貼出來,下面就給大家詳細的解答下。


  假如我們這兒有相關數據:


  data=[
  ("apple",30),("apple",35),
  ("apple",32),("pear",60),
  ("pear",32),("pear",60),
  ("banana",102),("banana",104)
  ]
  #我們希望變成如下格式
  """


  [('apple',[30,35,32]),
  ('pear',[60,32,60]),
  ('banana',[102,104])]
  """
  假如要是你的話,你應該要怎么去寫這個代碼呢?
  data=[
  ("apple",30),("apple",35),
  ("apple",32),("pear",60),
  ("pear",32),("pear",60),
  ("banana",102),("banana",104)
  ]
  data_dict={}
  for name,count in data:
  if name not in data_dict:
  data_dict[name]=[]
  data_dict[name].append(count)
  print(data_dict)
  """
  {'apple':[30,35,32],
  'pear':[60,32,60],
  'banana':[102,104]}
  """


 

   print(list(data_dict.items()))
  """
  [('apple',[30,35,32]),
  ('pear',[60,32,60]),
  ('banana',[102,104])]
  """


  上述代碼的書寫方式是完全沒有任何問題的,那么怎樣才能寫的更好一些,可以使用setdefault方法


  data=[
  ("apple",30),("apple",35),
  ("apple",32),("pear",60),
  ("pear",32),("pear",60),
  ("banana",102),("banana",104)
  ]
  data_dict={}
  for name,count in data:
  #setdefault(k,v)含義如下
  #當k不存在時,將k:v設置在字典中,并返回v
  #當k存在時,直接返回k對應值
  data_dict.setdefault(name,[]).append(count)
  print(list(data_dict.items()))
  """
  [('apple',[30,35,32]),
  ('pear',[60,32,60]),
  ('banana',[102,104])]
  """


  setdefault算是一個使用比較常見的方法了,但是就是使用率不高,每次調用的時候都會調用一個空值,所以這就會比較麻煩了。


  from collections import defaultdict
  data=[
  ("apple",30),("apple",35),
  ("apple",32),("pear",60),
  ("pear",32),("pear",60),
  ("banana",102),("banana",104)
  ]
  #里面接收一個callable
  #當訪問的k不存在時,返回callable調用之后的值
  data_dict1=defaultdict(list)
  for name,count in data:
  data_dict1[name].append(count)
  print(list(data_dict1.items()))
  """
  [('apple',[30,35,32]),
  ('pear',[60,32,60]),
  ('banana',[102,104])]
  """
  #也可以指定為set
  data_dict2=defaultdict(set)
  for name,count in data:
  data_dict2[name].add(count)
  print(list(data_dict2.items()))
  """
  [('apple',{32,35,30}),
  ('pear',{32,60}),
  ('banana',{104,102})]
  """


  總的來說,defaultdict和字典的setdefault方法非常類似,我們使用setdefault即可。


  當然啦,關于分組,還有一種特殊情況,就是詞頻統計。假設我們想統計可迭代對象中,每個元素出現的次數該怎么做呢?


  data=["apple","apple","apple",
  "pear","pear","pear",
  "banana","banana"]
  data_dict={}
  for item in data:
  #此處不能使用setdefault,因為它是函數
  #.setdefault(item,0)+=1是不符合語法規則的
  if item not in data_dict:
  data_dict[item]=0
  data_dict[item]+=1
  print(data_dict)
  """
  {'apple':3,'pear':3,'banana':2}
  """
  #或者使用defaultdict
  from collections import defaultdict
  data_dict=defaultdict(int)
  for item in data:
  data_dict[item]+=1
  print(data_dict)
  """
  defaultdict(<class'int'>,
  {'apple':3,'pear':3,'banana':2})
  """


  然而說到詞頻統計,我們還可以使用collections下的Counter類。


  from collections import Counter
  data=["apple","apple","apple",
  "pear","pear","pear",
  "banana","banana"]
  data_dict=Counter(data)
  #直接搞定,Counter已經包含了我們之前的邏輯
  print(data_dict)
  """
  Counter({'apple':3,'pear':3,'banana':2})
  """
  #Counter繼承dict,除了支持字典操作之外
  #還提供了很多其它操作,其中一個就是most_common
  #用于選擇出現頻率最高的幾個元素
  print(data_dict.most_common(2))
  """
  [('apple',3),('pear',3)]
  """


  綜上所述,使用Python進行分組就為大家介紹到這里了,希望可以為各位讀者帶來幫助。


文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/127690.html

相關文章

  • 功能式Python中的探索性數據分析

    摘要:在中運行不同的實驗似乎比試圖在中進行這種探索性的操作更有效。理論上,我們可以在中做很多的探索。我們如何繼續第一步是獲取格式的原始數據。這些列將包含來自使用該代理鍵的一個請求的一行數據。這是重構的另一部分。數據的最終顯示保持完全分離。 歡迎大家前往騰訊云+社區,獲取更多騰訊海量技術實踐干貨哦~ 這里有一些技巧來處理日志文件提取。假設我們正在查看一些Enterprise Splunk提取。...

    phodal 評論0 收藏0
  • 我所理解的正則表達式

    摘要:關于,新手理解起來可能比較困難,尤其是一些很牛逼的預查正則表達式。非貪婪與貪婪的問題貪婪出現在這種不確定數量的匹配中,所謂的貪婪,表示正則表達式在匹配的時候,盡可能多的匹配符合條件的內容。 學習了半年的正則表達式,也不能說一直學習吧,就是和它一直在打交道,如何用正則表達式解決自己的問題,并且還要考慮如何在匹配大量的文本時去優化它。慢慢的覺得正則已經成為自己的一項技能,逐漸的從一個正則表...

    _Zhao 評論0 收藏0
  • 我所理解的正則表達式

    摘要:關于,新手理解起來可能比較困難,尤其是一些很牛逼的預查正則表達式。非貪婪與貪婪的問題貪婪出現在這種不確定數量的匹配中,所謂的貪婪,表示正則表達式在匹配的時候,盡可能多的匹配符合條件的內容。 學習了半年的正則表達式,也不能說一直學習吧,就是和它一直在打交道,如何用正則表達式解決自己的問題,并且還要考慮如何在匹配大量的文本時去優化它。慢慢的覺得正則已經成為自己的一項技能,逐漸的從一個正則表...

    K_B_Z 評論0 收藏0
  • python 正則表達式

    摘要:正則表達式是一種用來匹配字符串的強有力的武器。正則表達式匹配如果直接給出字符,就是精確匹配。模塊提供模塊,包含所有正則表達式的功能。分組除了簡單地判斷是否匹配之外,正則表達式還有提取子串的強大功能。 正則表達式是一種用來匹配字符串的強有力的武器。它的設計思想是用一種描述性的語言來給字符串定義一個規則,凡是符合規則的字符串,我們就認為它匹配了,否則,該字符串就是不合法的。 showImg...

    孫淑建 評論0 收藏0
  • 何用Python進行數據分析?

    摘要:編程基礎要學習如何用進行數據分析,數據分析師建議第一步是要了解一些的編程基礎,知道的數據結構,什么是向量列表數組字典等等了解的各種函數及模塊。數據分析師認為數據分析有的工作都在處理數據。 showImg(https://segmentfault.com/img/bVbnbZo?w=1024&h=653); 本文為CDA數據分析研究院原創作品,轉載需授權 1.為什么選擇Python進行數...

    lifefriend_007 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<