首页 > 解决方案 > 如何在熊猫中将两年行合并为范围并将其图表与另一列绘制

问题描述

我有一个包含 ageFrom、ageTo 和 sales 列的数据集。现在我想绘制一个图表,其中一个轴为年龄范围,另一个轴为销售额,以根据年龄范围查找销售额?

在此处输入图像描述

我按年龄从、年龄到分组并找到销售额的总和。现在我需要在我的 x 轴上绘制 ageFrom 和 ageTo 作为范围,在 Y 轴上绘制总金额。如何解决这个问题?

标签: pythonpandasmatplotlibdata-analysis

解决方案


现在我不确定你有/没有尝试过什么,但是最简单的方法是为你的范围创建一个平均列(如果你想创建一个范围,以避免有非数值),然后将它绘制在你的销售额。下面应该这样做:

import pandas as pd

#data
d = {'ageFrom': [0, 11, 21, 31], 'ageTo': [10, 20, 30, 40], 'sales':[2, 10, 15, 20]}
#create dataframe
df = pd.DataFrame(data = d)

#create a mean value for your range
df['mean'] = (df['ageFrom']  + df['ageTo'])/2
#plot data
ax1 = df.plot.scatter(x='mean',y='sales')

在此处输入图像描述

或者:您仍然可以创建一个范围列并将其绘制为条形图,如下所示:

#create a range column
df['range'] = df['ageFrom'].astype(str)  + '-' + df['ageTo'].astype(str)
#plot bar
ax2 = df.plot.bar(x='range', y='sales', rot=0)

在此处输入图像描述

最后,您仍然可以使用 matplotlib 为您的 x 轴使用非数字,如下所示:

import matplotlib.pyplot as plt

plt.scatter(df.range,df['sales'],c='b',label='range')

在此处输入图像描述


推荐阅读