遍历数据框中的列 python
loop over columns in dataframes python
我想遍历特定数据框中的 2 列,我想通过列名访问数据,但它在第 3 行给我这个错误(类型错误)
i=0
for name,value in df.iteritems():
q1=df[name].quantile(0.25)
q3=df[name].quantile(0.75)
IQR=q3-q1
min=q1-1.5*IQR
max=q3+1.5*IQR
minout=df[df[name]<min]
maxout=df[df[name]>max]
new_df=df[(df[name]<max) & (df[name]>min)]
i+=1
if i==2:
break
类型错误可能有很多原因,所以如果您添加部分 DF 来尝试理解问题会更好。
还可以使用 iterrows()
函数循环遍历列:
import pandas as pd
df = pd.read_csv('filename.csv')
for _, content in df.iterrows():
print(content['columnname']) #add the name of the columns you want to loop over
参考以下link了解更多信息
您似乎想根据 1.5*IQR 规则排除异常值。这是一个更简单的解决方案:
输入虚拟数据:
import numpy as np
np.random.seed(0)
df = pd.DataFrame({'col%s' % (i+1): np.random.normal(size=1000)
for i in range(4)})
去除异常值(保留数据:Q1-1.5IQR < data < Q3+1.5IQR):
Q1 = df.iloc[:, :2].quantile(.25)
Q3 = df.iloc[:, :2].quantile(.75)
IQR = Q3-Q1
non_outliers = (df.iloc[:, :2] > Q1-1.5*IQR) & (df.iloc[:, :2] < Q3+1.5*IQR)
new_df = df[non_outliers.all(axis=1)]
输出:
我想遍历特定数据框中的 2 列,我想通过列名访问数据,但它在第 3 行给我这个错误(类型错误)
i=0
for name,value in df.iteritems():
q1=df[name].quantile(0.25)
q3=df[name].quantile(0.75)
IQR=q3-q1
min=q1-1.5*IQR
max=q3+1.5*IQR
minout=df[df[name]<min]
maxout=df[df[name]>max]
new_df=df[(df[name]<max) & (df[name]>min)]
i+=1
if i==2:
break
类型错误可能有很多原因,所以如果您添加部分 DF 来尝试理解问题会更好。
还可以使用 iterrows()
函数循环遍历列:
import pandas as pd
df = pd.read_csv('filename.csv')
for _, content in df.iterrows():
print(content['columnname']) #add the name of the columns you want to loop over
参考以下link了解更多信息
您似乎想根据 1.5*IQR 规则排除异常值。这是一个更简单的解决方案:
输入虚拟数据:
import numpy as np
np.random.seed(0)
df = pd.DataFrame({'col%s' % (i+1): np.random.normal(size=1000)
for i in range(4)})
去除异常值(保留数据:Q1-1.5IQR < data < Q3+1.5IQR):
Q1 = df.iloc[:, :2].quantile(.25)
Q3 = df.iloc[:, :2].quantile(.75)
IQR = Q3-Q1
non_outliers = (df.iloc[:, :2] > Q1-1.5*IQR) & (df.iloc[:, :2] < Q3+1.5*IQR)
new_df = df[non_outliers.all(axis=1)]
输出: