Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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_Pandas_Pandas Groupby - Fatal编程技术网

Python 如何计算列和值的百分比?

Python 如何计算列和值的百分比?,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我有一个熊猫数据框,看起来像这样: Country Sold Japan 3432 Japan 4364 Korea 2231 India 1130 India 2342 USA 4333 USA 2356 USA 3423 我使用了下面的代码,得到了“已售出”列的总和 我想问一下如何计算“售出”列总和的百分比 我们可以将原始的sell列除以一个新的列,该列由分组的和组成,但保持与原始数据帧相同的长度,方法是使用 简单解决方案 你就

我有一个熊猫数据框,看起来像这样:

Country  Sold
 Japan   3432
 Japan   4364
 Korea   2231
 India   1130
 India   2342
  USA    4333
  USA    2356
  USA    3423
我使用了下面的代码,得到了“已售出”列的总和


我想问一下如何计算“售出”列总和的百分比

我们可以将原始的
sell
列除以一个新的列,该列由分组的和组成,但保持与原始数据帧相同的长度,方法是使用


简单解决方案

你就快到了

  • 首先,您需要按国家分组
  • 然后创建新的百分比列(将分组销售额除以所有销售额之和)

  • 您是在寻找聚合后还是聚合前的百分比

    import pandas as pd
    countries = [['Japan',3432],['Japan',4364],['Korea',2231],['India',1130],    ['India',2342],['USA',4333],['USA',2356],['USA',3423]]
    df = pd.DataFrame(countries,columns=['Country','Sold'])
    df1 = df.groupby(df['Country'])
    df2 = df1.sum()
    df2['percentage'] = (df2['Sold']/df2['Sold'].sum()) * 100
    df2
    

    您可以通过添加此代码来获得百分比

    df2["percentage"] = df2['Sold']*100 / df2['Sold'].sum()
    

    在输出数据框中,添加了一列,列中列出了每个国家的百分比。

    请编辑您的答案,包括您所做的事情和原因的解释。
    # reset_index() is only there because the groupby makes the grouped column the index
    df_grouped_countries = df.groupby(df.Country).sum().reset_index()
    df_grouped_countries['pct_sold'] = df_grouped_countries.Sold / df.Sold.sum()
    
    import pandas as pd
    countries = [['Japan',3432],['Japan',4364],['Korea',2231],['India',1130],    ['India',2342],['USA',4333],['USA',2356],['USA',3423]]
    df = pd.DataFrame(countries,columns=['Country','Sold'])
    df1 = df.groupby(df['Country'])
    df2 = df1.sum()
    df2['percentage'] = (df2['Sold']/df2['Sold'].sum()) * 100
    df2
    
    df2["percentage"] = df2['Sold']*100 / df2['Sold'].sum()