我是Pandas的新手,对不起,如果这个问题很简单,或者没有多大意义。
假设我有以下数据框(取自doc):
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({
'A' : ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B' : ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C' : np.random.randn(8),
'D' : np.random.randn(8)}
)
值:
A B C D
0 foo one -1.591757 0.016910
1 bar one 0.540010 1.022113
2 foo two -1.134974 -1.600034
3 bar three 0.082130 -0.221179
4 foo two 0.252851 1.963539
5 bar two -3.012450 0.815712
6 foo one -0.243863 0.615665
7 foo three -2.558635 -2.405591
我计算C列和D列的平均值为B的任何值:
result = df.groupby("B").mean()
值:
C D
B
one -0.431870 0.551563
three -1.238253 -1.313385
two -1.298191 0.393072
我可以使用plot
的{{1}}方法绘制结果表:
DataFrame
现在,如果我想进一步操纵情节,直接使用result.plot()
,则会丢失图例,并用数字索引替换横坐标标签:
plt.plot
我如何使用plt.plot(result)
获得相同的情节?
答案 0 :(得分:1)
获取对绘图的引用,然后使用标准的matplotlib命令从那里开始。
p = plt.subplot(111)
p.plot(result)
p.legend(['C', 'D'])
plt.xticks(list(range(len(result))), result.index)
plt.xlabel(result.index.name)
版本参考情节。有多个图时很有用:
p = plt.subplot(111)
p.plot(result)
p.legend(['C', 'D'])
p.set_xticks(list(range(len(result))))
p.set_xticklabels(result.index)
p.set_xlabel(result.index.name)