使用 pandas 绘制图表以仅显示某些值
Plotting a graph with pandas to only display certain values
我创建了一个仅包含另一个数据框的 2 列的数据框:
df1 = df[["BNF Chapter", "Name"]]
df1
这显示了一个包含两列的数据框。我按功能进行了分组,因此对于每一章,例如 1,它显示该特定章节的药物名称
df1.groupby(['BNF Chapter','Name'])['BNF Chapter'].sum()
BNF Chapter Name
1 Allantoin + Lidocaine 4
Aluminium hydroxide 2
Aluminium hydroxide + Magnesium trisilicate 2
Alverine 702
21 Polihexanide 42
我怎样才能将其绘制在特定于第 1 章的图表上,并在一侧显示药物名称,在图表底部显示规定的次数?
如有任何帮助,我将不胜感激!
任何帮助将不胜感激!! :)
您可以对列执行分组并仍然访问该列 -
df1.groupby(['BNF Chapter','Name'])['BNF Chapter'].sum()
如果我没理解错的话,你想做的是将特定 BNF 章节的匹配名称聚合到一个集合中?
我正在 this question
中窃取 muon 的答案
# if list of unique items is desired, use set
df.groupby('A',as_index=False)['B'].aggregate(lambda x: set(x))
# if duplicate items are okay, use list
df.groupby('A',as_index=False)['B'].aggregate(lambda x: list(x))
如果您希望框架的行数与章节数一样多,您可以这样做,它会为每个 BNF Chapter
.
提供一个名称列表
df1.groupby('BNF Chapter').Name.apply(lambda x: [x])
编辑
对于你关于绘制单个药物(组合)的问题,假设没有太多,你可以做这样的事情——我注意到你说的只是第 1 章。
我假设此命令产生了您问题中显示的输出。
df1.groupby(['BNF Chapter','Name'])['BNF Chapter'].sum()
如果是这样,您可以这样做:
df1.groupby(['BNF Chapter','Name'])['BNF Chapter'].sum().loc['1'].sort_values(ascending=False).plot(kind='barh')
如果 BNF Chapter
不是字符串,请删除引号,使 .loc['1']
变为 .loc[1]
。
我创建了一个仅包含另一个数据框的 2 列的数据框:
df1 = df[["BNF Chapter", "Name"]]
df1
这显示了一个包含两列的数据框。我按功能进行了分组,因此对于每一章,例如 1,它显示该特定章节的药物名称
df1.groupby(['BNF Chapter','Name'])['BNF Chapter'].sum()
BNF Chapter Name
1 Allantoin + Lidocaine 4
Aluminium hydroxide 2
Aluminium hydroxide + Magnesium trisilicate 2
Alverine 702
21 Polihexanide 42
我怎样才能将其绘制在特定于第 1 章的图表上,并在一侧显示药物名称,在图表底部显示规定的次数?
如有任何帮助,我将不胜感激!
任何帮助将不胜感激!! :)
您可以对列执行分组并仍然访问该列 -
df1.groupby(['BNF Chapter','Name'])['BNF Chapter'].sum()
如果我没理解错的话,你想做的是将特定 BNF 章节的匹配名称聚合到一个集合中?
我正在 this question
中窃取 muon 的答案# if list of unique items is desired, use set
df.groupby('A',as_index=False)['B'].aggregate(lambda x: set(x))
# if duplicate items are okay, use list
df.groupby('A',as_index=False)['B'].aggregate(lambda x: list(x))
如果您希望框架的行数与章节数一样多,您可以这样做,它会为每个 BNF Chapter
.
df1.groupby('BNF Chapter').Name.apply(lambda x: [x])
编辑 对于你关于绘制单个药物(组合)的问题,假设没有太多,你可以做这样的事情——我注意到你说的只是第 1 章。
我假设此命令产生了您问题中显示的输出。 df1.groupby(['BNF Chapter','Name'])['BNF Chapter'].sum()
如果是这样,您可以这样做:
df1.groupby(['BNF Chapter','Name'])['BNF Chapter'].sum().loc['1'].sort_values(ascending=False).plot(kind='barh')
如果 BNF Chapter
不是字符串,请删除引号,使 .loc['1']
变为 .loc[1]
。