python – 如何获取pandas数据帧对象值的模式?

前端之家收集整理的这篇文章主要介绍了python – 如何获取pandas数据帧对象值的模式?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个包含大量列的 pandas.DataFrame.我只对其中type =’object’的那些列(‘names’)感兴趣.我想回答有关此专栏的三个问题: @H_404_2@>除了纳米值之外,最常出现的值是什么?
>有多少值符合该标准(答案#1中的值计数)?
>这些值出现的频率是多少?

@H_404_2@我从一个大型数据帧(df)开始.我感兴趣的专栏叫做’名字’.首先,我使用collection.Counter来获取’names’列中每个唯一值的出现次数

In [52]: cntr = collections.Counter([r for i,r in df['names'].dropna().iteritems()])
Out[52]: Counter({'Erk': 118,'James': 120,'John': 126,'Michael': 129,'Phil': 117,'Ryan': 126})
@H_404_2@然后我将Counter转换回数据帧:

In [53]: df1 = pd.DataFrame.from_dict(cntr,orient='index').reset_index()
In [54]: df1 = df1.rename(columns={'index':'names',0:'cnt'})
@H_404_2@这给了我一个包含以下内容的pandas数据框:

In [55]: print (type(df1),df1)
Out[55]: <class 'pandas.core.frame.DataFrame'>
       names    cnt
    0      Erk  118
    1    James  120
    2     Phil  117
    3     John  126
    4  Michael  122
    5     Ryan  126
@H_404_2@下一部分是我需要一些帮助的地方.我在这个例子中的期望输出是:

@H_404_2@答案#1 = [John,Ryan]

@H_404_2@答案#2 = 2

@H_404_2@答案#3 = 126

@H_404_2@我不相信使用计数器是最好的选择,因此我愿意接受保留在数据帧内的选项,而不会在数据帧之间反弹以反击数据帧.

解决方法

您可以直接从柜台获取该信息,例如: @H_404_2@码:

from collections import Counter

data = Counter({'Erk': 118,'Michael': 122,'Ryan': 126})

by_count = {}
for k,v in data.items():
     by_count.setdefault(v,[]).append(k)
max_value = max(by_count.keys())
print(by_count[max_value],len(by_count[max_value]),max_value)
@H_404_2@结果:

['John','Ryan'] 2 126

猜你在找的Python相关文章