Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在数据帧上循环并生成摘要统计信息时出现问题_Python_For Loop_Pandas_Range_Dataframe - Fatal编程技术网

Python 在数据帧上循环并生成摘要统计信息时出现问题

Python 在数据帧上循环并生成摘要统计信息时出现问题,python,for-loop,pandas,range,dataframe,Python,For Loop,Pandas,Range,Dataframe,我有一个包含变量(t_seg_size)的数据帧,我想将该变量分为偶数段(例如0-1000000、1000001-2000000等),然后为每个段生成汇总统计信息 我使用的方法是以适当大小的块在数据帧上迭代,然后生成stats,例如.std() 代码如下: for x in range (1000000, 200000000, 1000000): print(df3[(x-999999 < df3["t_seg_size"] < x)].t_seg_size.std())

我有一个包含变量(t_seg_size)的数据帧,我想将该变量分为偶数段(例如0-1000000、1000001-2000000等),然后为每个段生成汇总统计信息

我使用的方法是以适当大小的块在数据帧上迭代,然后生成stats,例如.std()

代码如下:

for x in range (1000000, 200000000, 1000000):
    print(df3[(x-999999 < df3["t_seg_size"] < x)].t_seg_size.std())
范围(1000000、200000000、1000000)内x的
:
打印(df3[(x-999999

因此,循环应该查找介于(1)和(1000000)之间的t_seg_大小,并生成标准偏差。但是,我收到以下错误:


ValueError回溯(最近一次调用)
在()
2#df3[df3[“t#U seg#U size”]>2000000]。描述()
范围(1000000、200000000、1000000)内的x为3:
---->4打印(df3[(1000000698.格式(自身名称)
699
700 uuu bool uuuu=uuuuu非零__
ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。


非常感谢您的帮助。

因此,这一行中的错误:

print(df3[(x-999999 < df3["t_seg_size"] < x)].t_seg_size.std())
由于运算符的优先级,需要使用括号

老实说,在我看来,你所做的一切都很正常,不确定你想将统计数据存储在哪里,但你可以将其添加到一个列表中,从中创建一个系列/df并绘制它:

stats={'range':[], 'std':[]}
for x in range (1000000, 200000000, 1000000):
    print(df3[(df3["t_seg_size"] >= x-999999) & (df3["t_seg_size"] < x)].t_seg_size.std())
    stats['range'].append(x)
    stats['std'].append(df3[(df3["t_seg_size"] >= x-999999) & (df3["t_seg_size"] < x)].t_seg_size.std())
stats={'range':[],'std':[]
对于范围内的x(1000000、200000000、1000000):
打印(df3[(df3[“t_seg_size”]>=x-999999)和(df3[“t_seg_size”]=x-999999)和(df3[“t_seg_size”]

您应该能够使用pd.DataFrame(stats.plot()
来绘制此图,您的问题看起来非常类似于。
尝试一下应该可以解决这个问题

for x in range (1000000, 200000000, 1000000):
    print(df3[logical_and(df3["t_seg_size"] > x-999999, df3["t_seg_size"] < x)].t_seg_size.std())
范围(1000000、200000000、1000000)内x的
:
打印(df3[logical_and(df3[“t_seg_size”]>x-999999,df3[“t_seg_size”]
这里有一个建议,使用
groupby
可以大大加快速度:

 grouped = df.groupby((df.t_seg_size / 1000000).round())
 grouped.t_seg_size.std()
这将在很短的时间内为数据帧中的每个段提供标准偏差。另一个优点是,一旦分组完成,您可以在
grouped
上调用许多其他函数,例如mean、median等。
您可以通过调用
.plot
轻松绘制结果

您需要
打印(df3[(df3[“t_seg_size”]>=x-999999)和(df3[“t_seg_size”]
错误突出显示了将标量与数组进行比较是不明确的事实,因此,要与数组进行比较,您应该分别对
使用位运算符
&
,此外,由于运算符的原因,条件需要括号precedence@EdChum非常感谢你再次帮助我解决我的问题。如果您有时间,最好知道是否有其他方法来处理此特定任务,即根据特定范围拆分数据帧并生成统计数据+我还想将摘要统计数据绘制为图形工具,但是我得到了
stats={'range'=[],'std'=[]}
语法错误:无效语法
对不起,应该是
而不是
=
值[0]
也是不必要的
for x in range (1000000, 200000000, 1000000):
    print(df3[logical_and(df3["t_seg_size"] > x-999999, df3["t_seg_size"] < x)].t_seg_size.std())
 grouped = df.groupby((df.t_seg_size / 1000000).round())
 grouped.t_seg_size.std()