Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫分组,平均值计算_Python_Loops_Pandas - Fatal编程技术网

Python 熊猫分组,平均值计算

Python 熊猫分组,平均值计算,python,loops,pandas,Python,Loops,Pandas,我和熊猫一起工作 这是我的数据: 其中,每列分别为大陆(南部、南部、东部、岛屿、海洋、澳大利亚、澳大利亚)、状态(灭绝、历史、引入或现存)、目、科、属、种、对数质量、组合质量和参考 我试图比较每个大陆上大量的灭绝物种和现存物种。因此,我需要按“大陆”和“状态”对这个数据框进行分组,然后计算出每个种群的平均质量——灭绝物种和现存物种。(例如,我需要计算出非洲大陆所有灭绝物种的平均总质量,然后是非洲大陆所有现存物种的平均总质量等等) 我想创建一个csv文件,其中每行的第一个条目是大陆,第二个条目是该

我和熊猫一起工作

这是我的数据: 其中,每列分别为大陆(南部、南部、东部、岛屿、海洋、澳大利亚、澳大利亚)、状态(灭绝、历史、引入或现存)、目、科、属、种、对数质量、组合质量和参考

我试图比较每个大陆上大量的灭绝物种和现存物种。因此,我需要按“大陆”和“状态”对这个数据框进行分组,然后计算出每个种群的平均质量——灭绝物种和现存物种。(例如,我需要计算出非洲大陆所有灭绝物种的平均总质量,然后是非洲大陆所有现存物种的平均总质量等等)

我想创建一个csv文件,其中每行的第一个条目是大陆,第二个条目是该大陆现存物种的平均质量,第三个条目是该大陆上灭绝物种的平均质量,第四个条目是平均现存和平均灭绝质量之间的差

这是我目前的代码:

import pandas as pd
url="http://www.esapubs.org/archive/ecol/E084/094/MOMv3.3.txt"
mammalian_data = pd.read_csv(url, delimiter="\t", header=None, 
names= ['continent', 'status', 'order', 'family', 'genus', 'species', 'log mass', 'combined mass', 'reference'])

AF_extant = mammalian_data.groupby(["continent", "status"]).get_group(("AF","extant"))
print(AF_extant["combined mass"].mean())
AF_extinct = mammalian_data.groupby(["continent", "status"]).get_group(("AF","extinct"))
print(AF_extinct["combined mass"].mean())
我如何在七大洲中的每一个重复这段代码?我如何使用这些信息创建一个新的数据框,然后将所有必要的条目导出到CSV文件,如上所述

请任何人帮帮忙

import pandas as pd
url="http://www.esapubs.org/archive/ecol/E084/094/MOMv3.3.txt"
mammalian_data = pd.read_csv(
    url, delimiter="\t", header=None, 
    names=['continent', 'status', 'order', 'family', 'genus',
           'species', 'log mass', 'combined mass',
           'reference'])

result = mammalian_data.groupby(["continent", "status"])['combined mass'].mean()
result = result.unstack('status')
result['diff'] = result['extinct']-result['extant']
result = result[['extant', 'extinct', 'diff']]
屈服

status           extant        extinct           diff
continent                                            
AF         2.220823e+04  970038.461538  947830.232208
AUS        1.691833e+04  188355.555556  171437.228736
Af        -9.990000e+02            NaN            NaN
EA         2.114960e+04            NaN            NaN
Insular    7.757171e+03   81912.131034   74154.960145
Oceanic    8.238885e+06            NaN            NaN
SA         3.864696e+03  973072.402597  969207.706264
然后,您可以使用将
结果
写入CSV


哺乳动物_数据。分组依据([“大陆”,“状态])[“组合质量]。平均值()
计算所有组的所有平均值:

In [35]: mammalian_data.groupby(["continent", "status"])['combined mass'].mean()
Out[35]: 
continent  status      
AF         extant          2.220823e+04
           extinct         9.700385e+05
           historical      1.475138e+05
AUS        extant          1.691833e+04
           extinct         1.883556e+05
           historical      2.653043e+03
           introduction    1.797469e+05
Af         extant         -9.990000e+02
EA         extant          2.114960e+04
           historical      2.014170e+05
Insular    extant          7.757171e+03
           extinct         8.191213e+04
           historical      8.433233e+04
Oceanic    extant          8.238885e+06
SA         extant          3.864696e+03
           extinct         9.730724e+05
Name: combined mass, dtype: float64
本系列具有2级多索引。级别为
大陆
状态
。要将
状态
索引级别移动到列,请使用:

屈服

status           extant        extinct           diff
continent                                            
AF         2.220823e+04  970038.461538  947830.232208
AUS        1.691833e+04  188355.555556  171437.228736
Af        -9.990000e+02            NaN            NaN
EA         2.114960e+04            NaN            NaN
Insular    7.757171e+03   81912.131034   74154.960145
Oceanic    8.238885e+06            NaN            NaN
SA         3.864696e+03  973072.402597  969207.706264
然后,您可以使用将
结果
写入CSV


哺乳动物_数据。分组依据([“大陆”,“状态])[“组合质量]。平均值()
计算所有组的所有平均值:

In [35]: mammalian_data.groupby(["continent", "status"])['combined mass'].mean()
Out[35]: 
continent  status      
AF         extant          2.220823e+04
           extinct         9.700385e+05
           historical      1.475138e+05
AUS        extant          1.691833e+04
           extinct         1.883556e+05
           historical      2.653043e+03
           introduction    1.797469e+05
Af         extant         -9.990000e+02
EA         extant          2.114960e+04
           historical      2.014170e+05
Insular    extant          7.757171e+03
           extinct         8.191213e+04
           historical      8.433233e+04
Oceanic    extant          8.238885e+06
SA         extant          3.864696e+03
           extinct         9.730724e+05
Name: combined mass, dtype: float64
本系列具有2级多索引。级别为
大陆
状态
。要将
状态
索引级别移动到列,请使用:


谢谢你的更正…有没有办法创建一个for循环,这样我就只看灭绝/现存状态了。我可以一开始就创造这个条件吗?然后用你建议的第二种方法?我想要最有效的代码,而不必复制和粘贴这段代码来指定我正在查看的每个组,例如,下一个组将是get_组((“AF”,“exant”))有没有关于创建指定CSV文件的最简单和最有效方法的指示?感谢您的更正…有没有任何方法可以创建for循环,以便我只查看已消失/现存的状态。我可以一开始就创造这个条件吗?然后用你建议的第二种方法?我想要最有效的代码,而不必复制和粘贴此代码位来指定我正在查看的每个组,例如,下一个组将是get_group((“AF”,“extant”))创建指定CSV文件的最简单和最有效的方法有何指示?