python – 如何获取pandas数据帧对象值的模式?
发布时间:2020-12-16 22:53:19 所属栏目:Python 来源:网络整理
导读:我有一个包含大量列的 pandas.DataFrame .我只对其中type =’object’的那些列(‘names’)感兴趣.我想回答有关此专栏的三个问题: 除了纳米值之外,最常出现的值是什么? 有多少值符合该标准(答案#1中的值计数)? 这些值出现的频率是多少? 我从一个大型数据
我有一个包含大量列的
pandas.DataFrame .我只对其中type =’object’的那些列(‘names’)感兴趣.我想回答有关此专栏的三个问题:
>除了纳米值之外,最常出现的值是什么? 我从一个大型数据帧(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}) 然后我将Counter转换回数据帧: In [53]: df1 = pd.DataFrame.from_dict(cntr,orient='index').reset_index() In [54]: df1 = df1.rename(columns={'index':'names',0:'cnt'}) 这给了我一个包含以下内容的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 下一部分是我需要一些帮助的地方.我在这个例子中的期望输出是: 答案#1 = [John,Ryan] 答案#2 = 2 答案#3 = 126 我不相信使用计数器是最好的选择,因此我愿意接受保留在数据帧内的选项,而不会在数据帧之间反弹以反击数据帧. 解决方法
您可以直接从柜台获取该信息,例如:
码: 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) 结果: ['John','Ryan'] 2 126 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |