在脚本(不是IPython)中使用此脚本时,什么也没有发生,即绘图窗口不出现:
import numpy as np
import pandas as pd
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
ts.plot()
即使添加time.sleep(5)
,也什么也没有。为什么?
有没有一种方法, 而不必手动调用matplotlib ?
绘制完绘图后,需要告知matplotlib show
。做事的通常方法是从那里导入matplotlib.pyplot
并调用show
:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
ts.plot()
plt.show()
由于您已请求不这样做(为什么?),因此可以使用以下[注意:这似乎不再适用于更新版本的pandas
]:
import numpy as np
import pandas as pd
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
ts.plot()
pd.tseries.plotting.pylab.show()
但是您在这里所做的所有工作都是在中找到matplotlib
已导入的地方pandas
,然后show
从那里调用相同的函数。
您是否要避免打电话matplotlib
来加快速度?如果是这样,那么您实际上并没有加快速度,因为pandas
已经导入了pyplot
:
python -mtimeit -s 'import pandas as pd'
100000000 loops, best of 3: 0.0122 usec per loop
python -mtimeit -s 'import pandas as pd; import matplotlib.pyplot as plt'
100000000 loops, best of 3: 0.0125 usec per loop
最后,您在注释中链接的示例不需要调用matplotlib
的原因是因为它是在iPython notebook
而不是脚本中以交互方式运行的。
我有以下数据: 现在,如果我打电话: 我将得到两个单独的直方图,每列一个。这不是我想要的。我想要的是使用这两列生成一个直方图,其中一列被解释为一个值,另一列被解释为该值的多次出现。我应该如何生成这样的直方图? 我试过: 但这会生成更多带有错误信息的(空)直方图。
我有这个熊猫数据框 这就给了我: 我该怎么办 做一个新的人物, 将标题添加到图"标题这里" 以某种方式创建一个映射,这样标签不是29,30等,而是“29周”,“30周”等。 将图表的较大版本保存到我的计算机(例如10 x 10英寸) 这件事我已经琢磨了一个小时了!
我在CSV文件中有一些数据,想打印出来,但图形没有显示出来 这是CSV文件http://www.mediafire.com/file/2gtbxm5adom7m4j/pop.csv
问题内容: Python 3.4和Pandas 0.15.0 df是一个数据框,而col1是一列。使用下面的代码,我正在检查是否存在值10,并将此类值替换为1000。 这是另一个例子。这次,我将基于索引更改col2中的值。 这两种都会产生以下警告: 最后, 这会产生类似的警告,并带有以下建议: 我不确定我是否理解警告中指出的讨论。编写这三行代码的更好方法是什么? 请注意,该操作有效。 问题答案:
问题内容: 我想将 大于任意数(在这种情况下为100)的值替换为(因为如此大的值表示实验失败)。以前,我使用它来替换不需要的值: 但是,出现以下错误: 从这个StackExchange问题来看,有时似乎可以忽略此警告,但是我不能很好地跟踪讨论,无法确定这是否适用于我的情况。警告基本上是让我知道我将覆盖我的某些值吗? 编辑:据我所知,一切都按其应有的方式进行。作为后续措施,我的替换值方法是否非标
我有一个数据帧,如: 所以我想通过两个“for循环”添加一些列,如: 新的类似数据帧的图片: 我的代码不起作用: 如何编写代码来获得像第二张图片这样的数据帧?