Python 熊猫:使用百分比创建聚合表

Python 熊猫:使用百分比创建聚合表,python,pandas,Python,Pandas,我有一份数据 Third party unique identifier Qsex 9ea3e3cb6719f3d336d324c446f486bd 1 d1b69bc4cccf0afef66debf4e3f0643e 2 f574fc585db0cddef88306ef6f32da59 1 8bc0a586bf0abec653c29cf4160753f9 1 7c22b56929378ec2eb3a536b4f4bc4e0 2 23d8433168c46d57

我有一份数据

Third party unique identifier   Qsex
9ea3e3cb6719f3d336d324c446f486bd    1
d1b69bc4cccf0afef66debf4e3f0643e    2
f574fc585db0cddef88306ef6f32da59    1
8bc0a586bf0abec653c29cf4160753f9    1
7c22b56929378ec2eb3a536b4f4bc4e0    2
23d8433168c46d57a271a6b979037094    1
5743b7eec1b018572b6c5b44542a67a5    2
f176289325aa4a6fa56c0179e9cbd101    1
c729933ff7db798ae07c59d971f40a70    1
d12d5fc03f4c03bb85c4b39d29dbfa25    2
442a4568d77d0f5b8a559e8eb39c03b3    1
a0a536482e7b23956210d1cace0b5fb7    1
c1aef06d15347ef2fbb2a8a3af1d4b85    1
38ff613c441bf35fa4054eac88ae3cda    1
我需要像这样的东西

我用

到%。
但是我无法得到理想的

这里有一个使用
pandas
API的答案

我已经尽了最大努力构建函数调用,以便您可以遵循逻辑。答案来自于

[1]中的
:将熊猫作为pd导入
在[3]中:data=pd.read\u csv('data.csv'))
在[4]中:数据
出[4]:
第三方唯一标识符Qsex
0 9ea3e3cb6719f3d336d324c446f486bd 1
1 d1b69bc4cccf0afef66debf4e3f0643e 2
2 F574FC585DB0CDEF8806EF6F32DA59 1
3 8bc0a586bf0abec653c29cf4160753f9 1
4 7c22b56929378ec2eb3a536b4f4bc4e0 2
5 23d8433168c46d57a271a6b979037094 1
6 5743b7eec1b018572b6c5b44542a67a5 2
7 f176289325aa4a6fa56c0179e9cbd101 1
8 c729933ff7db798ae07c59d971f40a70 1
9 d12d5fc03f4c03bb85c4b39d29dbfa25 2
10 442a4568d77d0f5b8a559e8eb39c03b3 1
11 a0a536482e7b23956210d1cace0b5fb7 1
12 C1AEF06D15347EF2FB2A8A3AF1D4B85 1
13 38ff613c441bf35fa4054eac88ae3cda 1
在[5]中:data.groupby('Qsex'))
出[5]:
在[6]中:data.groupby('Qsex').count()
出[6]:
第三方唯一标识符
Qsex
1                                10
2                                 4
在[11]中:data.groupby('Qsex').count()
出[11]:
第三方唯一标识符
Qsex
1                                10
2                                 4
在[14]中:counts=data.groupby('Qsex').count()
在[15]中:计数['percentage']=计数['Third party unique identifier']。应用(la)
…:mbda x:x/counts[“第三方唯一标识符”].sum()
在[16]中:计数
出[16]:
第三方唯一标识符百分比
Qsex
1                                10    0.714286
2                                 4    0.285714
在[17]中:计数['percentage']=计数['Third party unique identifier']。应用(la)
…:mbda x:100*x/计数['Third party unique identifier'].sum())
在[18]中:计数
出[18]:
第三方唯一标识符百分比
Qsex
1                                10   71.428571
2                                 4   28.571429
试试这个:

df["Sex"] = np.where(df["Qsex"] == 1, "Male", "Female")
df2       = pd.crosstab(df.Sex, df.Qsex, margins=True)
df3       = np.round(df2[["All"]]/df['Sex'].count()*100,2).rename(columns ={"All" :'%'})
pd.concat([df2[["All"]],df3], axis =1 )



  Qsex    All       %
Sex                
Female    4   28.57
Male     10   71.43
All      14  100.00

我不明白为什么你们会期望这两行能得到那个输出。我怎样才能创建这样的电子表格呢?我是说所有专栏的名字我想这里可能有一个误解
pandas
旨在帮助您在交互式脚本环境中以编程方式处理数据。如果您想“创建电子表格”,最好使用数据框对象提供的
.to_csv('filename.csv')
功能。我建议看一下文档。如何重命名列,如图像上的列?并添加顶部面板的代码>总计和<代码> N>代码>如果答案有效,请考虑接受它,你也可以投票。
100. * df.sex.value_counts() / len(df.sex)
In [1]: import pandas as pd

In [3]: data = pd.read_csv('data.csv')

In [4]: data
Out[4]:
       Third party unique identifier  Qsex
0   9ea3e3cb6719f3d336d324c446f486bd     1
1   d1b69bc4cccf0afef66debf4e3f0643e     2
2   f574fc585db0cddef88306ef6f32da59     1
3   8bc0a586bf0abec653c29cf4160753f9     1
4   7c22b56929378ec2eb3a536b4f4bc4e0     2
5   23d8433168c46d57a271a6b979037094     1
6   5743b7eec1b018572b6c5b44542a67a5     2
7   f176289325aa4a6fa56c0179e9cbd101     1
8   c729933ff7db798ae07c59d971f40a70     1
9   d12d5fc03f4c03bb85c4b39d29dbfa25     2
10  442a4568d77d0f5b8a559e8eb39c03b3     1
11  a0a536482e7b23956210d1cace0b5fb7     1
12  c1aef06d15347ef2fbb2a8a3af1d4b85     1
13  38ff613c441bf35fa4054eac88ae3cda     1

In [5]: data.groupby('Qsex')
Out[5]: <pandas.core.groupby.DataFrameGroupBy object at 0x111faff98>

In [6]: data.groupby('Qsex').count()
Out[6]:
      Third party unique identifier
Qsex
1                                10
2                                 4

In [11]: data.groupby('Qsex').count()
Out[11]:
      Third party unique identifier
Qsex
1                                10
2                                 4

In [14]: counts = data.groupby('Qsex').count()

In [15]: counts['percentage'] = counts['Third party unique identifier'].apply(la
    ...: mbda x: x/counts['Third party unique identifier'].sum())

In [16]: counts
Out[16]:
      Third party unique identifier  percentage
Qsex
1                                10    0.714286
2                                 4    0.285714

In [17]: counts['percentage'] = counts['Third party unique identifier'].apply(la
    ...: mbda x: 100*x/counts['Third party unique identifier'].sum())

In [18]: counts
Out[18]:
      Third party unique identifier  percentage
Qsex
1                                10   71.428571
2                                 4   28.571429
df["Sex"] = np.where(df["Qsex"] == 1, "Male", "Female")
df2       = pd.crosstab(df.Sex, df.Qsex, margins=True)
df3       = np.round(df2[["All"]]/df['Sex'].count()*100,2).rename(columns ={"All" :'%'})
pd.concat([df2[["All"]],df3], axis =1 )



  Qsex    All       %
Sex                
Female    4   28.57
Male     10   71.43
All      14  100.00