python可以构建sem模型_python-分组的熊猫DataFrames:如何将scipy.stats.sem应用于它们?...

我知道我可以通过执行以下操作来应用numpy方法:

dataList是DataFrames的列表(相同的列/行).

testDF = (concat(dataList, axis=1, keys=range(len(dataList)))

.swaplevel(0, 1, axis=1)

.sortlevel(axis=1)

.groupby(level=0, axis=1))

testDF.aggregate(numpy.mean)

testDF.aggregate(numpy.var)

等等.但是,如果我想计算均值(sem)的标准误差怎么办?

我试过了:

testDF.aggregate(scipy.stats.sem)

但它给出了一个令人困惑的错误.有人知道怎么做吗? scipy.stats方法有何不同之处?

这是一些为我重现错误的代码:

from scipy import stats as st

import pandas

import numpy as np

df_list = []

for ii in range(30):

df_list.append(pandas.DataFrame(np.random.rand(600, 10),

columns = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']))

testDF = (pandas.concat(df_list, axis=1, keys=range(len(df_list)))

.swaplevel(0, 1, axis=1)

.sortlevel(axis=1)

.groupby(level=0, axis=1))

testDF.aggregate(st.sem)

这是错误消息:

---------------------------------------------------------------------------

AssertionError Traceback (most recent call last)

in ()

12 .groupby(level=0, axis=1))

13

---> 14 testDF.aggregate(st.sem)

/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/pandas/core/groupby.py in aggregate(self, arg, *args, **kwargs)

1177 return self._python_agg_general(arg, *args, **kwargs)

1178 else:

-> 1179 result = self._aggregate_generic(arg, *args, **kwargs)

1180

1181 if not self.as_index:

/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/pandas/core/groupby.py in _aggregate_generic(self, func, *args, **kwargs)

1248 else:

1249 result = DataFrame(result, index=obj.index,

-> 1250 columns=result_index)

1251 else:

1252 result = DataFrame(result)

/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/pandas/core/frame.py in __init__(self, data, index, columns, dtype, copy)

300 mgr = self._init_mgr(data, index, columns, dtype=dtype, copy=copy)

301 elif isinstance(data, dict):

--> 302 mgr = self._init_dict(data, index, columns, dtype=dtype)

303 elif isinstance(data, ma.MaskedArray):

304 mask = ma.getmaskarray(data)

/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/pandas/core/frame.py in _init_dict(self, data, index, columns, dtype)

389

390 # consolidate for now

--> 391 mgr = BlockManager(blocks, axes)

392 return mgr.consolidate()

393

/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/pandas/core/internals.py in __init__(self, blocks, axes, do_integrity_check)

329

330 if do_integrity_check:

--> 331 self._verify_integrity()

332

333 def __nonzero__(self):

/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/pandas/core/internals.py in _verify_integrity(self)

404 mgr_shape = self.shape

405 for block in self.blocks:

--> 406 assert(block.values.shape[1:] == mgr_shape[1:])

407 tot_items = sum(len(x.items) for x in self.blocks)

408 assert(len(self.items) == tot_items)

AssertionError:

解决方法:

更新的答案:

看来我可以使用各种库的工作版本来复制它.稍后,我将检查我的家庭版本,以查看这些功能的文档是否有所不同.

在此期间,以下内容使用了您的确切编辑版本对我有用:

In [35]: testDF.aggregate(lambda x: st.sem(x, axis=None))

Out[35]:

Int64Index: 600 entries, 0 to 599

Data columns:

A 600 non-null values

B 600 non-null values

C 600 non-null values

D 600 non-null values

E 600 non-null values

F 600 non-null values

G 600 non-null values

H 600 non-null values

I 600 non-null values

J 600 non-null values

dtypes: float64(10)

这使我怀疑它与sem()轴约定有关.它的默认值为0,最终映射到的Pandas对象可能具有第0个怪异的轴或其他东西.当我使用选项axis = None时,它使应用了该对象的对象变得杂乱无章,这使它起作用.

就像进行健全性检查一样,我也这样做,它也起作用:

In [37]: testDF.aggregate(lambda x: st.sem(x, axis=1))

Out[37]:

Int64Index: 600 entries, 0 to 599

Data columns:

A 600 non-null values

B 600 non-null values

C 600 non-null values

D 600 non-null values

E 600 non-null values

F 600 non-null values

G 600 non-null values

H 600 non-null values

I 600 non-null values

J 600 non-null values

dtypes: float64(10)

但是您应该检查以确保这实际上是您想要的SEM值,可能是在一些较小的示例数据上.

较旧的答案:

这可能与scipy.stats的模块问题有关吗?当我使用该模块时,我必须从scipy import stats中将其称为st或类似名称. import scipy.stats不起作用,并调用import scipy; scipy.stats.sem给出错误,指出不存在名为“ stats”的模块.

熊猫似乎根本没有找到这种功能.我认为错误消息应该得到改善,因为这并不明显.

>>> from scipy import stats as st

>>> import pandas

>>> import numpy as np

>>> df_list = []

>>> for ii in range(10):

... df_list.append(pandas.DataFrame(np.random.rand(10,3),

... columns = ['A', 'B', 'C']))

...

>>> df_list

# Suppressed the output cause it was big.

>>> testDF = (pandas.concat(df_list, axis=1, keys=range(len(df_list)))

... .swaplevel(0, 1, axis=1)

... .sortlevel(axis=1)

... .groupby(level=0, axis=1))

>>> testDF

>>> testDF.aggregate(np.mean)

key_0 A B C

0 0.660324 0.408377 0.374681

1 0.459768 0.345093 0.432542

2 0.498985 0.443794 0.524327

3 0.605572 0.563768 0.558702

4 0.561849 0.488395 0.592399

5 0.466505 0.433560 0.408804

6 0.561591 0.630218 0.543970

7 0.423443 0.413819 0.486188

8 0.514279 0.479214 0.534309

9 0.479820 0.506666 0.449543

>>> testDF.aggregate(np.var)

key_0 A B C

0 0.093908 0.095746 0.055405

1 0.075834 0.077010 0.053406

2 0.094680 0.092272 0.095552

3 0.105740 0.126101 0.099316

4 0.087073 0.087461 0.111522

5 0.105696 0.110915 0.096959

6 0.082860 0.026521 0.075242

7 0.100512 0.051899 0.060778

8 0.105198 0.100027 0.097651

9 0.082184 0.060460 0.121344

>>> testDF.aggregate(st.sem)

A B C

0 0.089278 0.087590 0.095891

1 0.088552 0.081365 0.098071

2 0.087968 0.116361 0.076837

3 0.110369 0.087563 0.096460

4 0.101328 0.111676 0.046567

5 0.085044 0.099631 0.091284

6 0.113337 0.076880 0.097620

7 0.087243 0.087664 0.118925

8 0.080569 0.068447 0.106481

9 0.110658 0.071082 0.084928

似乎为我工作.

标签:pandas,scipy,statistics,python,numpy

来源: https://codeday.me/bug/20191201/2078362.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526446.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java类中获取全局变量_java 通过反射获取类的全局变量、方法、构造方法

package com.str;public class ZiFuChuan {public static String ss "全局变量!!!!!!";String s2 null;public int aa 1 ;int aa2;double dou 1.1;Double d new Double(1.1);public static void main(String[] args) {}public ZiFuChuan(){}public ZiFuChuan(St…

java phantomjs 截图_phantomjs 截图

phantomjs 截图,多个setTimeout是为了让页面尽量加载完整/**截图test.js**/var page require(webpage).create();page.viewportSize { width: 1024, height: 600 };page.open(http://www.2345.com/, function(status) {var bb page.evaluate(function(){// window…

JAVA如何隐藏异常堆栈_java – 如何在控制台上停止打印异常堆栈跟踪?

这是我做的这样的战争作为工作。添加一个过滤器并劫持所有的请求和响应。检查异常并检查类型。/*** Hijacks all the http request and response here.* Catch the SocketException and do not print* If other exceptions print to console* date : 9-18-2013** author Suresh…

阿里最新php面试题及答案,面经网-阿里php面试题(四)

阿里php面试题(四)1.表单中 get与post提交方法的区别?答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息.2.session与cookie的区别?答:session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_…

php 条形码生成器,PHP条形码图像生成器

这是一个用于生成barocdes的简单PHP脚本://For displaying barcodes//Arguments are:// code Number you want outputted as a barcode//You can use this script in two ways:// From a webpage/PHP script // Directly in your web browser http://www.example.co…

php怎么把日期加时间,将小时分钟添加到日期时间 - php

任何人都可以帮助我解决长时间困扰的问题,我正在尝试添加时间,例如格式为h:ia的小时和分钟,格式为01:00(一个小时),00:30(30分钟), 02:00(两个小时)等。在php中。因为我有几个小时,例如(00:30,01:00,01:30,…

php keep user login,php5.4安装dedecms登录后台空白解决办法(session_register函数已废弃)...

本地安装dedecms5.7登录后台空白,找了原因,原来是session_register函数已经被php5.4废弃的原因。-------------------------------------------------------------解决方法:找开include/userlogin.class.php文件,查找以下内容&…

java欧冠抽签,欧冠抽签吐槽:最大的“礼包”被C罗拿走!梅西出局概率超50%?...

欧冠16强抽签揭晓,结果:多特VS巴黎,皇马VS曼城,亚特兰大VS瓦伦西亚,马竞VS利物浦,切尔西VS拜仁,里昂VS尤文图斯,热刺VS莱比锡,那不勒斯VS巴萨。怎么评价这样的抽签呢&…

java ajax报错500,(Struts2+JSON+Ajax) XMLHttpRequest ==500如何解决

(Struts2JSONAjax) XMLHttpRequest 500怎么解决?本帖最后由 zjlisok 于 2013-01-29 02:00:05 编辑XMLHttpRequest.status500奇怪了,搞了半天还没有解决。朋友们请帮我一把,谢谢!废话不说,先上代码JS代码:va…

PHP的rm指令,git rm 命令

git rm 命令git rm 命令用于删除文件。如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 Changes not staged for commit 的提示。git rm 删除文件有以下几种形式:1、将文件从暂存区和工作区中删除:git rm 以下实例从暂存区…

jAvA中deprecate,在Java中使用Deprecated方法或类是错误的吗?

1.在Java中使用Deprecated方法或类是错误的吗?从已弃用的定义 :注释Deprecated的程序元素是程序员不鼓励使用的程序元素,通常是因为它是危险的,或者是因为存在更好的select。该方法被保存在API中,用于在未指定的时间段…

java运算符试题,编程语⾔⾯试题之新版javase基础语法篇之运算符

简介:⾯试中 短路运算符 和 位运算考点:计算机基础运算知识难度【** *】你知道 运算符 &和&&、|和||的区别吗?& 按位与操作只有对应的两个⼆进制数为1时,结果位才为11&1 11&0 00&1 00&0 0| 按…

matlab 流固耦合,详讲流固耦合

引言近来,航空航天工业在世界上发展迅速,而作为“飞机心脏”的航空发动机是限制其发展的主要因素。目前,航空发动机日益向高负荷、高效率和高可靠性的趋势发展,高负荷导致的高逆压力梯度容易引起流动分离,同时随着科技…

php加大session,PHP :: Bug #63251 :: yaf session功能增强

[2012-10-10 06:34 UTC] vipcenter at vip dot qq dot comDescription:------------一:建议增加:设置和获取session_id的方法!如:Session::getInstance()->id(qtvv60cui9c22qlk2fqr0na1d1);如果不传参则返回当前使用的session_id二&#x…

php提示是否运行,php运行错误提示

第一种方法在php.ini文件里改变display_errors和error_reporting的值,没有的直接加上。; 第一处修改; display_errors Offdisplay_errors On; 第二处修改; error_reporting E_ALL & ~E_DEPRECATED & ~E_STRICTerror_reporting E_ALL | E_STRICTdisplay_…

php stream encoding,PHP之mb_check_encoding使用方法分享

本文主要和大家分享mb_check_encoding使用方法,希望能帮助到大家。mb_check_encoding(PHP 4 > 4.4.3, PHP 5 > 5.1.3, PHP 7)mb_check_encoding — Check if the string is valid for the specified encodingmb_check_encoding — 检查字符串在指定的编码里是…

usb转ttl模块与matlab,图文详解USB转TTL设备与电路板的连接

描述USB转TTL的硬件设备:USB转TTL主机一台;芯片选用PL-2303HXUSB转TTL刷机线,采用进口PL2303HX芯片。连接上电脑并安装驱动后,电脑即扩展出一个COM3或COM4....等的串口,配合相应软件就能对路由器、机顶盒或接收机等各种TTL接口的设备系统进行…

php乱码调试,NotePad++ 调试PHP代码中文显示乱码

最近在NotePad上调试PHP代码,按照示例代码进行调试,结果在显示中文的时候显示一堆乱码,于是上网百度,有2种方法可以解决:按调试方式有2种方法:1、菜单插件-NppExec:“插件”-“NppExec”-"Console Out…

php怎么设置网站的字符编码,php如何设置字符编码

php如何设置字符编码?a. 如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/html; charsetgb2312"),静态页面添加,所有文件的编码格式为ANSI,可用记事本打开,另存为选择编…

oracle em 删除 重建,Oracle 11g 重建EM需要删除的对象

因为需求需要重建EM,重建时因为某些错误被迫停止,比如对象已存在、用户已经存在等,最终找出了创建必备的条件;1.环境变量(Oracle和Grid在同一个用户下安装):ORACLE_HOME 要设为DB路径;ORACLE_UNQNAME 要设置;2.删除em相关的同义词:select drop public synonym ||syn…