Python 在数据帧上循环并生成摘要统计信息时出现问题
我有一个包含变量(t_seg_size)的数据帧,我想将该变量分为偶数段(例如0-1000000、1000001-2000000等),然后为每个段生成汇总统计信息 我使用的方法是以适当大小的块在数据帧上迭代,然后生成stats,例如.std() 代码如下: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())
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()