小编Pau*_*l H的帖子

删除具有重复索引的行(Pandas DataFrame和TimeSeries)

我正在从网上阅读一些自动天气数据.观察每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)

python pandas

217
推荐指数
4
解决办法
18万
查看次数

如何更改seaborn图的图形大小?

如何更改图像的大小以使其适合打印?

例如,我想使用A4纸,其横向尺寸为11.7英寸×8.27英寸.

python seaborn

171
推荐指数
13
解决办法
26万
查看次数

添加持续时间到片刻(moment.js)

瞬间版本: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值.

javascript momentjs

126
推荐指数
3
解决办法
22万
查看次数

在ipython中调用pylab.savefig而不显示

我需要在文件中创建一个图形而不在IPython笔记本中显示它.我不是之间的相互作用明确IPython,并matplotlib.pylab在这方面.但是,当我调用pylab.savefig("test.png")当前数字时,除了保存之外,还会显示test.png.当自动创建大量绘图文件时,这通常是不合需要的.或者在需要由另一个应用程序进行外部处理的中间文件的情况下.

不确定这是笔记本matplotlib还是IPython笔记本问题.

matplotlib ipython-notebook

82
推荐指数
2
解决办法
8万
查看次数

如何在matplotlib中使用日期时间更改x轴的范围?

我正在尝试绘制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)

这是输出: 在此输入图像描述

python django date matplotlib

24
推荐指数
2
解决办法
5万
查看次数

使用Pandas数据帧索引作为matplotlib图中x轴的值

我在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)

python plot matplotlib pandas

14
推荐指数
2
解决办法
4万
查看次数

在matplotlib中实现水平图

我正在尝试在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)

python matplotlib

10
推荐指数
1
解决办法
1545
查看次数

Pandas datetime列为序数

我正在尝试使用日期时间列中的序数日创建一个新的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分钟内一直在努力阅读文档.

如何为数据框创建序数时间列?

python datetime pandas

10
推荐指数
2
解决办法
8050
查看次数

在python的框图中显示平均值?

我是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)

python matplotlib boxplot

9
推荐指数
2
解决办法
3万
查看次数

在python中舍入科学记数法

我有一个像2.32432432423e25python中的数字是计算的结果.

我想将其舍入到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位有效数字?

python

9
推荐指数
2
解决办法
6536
查看次数