如何打印CSV文件中某列中大于X的值。?

2024-10-08 19:20:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图获取Csv文件的一列,并试图打印出任何大于标准偏差x3的数字

import pandas as pd 
df = pd.read_csv('/Users/aaronhuang/Desktop/ffp/exfileDATA.csv', usecols=[1], header=0)
stand = round(df.std(), 2)
print(df)
conf = stand * 3
print(round(conf, 2))
for rogue in df:
if df <= conf:
    print(df) 

运行时,会显示:

 Magnitude 
0         19.472
1         19.445
2         19.484
3         19.157
4         19.376
...          ...
6096      19.063
6097      19.178
6098      19.386
6099      19.092
6100      19.191

[6101 rows x 1 columns]
Magnitude     0.42
dtype: float64
Traceback (most recent call last):
  File "/Users/aaronhuang/PycharmProjects/EXTTEst/Code sandbox.py", line 12, in <module>
    if df <= conf:
  File "/Users/aaronhuang/.conda/envs/EXTTEst/lib/python3.8/site- 
packages/pandas/core/generic.py", line 1478, in __nonzero__
    raise ValueError(
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), 
a.any() or a.all().

Process finished with exit code 1

如何解决这个问题? 谢谢


Tags: csvinpandasdfifconfusersfile
2条回答

为数据帧分配z分数,检查将轻而易举

df['zscore'] = (df['Magnitude'] - df['Magnitude'].mean())/df['Magnitude'].std(ddof=0)


df_outliers=df[df['zscore']>3]
for rogue in df_outliers:
    print(rogue) 

或者简单地说:

df_outliers

您缺少两个步骤和最后一个细节:

  1. 您希望使用pd.Series而不是pd.DataFrame进行<= conf计算。这就是您得到的特定错误的来源。假设您使用的列名为‘Magnitude’,那么计算结果应该是df[‘Magnitude’] <= conf’
  2. 该计算不会返回经过筛选的数据帧。相反,它返回一个布尔值pd.Series—一列数据,其中列中的每个元素都是TrueFalse,具体取决于’Magnitude’中的元素在<= conf表达式中的求值方式。但是,我们可以使用这个布尔序列作为索引器来实际过滤数据帧,通过在数据帧索引器语法中放置宝贵的表达式来获得我们想要的结果:`df[df['magnity']<;=conf]'
  3. 最后,要打印过滤后的数据,只需将其全部放在print()命令中即可。最后形式:
print(df[df[‘Magnitude’] <= conf])

相关问题 更多 >

    热门问题