成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

如何用Python對數(shù)據(jù)進行分組

89542767 / 883人閱讀


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


  假如我們這兒有相關(guān)數(shù)據(jù):


  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])]
  """
  假如要是你的話,你應(yīng)該要怎么去寫這個代碼呢?
  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設(shè)置在字典中,并返回v
  #當k存在時,直接返回k對應(yīng)值
  data_dict.setdefault(name,[]).append(count)
  print(list(data_dict.items()))
  """
  [('apple',[30,35,32]),
  ('pear',[60,32,60]),
  ('banana',[102,104])]
  """


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


  from collections import defaultdict
  data=[
  ("apple",30),("apple",35),
  ("apple",32),("pear",60),
  ("pear",32),("pear",60),
  ("banana",102),("banana",104)
  ]
  #里面接收一個callable
  #當訪問的k不存在時,返回callable調(diào)用之后的值
  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即可。


  當然啦,關(guān)于分組,還有一種特殊情況,就是詞頻統(tǒng)計。假設(shè)我們想統(tǒng)計可迭代對象中,每個元素出現(xiàn)的次數(shù)該怎么做呢?


  data=["apple","apple","apple",
  "pear","pear","pear",
  "banana","banana"]
  data_dict={}
  for item in data:
  #此處不能使用setdefault,因為它是函數(shù)
  #.setdefault(item,0)+=1是不符合語法規(guī)則的
  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})
  """


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


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


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


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/127690.html

相關(guān)文章

  • 功能式Python中的探索性數(shù)據(jù)分析

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

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

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

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

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

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

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

    孫淑建 評論0 收藏0
  • 何用Python進行數(shù)據(jù)分析?

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

    lifefriend_007 評論0 收藏0

發(fā)表評論

0條評論

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