Pandas 如何在计算时绘制两个不同的特征?
假设我有这样一个数据帧:Pandas 如何在计算时绘制两个不同的特征?,pandas,matplotlib,plot,graph,data-visualization,Pandas,Matplotlib,Plot,Graph,Data Visualization,假设我有这样一个数据帧: *Age* *RemoteWork* 18 Sometimes 24 Never 30 Sometimes 15 Never 24 Sometimes 事情就是这样 我将如何绘制一个图表,例如“显示有多少24岁的年轻人在从不组队” 假设有更多的年龄和远程工作值。我基本上是试图创建一个年龄直方图,显示远程工作的价值和计数 如果这不是很清楚,我很抱歉。如果您需要更多信息,请告诉我。很明显,您的示例数据集是有限的,没有其他属性。你真的需要考虑你想如何想象,然后它是
*Age* *RemoteWork*
18 Sometimes
24 Never
30 Sometimes
15 Never
24 Sometimes
事情就是这样
我将如何绘制一个图表,例如“显示有多少24岁的年轻人在从不组队”
假设有更多的年龄和远程工作值。我基本上是试图创建一个年龄直方图,显示远程工作的价值和计数
如果这不是很清楚,我很抱歉。如果您需要更多信息,请告诉我。很明显,您的示例数据集是有限的,没有其他属性。你真的需要考虑你想如何想象,然后它是直接的。使用matplotlib两个示例
pd.crosstab(df['Age',df['RemoteWork']).plot.bar()
这也很好用,如果你把它作为答案贴出来,你会接受的。谢谢你,很好,谢谢。
import matplotlib.pyplot as plt
df = pd.read_csv(io.StringIO("""*Age* *RemoteWork*
18 Sometimes
24 Never
30 Sometimes
15 Never
24 Sometimes"""), sep="\s+")
fig, ax = plt.subplots(1,2, figsize=[10,5],
sharey=False, sharex=False, gridspec_kw={"hspace":0.3})
(df
.assign(a=lambda dfa: ((dfa["*Age*"]//10)*10).astype(str)+"-"+(((dfa["*Age*"]//10)*10)+9).astype(str))
.groupby(["a","*RemoteWork*"])
.agg("count")
.unstack(0)
.droplevel([0], axis=1)
.plot(ax=ax[1],kind="bar", stacked=True)
)
ax[1].set_xlabel("Stacked", weight='bold', fontsize=12)
(df
.assign(y=lambda dfa: pd.factorize(dfa["*RemoteWork*"])[0])
.plot(ax=ax[0],kind="scatter", x="*Age*", y="y", c="*Age*", s="*Age*", colormap="jet")
)
ax[0].set_xlabel("Scatter", weight='bold', fontsize=12)