格式化用于绘制图形的数据帧

2024-09-26 18:13:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我已将数据加载到数据框中,数据框中的一列具有如下值。我需要计算每个水果的数量,并将其值传递给数据提供者以绘制一个图。你知道吗

************************
Data in the Dataframe
************************
orange
apple
grapes
mango
orange
orange
orange
mango
apple

例如,我想以下面的格式将值传递到dataProvider中。你知道吗

"dataProvider": [{
    "flavor": "orange",
    "count": 4
  }, {
    "flavor": "apple",
    "count": 2
  }, {
    "flavor": "grapes",
    "count": 1
  }, {
    "flavor": "mango",
    "count": 2
  }],

基本上我想从上面的数据中得到以下格式。你知道吗

[{
    "flavor": "orange",
    "count": 4
  }, {
    "flavor": "apple",
    "count": 2
  }, {
    "flavor": "grapes",
    "count": 1
  }, {
    "flavor": "mango",
    "count": 2
  }]

Tags: 数据inappledata数量格式count提供者
2条回答

假设您的数据帧df,如下所示:

   flavor
0  orange
1   apple
2  grapes
3   mango
4  orange
5  orange
6  orange
7   mango
8   apple

你可以在理解中使用pd.factorize

f, u = pd.factorize(df.flavor)
[dict(count=c, flavor=f) for c, f in zip(np.bincount(f), u)]

[{'count': 4, 'flavor': 'orange'},
 {'count': 2, 'flavor': 'apple'},
 {'count': 1, 'flavor': 'grapes'},
 {'count': 2, 'flavor': 'mango'}]

或者,您可以使用pd.Series.value_counts执行与factorizebincount类似的任务

s = df.flavor.value_counts()
[dict(count=c, flavor=f) for c, f in zip(s.values, s.index)]

[{'count': 4, 'flavor': 'orange'},
 {'count': 2, 'flavor': 'apple'},
 {'count': 1, 'flavor': 'grapes'},
 {'count': 2, 'flavor': 'mango'}]

我认为需要^{}^{}^{}作为计数,然后通过^{}将索引转换为列,最后通过^{}转换为list of dicts:

print (df)
   flavor
0  orange
1   apple
2  grapes
3   mango
4  orange
5  orange
6  orange
7   mango
8   apple

d = df.groupby('flavor', sort=False).size().reset_index(name='count').to_dict('r')
print (d)
[{'count': 4, 'flavor': 'orange'}, 
 {'count': 2, 'flavor': 'apple'}, 
 {'count': 1, 'flavor': 'grapes'}, 
 {'count': 2, 'flavor': 'mango'}]

d = (df['flavor'].value_counts(sort=False)
                 .rename_axis('flavor')
                 .reset_index(name='count')
                 .to_dict('r'))
print (d)
[{'count': 1, 'flavor': 'grapes'}, 
 {'count': 2, 'flavor': 'apple'}, 
 {'count': 2, 'flavor': 'mango'},
 {'count': 4, 'flavor': 'orange'}]

相关问题 更多 >

    热门问题