第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用 Python3 標(biāo)準(zhǔn)庫(kù)重寫 Pandas 腳本

使用 Python3 標(biāo)準(zhǔn)庫(kù)重寫 Pandas 腳本

尚方寶劍之說 2021-07-01 17:01:06
這是用 Pandas 編寫的腳本,我必須使用標(biāo)準(zhǔn)庫(kù)重寫它:import pandas as pdimport sysif __name__ == '__main__':    if len(sys.argv) != 1 :        print('usage: python by_continent.py')        sys.exit(1)    gap = pd.read_csv('gapminder.tsv', sep='\t')    means = gap.groupby('continent').mean()    parts = means[['lifeExp', 'gdpPercap']]    print( parts )輸入看起來像:country continent   year    lifeExp pop gdpPercapZambia  Africa  2002    39.193  10595811    1071.613938 Zambia  Africa  2007    42.384  11746035    1271.211593 Zimbabwe    Africa  1952    48.451  3080907 406.8841148 Zimbabwe    Africa  1957    50.469  3646340 518.7642681 Zimbabwe    Africa  1962    52.358  4277736 527.2721818 Zimbabwe    Africa  1967    53.995  4995432 569.7950712 Zimbabwe    Africa  1972    55.635  5861135 799.3621758 Zimbabwe    Africa  1977    57.674  6642107 685.5876821 Zimbabwe    Africa  1982    60.363  7636524 788.8550411 Zimbabwe    Africa  1987    62.351  9216418 706.1573059 Zimbabwe    Africa  1992    60.377  10704340    693.4207856 Zimbabwe    Africa  1997    46.809  11404948    792.4499603 Zimbabwe    Africa  2002    39.989  11926563    672.0386227 Zimbabwe    Africa  2007    43.487  12311143    469.7092981 Argentina   Americas    1952    62.485  17876956    5911.315053 Argentina   Americas    1957    64.399  19610538    6856.856212 Argentina   Americas    1962    65.142  21283783    7133.166023 Argentina   Americas    1967    65.634  22934225    8052.953021 Argentina   Americas    1972    67.065  24779799    9443.038526 Argentina   Americas    1977    68.481  26983828    10079.02674 這是輸出應(yīng)該是什么:             lifeExp     gdpPercapcontinentAfrica     48.865330   2193.754578Americas   64.658737   7136.110356Asia       60.064903   7902.150428Europe     71.903686  14469.475533Oceania    74.326208  18621.609223
查看完整描述

3 回答

?
翻過高山走不出你

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊

下面應(yīng)該讓你開始(原諒懶惰的變量命名)。主要思想是利用groupbyitertools 中的現(xiàn)有字段按您想要的任何字段進(jìn)行聚合,然后通過將結(jié)果收集到字典中,從這些分組中提取您想要平均的相關(guān)字段。


PS - 希望這不是你的作業(yè),因?yàn)槟侵皇菓卸?)


stuff = """country continent   year    lifeExp pop gdpPercap

Zambia  Africa  2002    39.193  10595811    1071.613938 

Zambia  Africa  2007    42.384  11746035    1271.211593 

Zimbabwe    Africa  1952    48.451  3080907 406.8841148 

Zimbabwe    Africa  1957    50.469  3646340 518.7642681 

Zimbabwe    Africa  1962    52.358  4277736 527.2721818 

Zimbabwe    Africa  1967    53.995  4995432 569.7950712 

Zimbabwe    Africa  1972    55.635  5861135 799.3621758 

Zimbabwe    Africa  1977    57.674  6642107 685.5876821 

Zimbabwe    Africa  1982    60.363  7636524 788.8550411 

Zimbabwe    Africa  1987    62.351  9216418 706.1573059 

Zimbabwe    Africa  1992    60.377  10704340    693.4207856 

Zimbabwe    Africa  1997    46.809  11404948    792.4499603 

Zimbabwe    Africa  2002    39.989  11926563    672.0386227 

Zimbabwe    Africa  2007    43.487  12311143    469.7092981 

Argentina   Americas    1952    62.485  17876956    5911.315053 

Argentina   Americas    1957    64.399  19610538    6856.856212 

Argentina   Americas    1962    65.142  21283783    7133.166023 

Argentina   Americas    1967    65.634  22934225    8052.953021 

Argentina   Americas    1972    67.065  24779799    9443.038526 

Argentina   Americas    1977    68.481  26983828    10079.02674""".strip().splitlines()


import itertools

from collections import defaultdict


stuff = [line.split() for line in stuff]

headers, *records = stuff

labeled_records = [dict(zip(headers,line)) for line in records]


#group by continent

grouped = itertools.groupby(labeled_records,lambda x: x['continent'])

results = defaultdict(list)


# for other categories, just change 'lifeExp' to the column you want 

for k,v in grouped:

    for d in v:

        results[k].append(float(d['lifeExp']))


# average collected results     

for k,v in results.items():

    print(k,'\t',sum(v)/len(v))


查看完整回答
反對(duì) 回復(fù) 2021-07-13
?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊

對(duì)于 groupby,您可以只使用一個(gè)字典,您可以使用該字典以編程方式填充鍵,并且值以 null 開頭并以 3 元組列表結(jié)尾;它包含列名、計(jì)算類型以及您應(yīng)該為給定組合返回的值。

可能有更漂亮和更優(yōu)雅的方式,但這應(yīng)該有效。

編輯:等一下,它們將是 2 元組,因?yàn)槟呀?jīng)指定了列(我的意思是大陸)名稱。我想我還在半夢(mèng)半醒。

您也可以制作一個(gè)包含所有相關(guān)值的 n 維列表(矩陣)。這將是明智的做法。


查看完整回答
反對(duì) 回復(fù) 2021-07-13
?
catspeake

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊

我不想破壞計(jì)算解決方案的樂趣,但您可以將其轉(zhuǎn)換為字典列表,這將使數(shù)據(jù)更易于管理。為此,您需要拆分所有子列表,我們從第 1 行用自己的列表壓縮每個(gè)子列表,這些將是我們的鍵,然后我們可以用鍵壓縮這些子列表。之后,我們使用dict()構(gòu)造函數(shù)來創(chuàng)建我們的字典列表。


有了這個(gè),你可以做諸如此類的事情for i in res: print(i['country'],從列表中提取只屬于某個(gè)國(guó)家的字典等等。


import csv

import pprint


with open('gapminder.tsv', 'r') as gap:

    csv_reader = csv.reader(gap, delimiter="\t")

    lst = list(csv_reader)


lst = [i[0].split() for i in lst]

prep = zip([lst[0]]*len(lst[1:]), lst[1:])

prep = [(zip(i[0], i[1])) for i in prep]

res = [dict([j for j in i]) for i in prep]

pprint.pprint(res)

[{'continent': 'Africa',

  'country': 'Zambia',

  'gdpPercap': '1071.613938',

  'lifeExp': '39.193',

  'pop': '10595811',

  'year': '2002'},

 {'continent': 'Africa',

  'country': 'Zambia',

  'gdpPercap': '1271.211593',

  'lifeExp': '42.384',

  'pop': '11746035',

  'year': '2007'},

...


查看完整回答
反對(duì) 回復(fù) 2021-07-13
  • 3 回答
  • 0 關(guān)注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)