Python 在dataframe中迭代列的值计数
我有这个数据框:Python 在dataframe中迭代列的值计数,python,pandas,loops,Python,Pandas,Loops,我有这个数据框: power = [0,1,2,9,9,9,9,9,9,9,8,3] df_p = pd.DataFrame(power, columns = ['power']) power 0 0 1 1 2 2 3 9 4 9 5 9 6 9 7 9 8 9 9 9 10 8 11 3 在这里,我获取了功率列的值计数,然后再次对功率和各自的值计数进行df vc_d = df_p.power.value_counts() vc_d =
power = [0,1,2,9,9,9,9,9,9,9,8,3]
df_p = pd.DataFrame(power, columns = ['power'])
power
0 0
1 1
2 2
3 9
4 9
5 9
6 9
7 9
8 9
9 9
10 8
11 3
在这里,我获取了功率列的值计数,然后再次对功率和各自的值计数进行df
vc_d = df_p.power.value_counts()
vc_d = pd.DataFrame (vc_d)
vc_d = vc_d.reset_index()
vc_d.columns =['power', 'counts']
power counts
0 9 7
1 8 1
2 3 1
3 2 1
4 1 1
5 0 1
这只是一个样本,我有大约70000个条目。我想迭代幂值,检查它在DF中的发生率。例如:
vc_d.loc[ vc_d ['power'] > 8 , 'counts'].sum() / len(power) *100
out[] 58.333333333333336
vc_d.loc[ vc_d ['power'] > 9 , 'counts'].sum() / len(power) *100
out[] 0.0
从上面可以看出,我的功率值几乎有58%大于>8
,但只要我给出>9
,它就是0.0。所需的输出是获得值“8”。这意味着如果超过8,则功率值不存在或数字更少,这将降低百分比
你知道怎么做吗?提前感谢。考虑阈值为
0.5
,您可以使用查看系列中的百分比变化并应用您的逻辑:
df_p.power.value_counts().pct_change().fillna(0).abs().gt(.5).idxmax()
#8
其中:
df_p.power.value_counts().pct_change().fillna(0).abs()
给出:
9 0.000000
8 0.857143
3 0.000000
2 0.000000
1 0.000000
0 0.000000
将阈值视为
0.5
,您可以使用查看系列中的百分比变化并应用逻辑:
df_p.power.value_counts().pct_change().fillna(0).abs().gt(.5).idxmax()
#8
其中:
df_p.power.value_counts().pct_change().fillna(0).abs()
给出:
9 0.000000
8 0.857143
3 0.000000
2 0.000000
1 0.000000
0 0.000000
vc_d.loc[1,'power']
?这真的会一直实现…没关系。我需要找到电源(在本例中为8)。迭代之后,我可以发现大于9的功率为0.0%,大于8的功率为58.00。这意味着我58.00%的能量是9(>8)。@anky_91谢谢你的回答。我想找到值计数百分比变化的阈值,比如说50%。这意味着大于8的幂是58%,如果我进一步到9,它是零。这意味着功率值大于8但小于9。@Arpit您可以尝试df_p.power.value_counts().pct_change().fillna(0).abs().gt(.5).idxmax()
?其中.5
是阈值vc_d.loc[1,'power']
?这真的会一直实现…没关系。我需要找到电源(在本例中为8)。迭代之后,我可以发现大于9的功率为0.0%,大于8的功率为58.00。这意味着我58.00%的能量是9(>8)。@anky_91谢谢你的回答。我想找到值计数百分比变化的阈值,比如说50%。这意味着大于8的幂是58%,如果我进一步到9,它是零。这意味着功率值大于8但小于9。@Arpit您可以尝试df_p.power.value_counts().pct_change().fillna(0).abs().gt(.5).idxmax()
?其中.5
是阈值