小编Lui*_*uel的帖子

在熊猫DF中将datetime timedelta与一系列序列一起使用

我有一个看起来像这样的大熊猫sim_df:

在此处输入图片说明

现在,我想添加另一列“日期”,它是与“现在”加“ cum_days”(增量时间)相对应的日期。

start = dt.datetime.now()
sim_df['date'] = start + dt.timedelta(sim_df['cum_days'])
Run Code Online (Sandbox Code Playgroud)

但是看起来deltatime不使用序列,而是使用固定的标量。

TypeError: unsupported type for timedelta days component: Series
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以在向量化的操作中解决此问题,而无需遍历sim_df的每一行?

python datetime pandas

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

具有不同时区的时间数组的时间戳减法

我有其他人遇到类似问题的以下代码,但是提出的解决方案不适用于我的DataFrame。该代码从给定日期减去Pandas DataFrame索引:

my_date = pd.datetime.today()
MyDF['day_differential'] = (MyDF.index - my_date).days
Run Code Online (Sandbox Code Playgroud)

这在我的DataFrame中生成以下错误:

TypeError: Timestamp subtraction must have the same timezones or no timezones
Run Code Online (Sandbox Code Playgroud)

如何找到两个日期的tz?如何使它们相同,以便可以计算它们之间的天数?

python datetime numpy pandas

4
推荐指数
1
解决办法
4938
查看次数

Bokeh悬停工具提示不显示所有数据 - Ipython笔记本

我正在尝试使用Bokeh并混合代码片段.我从Pandas DataFrame创建了下面的图表,它使用我想要的所有工具元素正确显示图表.但是,工具提示部分显示数据.

这是图表:

与工具提示的散景图

这是我的代码:

from bokeh.plotting import figure, show
from bokeh.io import output_notebook
from bokeh.models import HoverTool
from collections import OrderedDict

x  = yearly_DF.index
y0 = yearly_DF.weight.values
y1 = yearly_DF.muscle_weight.values
y2 = yearly_DF.bodyfat_p.values

#output_notebook()

p = figure(plot_width=1000, plot_height=600,
           tools="pan,box_zoom,reset,resize,save,crosshair,hover", 
           title="Annual Weight Change",
           x_axis_label='Year', 
           y_axis_label='Weight',
           toolbar_location="left"
          )

hover = p.select(dict(type=HoverTool))
hover.tooltips = OrderedDict([('Year', '@x'),('Total Weight', '@y0'), ('Muscle Mass', '$y1'), ('BodyFat','$y2')])

output_notebook()

p.line(x, y0, legend="Weight")
p.line(x, y1, legend="Muscle Mass", line_color="red")

show(p)  
Run Code Online (Sandbox Code Playgroud)

我已经使用Firefox 39.0,Chrome 43.0.2357.130(64位)和Safari 8.0.7进行了测试.我已经清除了缓存,并且在所有浏览器中都出现了相同的错误.我也做了pip install bokeh --upgrade以确保我运行的是最新版本.

python pandas ipython-notebook bokeh

4
推荐指数
1
解决办法
6124
查看次数

在熊猫数据框中解析/拆分 URL 的 Pythonic 方法

我有一个 df,在标有 url 的列中,对于不同的用户,它有数千个链接,如下所示:

https://www.google.com/something
https://mail.google.com/anohtersomething
https://calendar.google.com/somethingelse
https://www.amazon.com/yetanotherthing
Run Code Online (Sandbox Code Playgroud)

我有以下代码:

import urlparse

df['domain'] = ''
df['protocol'] = ''
df['domain'] = ''
df['path'] = ''
df['query'] = ''
df['fragment'] = ''
unique_urls = df.url.unique()
l = len(unique_urls)
i=0
for url in unique_urls:
    i+=1
    print "\r%d / %d" %(i, l),
    split = urlparse.urlsplit(url)
    row_index = df.url == url
    df.loc[row_index, 'protocol'] = split.scheme
    df.loc[row_index, 'domain'] = split.netloc
    df.loc[row_index, 'path'] = split.path
    df.loc[row_index, 'query'] = split.query
    df.loc[row_index, 'fragment'] = split.fragment
Run Code Online (Sandbox Code Playgroud)

该代码能够正确解析和拆分 url,但速度很慢,因为我正在迭代 df 的每一行。有没有更有效的方法来解析 URL?

python urlparse pandas

4
推荐指数
1
解决办法
5079
查看次数

在pandas数据帧中使用最大似然估计的自回归(AR)模型:correlate()得到了一个意外的关键字参数'旧行为'

我有一个pandas数据框的子集,其中包含我想使用statsmodel使用AR或ARIMA模型分析的时间序列:

data_sci = H_Clinton_social_vector.Florida
Run Code Online (Sandbox Code Playgroud)

数据如下所示:

Date
    2015-09-28     587
    2015-10-05     582
    2015-10-12     606
    2015-10-19     698
Run Code Online (Sandbox Code Playgroud)

我的AR模型是这样创建的,每周汇总时间序列:

ar_model = sm.tsa.AR(data_sci, freq='W')
ar_model
<statsmodels.tsa.ar_model.AR at 0x1178f5490>
Run Code Online (Sandbox Code Playgroud)

接下来,我想对AR参数进行最大似然估计(MLE)拟合,半年滞后:

ar_res = ar_model.fit(maxlag=26, method='mle')
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

correlate() got an unexpected keyword argument 'old behavior'
Run Code Online (Sandbox Code Playgroud)

由于correlate()参数,我不明白问题是什么,我认为这与数据的自动关联有关.我的数据中有很高的自相关性,所以这应该没问题.

数据集的自相关

我对stasmodels不太熟悉,并且喜欢从头开始编码AR或ARIMA模型.

python numpy time-series pandas statsmodels

4
推荐指数
1
解决办法
1052
查看次数

matplotlib radviz中的关键字参数

我试图理解可以在matplotlib radviz中使用的关键字参数.我使用着名的虹膜数据集,以及下面的简单代码:

import pandas as pd
plt.xkcd()
iris = pd.read_csv("iris.csv")
pd.tools.plotting.radviz(iris, "name")
Run Code Online (Sandbox Code Playgroud)

生成以下图表:radviz情节

如何设置尺寸(x,y)和图表标题?如何指定图例的位置?还有什么其他参数(如果有的话)可用于radviz?

非常感谢您的帮助.

matplotlib pandas

3
推荐指数
1
解决办法
1730
查看次数

将一个'now'时间戳列添加到pandas df中

我有以下代码:

s1 = pd.DataFrame(np.random.uniform(-1,1,size=10))
s2 = pd.DataFrame(np.random.normal(-1,1, size=10))
s3 = pd.concat([s1, s2], axis=1)
s3.columns = ['s1','s2']
Run Code Online (Sandbox Code Playgroud)

这会生成如下所示的DF:

    s1          s2
0   -0.841204   -1.857014
1    0.961539   -1.417853
2    0.382173   -1.332674
3   -0.535656   -2.226776
4   -0.854898   -0.644856
5   -0.538241   -2.178466
6   -0.761268   -0.662137
7    0.935139    0.475334
8   -0.622293   -0.612169
9    0.872111   -0.880220
Run Code Online (Sandbox Code Playgroud)

如何通过现在时间的时间戳添加列(或替换索引0-9)?np数组的大小不一定是10

python numpy pandas

3
推荐指数
1
解决办法
5934
查看次数

从JSON文件创建的pandas数据帧中的UnicodeDecodeError

我在iPython笔记本上运行了一段代码,下载了一个JSON文件,然后将内容解析为Pandas DF.但是,如果我尝试检查DF,那么我会收到编码错误.

output = r.json()
columns_map = {'/people/person/date_of_birth': 'birth_date',
              '/people/person/place_of_birth': 'birth_place',
              '/people/person/gender': 'gender'}
dF = pd.DataFrame(output['result'])
dF.rename(columns=columns_map, inplace=True)
dF.to_csv('file.csv',encoding='utf-8')
Run Code Online (Sandbox Code Playgroud)

我可以从DF创建一个没有任何问题的CSV,但如果我输入

dF
Run Code Online (Sandbox Code Playgroud)

要从iPython笔记本内部检查dF,我得到:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1894: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

python encoding json utf-8 ipython-notebook

3
推荐指数
1
解决办法
1787
查看次数

定义Matplotlib 3D条形图的颜色

我无法找到在我的iPython笔记本中为matplotlib中的3d条形图设置cmap(或颜色)的正确方法.我可以在X和Y平面上正确设置我的图表(28 x 7标签),并带有一些随机Z值.该图很难解释,一个原因是x_data标签[1,2,3,4,5]的默认颜色都是相同的.

这是代码:

%matplotlib inline
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as npfig = plt.figure(figsize=(18,12))

ax = fig.add_subplot(111, projection='3d')

x_data, y_data = np.meshgrid(np.arange(5),np.arange(3))
z_data = np.random.rand(3,5).flatten()

ax.bar3d(x_data.flatten(),
y_data.flatten(),np.zeros(len(z_data)),1,1,z_data,alpha=0.10)
Run Code Online (Sandbox Code Playgroud)

产生以下图表:

在此输入图像描述

我不想手动为标签x_data定义颜色.如何为x_data中的每个标签设置不同的"随机"cmap颜色,仍然保留

ax.bar3d

参数?以下是使用的变体

ax.bar

和不同的颜色,但我需要的是ax.bar3d. 在此输入图像描述

python 3d matplotlib mplot3d jupyter-notebook

3
推荐指数
1
解决办法
1940
查看次数

为什么打开终端窗口时显示-bash:PATH:命令未显示?

我安装了EPD Free 7.3.2,它运行正常,直到我想修改PATH指向我的Python脚本所在的位置.我放弃了它并恢复到我原来的.bash_profile文件.

# Setting PATH for EPD_free-7.3-2
# The orginal version is saved in .bash_profile.pysave
PATH = "/Library/Frameworks/Python.framework/Versions/Current/bin:${PATH}"
export PATH
Run Code Online (Sandbox Code Playgroud)

启动终端时,我得到了这个:

Last login: Thu Jan  3 08:50:20 on ttys000
-bash: PATH: command not found
Run Code Online (Sandbox Code Playgroud)

但是,我能够运行iPython以及EPD附带的所有lib没有问题.有人知道"PATH:命令未找到"的问题是什么?

osx-lion epd-python

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

我的JSON文件具有编码的数据而不是数组,我该如何更改?

我正在为我的游戏使用移相器,并且使用具有数据数组的JSON文件,游戏正在运行,但是当我导出我在Tiled上制作的自定义地图时,数据就像这样出来了:

"compression":"zlib",               "data":"eJxjYBgF9AZ5QJwPxAVUNLMOiOuBuIGKZvYBcT8QT6CimaNgFIyCUUBPAACmvgR4",
"encoding":"base64",
Run Code Online (Sandbox Code Playgroud)

我希望它就像这样:

"data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
Run Code Online (Sandbox Code Playgroud)

我不知道为什么它这样的导出,它是我使用的工作JSON文件和我所做的唯一不同的东西.

json tiled

0
推荐指数
1
解决办法
156
查看次数