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

資訊專欄INFORMATION COLUMN

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

89542767 / 875人閱讀


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


  假如我們這兒有相關(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)該要怎么去寫這個(gè)代碼呢?
  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)含義如下
  #當(dāng)k不存在時(shí),將k:v設(shè)置在字典中,并返回v
  #當(dāng)k存在時(shí),直接返回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算是一個(gè)使用比較常見的方法了,但是就是使用率不高,每次調(diào)用的時(shí)候都會(huì)調(diào)用一個(gè)空值,所以這就會(huì)比較麻煩了。


  from collections import defaultdict
  data=[
  ("apple",30),("apple",35),
  ("apple",32),("pear",60),
  ("pear",32),("pear",60),
  ("banana",102),("banana",104)
  ]
  #里面接收一個(gè)callable
  #當(dāng)訪問的k不存在時(shí),返回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即可。


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


  data=["apple","apple","apple",
  "pear","pear","pear",
  "banana","banana"]
  data_dict={}
  for item in data:
  #此處不能使用setdefault,因?yàn)樗呛瘮?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)計(jì),我們還可以使用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,除了支持字典操作之外
  #還提供了很多其它操作,其中一個(gè)就是most_common
  #用于選擇出現(xiàn)頻率最高的幾個(gè)元素
  print(data_dict.most_common(2))
  """
  [('apple',3),('pear',3)]
  """


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


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

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

相關(guān)文章

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

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

    phodal 評(píng)論0 收藏0
  • 我所理解的正則表達(dá)式

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

    _Zhao 評(píng)論0 收藏0
  • 我所理解的正則表達(dá)式

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

    K_B_Z 評(píng)論0 收藏0
  • python 正則表達(dá)式

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

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

    摘要:編程基礎(chǔ)要學(xué)習(xí)如何用進(jìn)行數(shù)據(jù)分析,數(shù)據(jù)分析師建議第一步是要了解一些的編程基礎(chǔ),知道的數(shù)據(jù)結(jié)構(gòu),什么是向量列表數(shù)組字典等等了解的各種函數(shù)及模塊。數(shù)據(jù)分析師認(rèn)為數(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進(jìn)行數(shù)...

    lifefriend_007 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<