python - 如何在熊猫中将两年行合并为范围并将其图表与另一列绘制
问题描述
我有一个包含 ageFrom、ageTo 和 sales 列的数据集。现在我想绘制一个图表,其中一个轴为年龄范围,另一个轴为销售额,以根据年龄范围查找销售额?
我按年龄从、年龄到分组并找到销售额的总和。现在我需要在我的 x 轴上绘制 ageFrom 和 ageTo 作为范围,在 Y 轴上绘制总金额。如何解决这个问题?
解决方案
现在我不确定你有/没有尝试过什么,但是最简单的方法是为你的范围创建一个平均列(如果你想创建一个范围,以避免有非数值),然后将它绘制在你的销售额。下面应该这样做:
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')
推荐阅读
- javascript - 在基于 TypeScript 的 Vue 中将 vuex 状态和突变绑定到复选框组件属性
- docker - 在服务器上运行竹容器时卷数据未填充
- cassandra - 如何在 Windows 10 上安装 cassandra?
- spring - 在春季从过滤器中禁用jsession id
- c - 如何避免 xc8 编译器中的警告 1352?
- css - 如何在 Spree Commerce 中为自定义页面呈现新布局
- python - 如何在 PyMuPDF 中获取文本的背景颜色
- sql-server - SSMS 导出为 CSV 或复制粘贴中断注释列
- python - 如何将类指针发送到python函数?
- python - Groupby并在Python中的两列中查找相似或相同的项目