Python 如何删除重复行并获取列中3个最常用元素的百分比值?
我有以下数据帧Python 如何删除重复行并获取列中3个最常用元素的百分比值?,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下数据帧 A B x q x q x k y w y h y w z e z e z e z c 我如何实现这样的目标(以下数据帧的结构可能不正确): 有人能帮我吗?我是python初学者。这将接近您的需要,您可以像您这样进行调整: df.value_counts(normalize=True).mul(100).reset_index() 我更喜欢交叉表 pd.crosstab(df['A'],df['B'],normalize='index') Out[35
A B
x q
x q
x k
y w
y h
y w
z e
z e
z e
z c
我如何实现这样的目标(以下数据帧的结构可能不正确):
有人能帮我吗?我是python初学者。这将接近您的需要,您可以像您这样进行调整:
df.value_counts(normalize=True).mul(100).reset_index()
我更喜欢交叉表
pd.crosstab(df['A'],df['B'],normalize='index')
Out[352]:
B c e h k q w
A
x 0.00 0.00 0.000000 0.333333 0.666667 0.000000
y 0.00 0.00 0.333333 0.000000 0.000000 0.666667
z 0.25 0.75 0.000000 0.000000 0.000000 0.000000
我有一个错误:
***AttributeError:“DataFrame”对象没有属性“value\u counts”
完美!老板@卡桑格拉斯可以做得更紧凑一些way@kasangras我提供了一个不同的数据,但如果你把它应用到你的数据中,它也能很好地工作!非常感谢老板!
pd.crosstab(df['A'],df['B'],normalize='index')
Out[352]:
B c e h k q w
A
x 0.00 0.00 0.000000 0.333333 0.666667 0.000000
y 0.00 0.00 0.333333 0.000000 0.000000 0.666667
z 0.25 0.75 0.000000 0.000000 0.000000 0.000000
data = pd.DataFrame({"A":["x","x","x","y","y","y"],"B":["q","q","k","w","h","w"]})
regrouped = data.groupby(["A","B"],as_index=False)["B"].size()
regrouped / regrouped.groupby("A").sum()
# output
A B
x k 0.333333
q 0.666667
y h 0.333333
w 0.666667
dtype: float64