使用 pandas 聚合表

Posted

技术标签:

【中文标题】使用 pandas 聚合表【英文标题】:aggregating the table using pandas 【发布时间】:2018-10-24 03:44:16 【问题描述】:

下面是输入。

            X   Y   Z
AP          1   1   1
Karnataka   0   1   0
Goa         1   1   0
Tamilnadu   0   1   0
AP          0   1   1
Goa         0   0   0
Tamilnadu   0   1   1
Goa         0   0   0
AP          1   0   0
Tamilnadu   0   1   0
Tamilnadu   1   1   0
Goa         0   1   1
Karnataka   0   0   0
Karnataka   0   1   0

要执行的计算:

    A 列中存在的状态数

    X 列中存在的 1 的数量除以 A 列中每个状态的计数

    代码应该是动态的,因为列数和行数可能会有所不同。

预期输出:

                   Total      AP   Karnataka    Goa      Tamilnadu
Total Sample        14        3        3         4           4
X                 0.2857    0.6667  0.0000    0.2500      0.2500
Y                 0.7143    0.6667  0.6667    0.5000      1.0000
Z                 0.2857    0.6667  0.0000    0.2500      0.2500

【问题讨论】:

你有什么尝试吗? 【参考方案1】:

我确信有更好的方法,但以下方法可行。

假设 my_df 有输入数据;

result=my_df.groupby('A').mean().transpose()
result1=my_df.groupby('A').sum().transpose()
result1=result1.append(my_df['A'].value_counts())
result1=result1.rename('A':'Total Sample')
result1['Total']=result1.apply('sum',axis=1)
finalRow=result1.iloc[len(result1)-1]
for i in range(len(result1)-1):
    result1.iloc[i]=result1.iloc[i]/finalRow
result['Total']=result1['Total']
result=result.append(result1.loc['Total Sample'])

完成!!!

【讨论】:

以上是关于使用 pandas 聚合表的主要内容,如果未能解决你的问题,请参考以下文章

Pandas 均值数据透视表包含 NaN 值,即使在聚合之前填充了数据

Pandas 数据透视表:按特定字符串的计数聚合函数

在列*和*索引上使用 groupby 并与 pandas 数据框聚合

python使用pandas通过聚合获取时序数据的最后一个指标数据(例如长度指标时间指标)生成标签并与原表连接(join)进行不同标签特征的可视化分析

关于另一个 csv、pandas 上的操作(聚合最大值)的相应 csv 值

pandas聚合和分组运算之groupby