我正在从网上阅读一些自动天气数据.观察每5分钟发生一次,并编译成每个气象站的月度文件.一旦我完成了解析文件,DataFrame看起来像这样:
Sta Precip1hr Precip5min Temp DewPnt WindSpd WindDir AtmPress
Date
2001-01-01 00:00:00 KPDX 0 0 4 3 0 0 30.31
2001-01-01 00:05:00 KPDX 0 0 4 3 0 0 30.30
2001-01-01 00:10:00 KPDX 0 0 4 3 4 80 30.30
2001-01-01 00:15:00 KPDX 0 0 3 2 5 90 30.30
2001-01-01 00:20:00 KPDX 0 0 3 2 10 110 30.28
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,有时科学家会回过头来纠正观察结果 - 不是通过编辑错误的行,而是通过在文件的末尾附加一个重复的行.这种情况的简单示例如下所示:
import pandas
import datetime
startdate = datetime.datetime(2001, 1, 1, 0, 0)
enddate = datetime.datetime(2001, 1, 1, 5, …
Run Code Online (Sandbox Code Playgroud) 如何更改图像的大小以使其适合打印?
例如,我想使用A4纸,其横向尺寸为11.7英寸×8.27英寸.
瞬间版本:2.0.0
阅读文档后,我认为这将是直截了当的(Chrome控制台):
var timestring1 = "2013-05-09T00:00:00Z";
var timestring2 = "2013-05-09T02:00:00Z";
var startdate = moment(timestring1);
var expected_enddate = moment(timestring2);
var returned_endate = startdate.add(moment.duration(2, 'hours'));
returned_endate == expected_enddate // false
returned_endate // Moment {_i: "2013-05-09T00:00:00Z", _f: "YYYY-MM-DDTHH:mm:ss Z", _l: undefined, _isUTC: false, _a: Array[7]…}
Run Code Online (Sandbox Code Playgroud)
这是一个微不足道的例子,但我甚至无法让它发挥作用.我觉得我在这里错过了一些大事,但我真的不明白.即便如此,这似乎也不起作用:
startdate.add(2, 'hours')
// Moment {_i: "2013-05-09T00:00:00Z", _f: "YYYY-MM-DDTHH:mm:ss Z", _l: undefined, _isUTC: false, _a: Array[7]…}
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激.
编辑: 我的最终目标是制作一个二进制状态图,就像我在这里工作的那样:http: //bl.ocks.org/phobson/5872894
正如您所看到的,当我解决此问题时,我正在使用虚拟x值.
我需要在文件中创建一个图形而不在IPython笔记本中显示它.我不是之间的相互作用明确IPython
,并matplotlib.pylab
在这方面.但是,当我调用pylab.savefig("test.png")
当前数字时,除了保存之外,还会显示test.png
.当自动创建大量绘图文件时,这通常是不合需要的.或者在需要由另一个应用程序进行外部处理的中间文件的情况下.
不确定这是笔记本matplotlib
还是IPython
笔记本问题.
我正在尝试绘制x轴上的日期图和y轴上的值.它工作正常,除了我不能使x轴的范围合适.x轴范围始终是2012年1月至2016年1月,尽管我的日期是从今天开始.我甚至指定xlim应该是第一个和最后一个日期.
我正在为python-django写这个,如果这是相关的.
import datetime
import matplotlib.pyplot as plt
x = [datetime.date(2014, 1, 29), datetime.date(2014, 1, 29), datetime.date(2014, 1, 29)]
y = [2, 4, 1]
fig, ax = plt.subplots()
ax.plot_date(x, y)
ax.set_xlim([x[0], x[-1]])
canvas = FigureCanvas(plt.figure(1))
response = HttpResponse(content_type='image/png')
canvas.print_png(response)
return response
Run Code Online (Sandbox Code Playgroud)
这是输出:
我在Pandas中有时间序列dateframe
,有许多列我想绘制.有没有办法将x轴设置为始终使用索引dateframe
?当我使用.plot()
Pandas中的方法时,x轴格式正确,但是当我传递日期和列时,我想直接绘制到matplotlib,图表没有正确绘制.提前致谢.
plt.plot(site2.index.values, site2['Cl'])
plt.show()
Run Code Online (Sandbox Code Playgroud)
仅供参考:site2.index.values
产生这个(我为了简洁我切掉了中间部分):
array([
'1987-07-25T12:30:00.000000000+0200',
'1987-07-25T16:30:00.000000000+0200',
'2010-08-13T02:00:00.000000000+0200',
'2010-08-31T02:00:00.000000000+0200',
'2010-09-15T02:00:00.000000000+0200'
],
dtype='datetime64[ns]')
Run Code Online (Sandbox Code Playgroud) 我正在尝试在matplotlib中实现水平图表(参见:http://square.github.com/cubism/ )
基本的想法是你以窄纵横比显示时间序列,随着值的增加(超过y轴限制),它们从底部开始以较暗的颜色开始(当你去的时候想想旧的Atari游戏)超过屏幕顶部并弹出底部).
我的基本方法是将y数据划分为卡盘并使用新的轴绘制每个垂直组ax.twinx()
并适当设置限制.
仅对于正面或负面数据,这似乎运作良好.
正:
负:
但出于某种原因,做两个螺丝:
# setup the environment
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi*4, 137)
y = (2*np.random.normal(size=137) + x**2)
# reflect everything around the origin
xx = np.hstack([-1*x[::-1], x])
yy = np.hstack([-1*y[::-1], y])
# function to do the plot
def horizonPlot(ax, x, y, nfolds=3, inverty=False, color='CornflowerBlue'):
axes = [ax]
if inverty:
ylims = np.linspace(y.min(), y.max(), nfolds + 1)[::-1]
else:
ylims = np.linspace(y.min(), y.max(), nfolds + …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用日期时间列中的序数日创建一个新的Pandas数据帧列:
import pandas as pd
from datetime import datetime
print df.ix[0:5]
date
file
gom3_197801.nc 2011-02-16 00:00:00
gom3_197802.nc 2011-02-16 00:00:00
gom3_197803.nc 2011-02-15 00:00:00
gom3_197804.nc 2011-02-17 00:00:00
gom3_197805.nc 2011-11-14 00:00:00
df['date'][0].toordinal()
Out[6]:
734184
df['date'].toordinal()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-7-dbfd5e8b60f0> in <module>()
----> 1 df['date'].toordinal()
AttributeError: 'Series' object has no attribute 'toordinal'
Run Code Online (Sandbox Code Playgroud)
我想这是一个基本问题,但我在最近30分钟内一直在努力阅读文档.
如何为数据框创建序数时间列?
我是Matplotlib的新手,当我学习如何在python中绘制盒子图时,我想知道是否有办法在盒子图中显示平均值?以下是我的代码..
from pylab import *
import matplotlib.pyplot as plt
data1=np.random.rand(100,1)
data2=np.random.rand(100,1)
data_to_plot=[data1,data2]
#Create a figure instance
fig = plt.figure(1, figsize=(9, 6))
# Create an axes instance
axes = fig.add_subplot(111)
# Create the boxplot
bp = axes.boxplot(data_to_plot,**showmeans=True**)
Run Code Online (Sandbox Code Playgroud)
即使我有showmean标志,它给我以下错误.
TypeError: boxplot() got an unexpected keyword argument 'showmeans'
Run Code Online (Sandbox Code Playgroud) 我有一个像2.32432432423e25
python中的数字是计算的结果.
我想将其舍入到3个小数点以获得输出:
2.324e25
Run Code Online (Sandbox Code Playgroud)
我试过用:
x = 2.32432432423e25
number_rounded = round(x, 3)
Run Code Online (Sandbox Code Playgroud)
但是当我打印number_rounded
它时输出一个格式相同的数字 x
.
如何将显示限制x
为仅4位有效数字?