我想删除数据框中的所有行.
我想这样做的原因是我可以用迭代循环重建数据帧.我想从一个完全空的数据帧开始.
或者,如果可能的话,我可以仅从列/类型信息创建一个空df
我正在运行如下的回归(df是一个pandas数据帧):
import statsmodels.api as sm
est = sm.OLS(df['p'], df[['e', 'varA', 'meanM', 'varM', 'covAM']]).fit()
est.summary()
Run Code Online (Sandbox Code Playgroud)
除其他外,这给了我一个R平方0.942.那么我想绘制原始y-values值和拟合值.为此,我对原始值进行了排序:
orig = df['p'].values
fitted = est.fittedvalues.values
args = np.argsort(orig)
import matplotlib.pyplot as plt
plt.plot(orig[args], 'bo')
plt.plot(orig[args]-resid[args], 'ro')
plt.show()
Run Code Online (Sandbox Code Playgroud)
然而,这给了我一个图表,其中值完全关闭.什么都没有表明R平方0.9.因此,我试图自己手动计算:
yBar = df['p'].mean()
SSTot = df['p'].apply(lambda x: (x-yBar)**2).sum()
SSReg = ((est.fittedvalues - yBar)**2).sum()
1 - SSReg/SSTot
Out[79]: 0.2618159806908984
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?或者,为什么我的计算与statsmodels得到的结果相差甚远?SSTot,SSReg有价值48084,35495.
我正在尝试使用statsmodels(sm)使HP过滤器工作.
这里的文档暗示模块sm.tsa已经存在0.6.1,但是我收到以下错误:
>>> import statsmodels as sm
>>> sm.__version__
'0.6.1'
>>> sm.tsa.filters.hp_filter.hpfilter()
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: 'module' object has no attribute 'tsa'
>>> sm.tsa
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: 'module' object has no attribute 'tsa'
Run Code Online (Sandbox Code Playgroud)
这是我的pip输出:
nat-oitwireless-inside-vapornet100-a-14423:prog2 foobar$ pip show statsmodels
---
Name: statsmodels
Version: 0.6.1
Location: /usr/local/lib/python2.7/site-packages/statsmodels-0.6.1-py2.7-macosx-10.9-x86_64.egg
Requires:
Run Code Online (Sandbox Code Playgroud) 我有一个大的多索引多列数据框df,我没有在这里显示.我生成一个像这样的索引片:
subDf = df.sort_index(level=0).loc[:'e']
Run Code Online (Sandbox Code Playgroud)
然后该片包含NaN在索引的第二级:
>>> subDf.iloc[0:1]
change
robustness value
baseline NaN -14.5
Run Code Online (Sandbox Code Playgroud)
生成的csv to_csv()似乎是正确的:
>>> subDf.iloc[0:1].to_csv()
Out[15]: 'robustness,value,change\nbaseline,,-14.5\n'
Run Code Online (Sandbox Code Playgroud)
同样,to_html()功能就像被开除一样.但是,当我尝试获取latex_output时,NaN消失并50.00出现:
>>> subDf.iloc[0:1].to_latex()
Out[14]: u'\\begin{tabular}{llr}\n\\toprule\n & & change \\\\\nrobustness & value & \\\\\n\\midrule\nbaseline & 50.00 & -14.5 \\\\\n\\bottomrule\n\\end{tabular}\n'
Run Code Online (Sandbox Code Playgroud)
的50.00是不完全任意数,它是在原始数据帧中的多指数的第二层的最后一个值:
>>> df.index
Out[18]:
MultiIndex(levels=[[u'a', u'b', u'c', u'd', u'e', u'baseline', u'f'], [0.01, 0.04, 0.25, 0.75, 0.86, 0.99, 1.0, 2.0, 4.0, 10.0, 50.0]],
labels=[[5, 6, 6, 2, 2, 1, 3, 3, …Run Code Online (Sandbox Code Playgroud) 我已经安装了基本的os和Pycharm以及整个python堆栈conda,现在有麻烦在ipythonsesssion中启动交互式matplotlib .
这是pycharm的ipython会话:
/home/foo/.conda/envs/myenv3/bin/python3.5 /opt/pycharm-2016.2.3/helpers/pydev/pydevconsole.py 41070 33134
Python 3.5.2 |Continuum Analytics, Inc.| (default, Jul 2 2016, 17:53:06)
Type "copyright", "credits" or "license" for more information.
IPython 5.0.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
PyDev console: using IPython 5.0.0
import sys; print('Python %s on %s' % (sys.version, sys.platform))
Python 3.5.2 …Run Code Online (Sandbox Code Playgroud) 如果我有d尺寸np.array,我怎样才能得到边界的标记?
例如,在2d,
test = np.arange(16).reshape((4, 4))
test
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
Run Code Online (Sandbox Code Playgroud)
现在我想获得界限
array([[ True, True, True, True],
[ True, False, False, True],
[ True, False, False, True],
[ True, True, True, True]])
Run Code Online (Sandbox Code Playgroud)
如果效率很高并适用于任意数量的维度,但它必须至少工作3.数组不一定是超立方体,但可能是超立方体:所有维度中的网格点数量不一定相同,不同于这个例子.
对于形状数组(4, 5, 6),预期输出为
array([[[ True, True, True, True, True, True],
[ True, True, True, True, True, True],
[ True, True, True, True, True, True],
[ True, …Run Code Online (Sandbox Code Playgroud) 我有一个奇怪的数据集:
year firms age survival
0 1977 564918 0 NaN
2 1978 503991 0 NaN
3 1978 413130 1 0.731310
5 1979 497805 0 NaN
6 1979 390352 1 0.774522
Run Code Online (Sandbox Code Playgroud)
我将dtype前三列的整数转换为整数:
>>> df.dtypes
year int64
firms int64
age int64
survival float64
Run Code Online (Sandbox Code Playgroud)
但现在我想在这里根据索引搜索另一个表:
idx = 331
otherDf.loc[df.loc[idx, 'age']]
Traceback (most recent call last):
(...)
KeyError: 8.0
Run Code Online (Sandbox Code Playgroud)
这来自
df.loc[idx, 'age']
8.0
Run Code Online (Sandbox Code Playgroud)
为什么这会继续返回浮点值?我怎样才能执行查找otherDf?我是熊猫版0.15.
我无法理解创建对数正态变量的基础知识,如此处所述.
对数正态分布采用均值和方差作为参数.我想使用这些参数创建一个冻结分布,然后得到cdf,pdf等.
但是,在文档中,他们使用了冻结分发
from scipy.stats import lognorm
s = 0.953682269606
rv = lognorm(s)
Run Code Online (Sandbox Code Playgroud)
's'似乎是标准偏差.我尝试使用'loc'和'scale'参数而不是's',但这会产生错误(s是必需参数).如何为位置和比例生成参数值为"m","s"的冻结分布?
说我有这样的数组
>>> a = np.arange(1,8).reshape((1,-1))
>>> a
array([[1, 2, 3, 4, 5, 6, 7]])
Run Code Online (Sandbox Code Playgroud)
并且我想为每个项目创建a一个"下4个项目的cumsum".也就是说,我的预期输出是
1, 2, 3, 4, 5, 6, 7, 8
1+2, 2+3, ...
1+2+3 2+3+4 ...
1+2+3+4 2+3+4+5 ...
Run Code Online (Sandbox Code Playgroud)
即包含的矩阵
1, 2, 3, 4, 5, 0, 0, 0
3, 5, 7, 9, 11,0, 0, 0
6, 9, 12,15,18,0, 0, 0
10,14,18,21,26,0, 0, 0
Run Code Online (Sandbox Code Playgroud)
由于最后3个项目的cumsum操作无法正确完成,我期待0那里.我知道如何做一个单一的cumsum.实际上,阵列是
a[:4].cumsum().reshape((-1,1)); a[1:5].cumsum().reshape((-1,1))...
Run Code Online (Sandbox Code Playgroud)
水平堆放.但是,我不知道如何以有效的方式做到这一点.这样做的好的矢量化numpy方式是什么?我也对scipy包装开放,只要它们numpy在效率或可读性方面占主导地位.
我是第一次设置多处理模块,基本上,我打算做一些类似的事情
from multiprocessing import pool
pool = Pool(processes=102)
results = pool.map(whateverFunction, myIterable)
print 1
Run Code Online (Sandbox Code Playgroud)
据我所知,1将在所有过程都返回并且结果完成后立即打印。我想对这些进行一些状态更新。实现它的最佳方法是什么?
我有点犹豫要不要whateverFunction()打印。特别是如果有大约 200 个值,我将打印 200 次类似 'process done' 这样的东西,这不是很有用。
我希望输出像
10% of myIterable done
20% of myIterable done
Run Code Online (Sandbox Code Playgroud)