Python 如何标记10个csv文件中的异常值/异常,并将标记的数据帧导出到1个xlsx文件(共10张图纸)
我想做以下工作:Python 如何标记10个csv文件中的异常值/异常,并将标记的数据帧导出到1个xlsx文件(共10张图纸),python,excel,pandas,csv,Python,Excel,Pandas,Csv,我想做以下工作: 标记文件夹中10个.csv文件中的异常(所有10个文件都具有相同的列名a-J) 使用10张将标记的数据帧导出到1.xlsx(将10个标记的df附加到1个xlsx文件) 注:此处的异常定义为每行低于1500且高于100000的任何值 要一次标记一个文件,代码如下所示: import pandas as pd # intialise data of lists data = {'A':['R1', 'R2', 'R3', 'R4', 'R5'], 'B'
.csv
文件中的异常(所有10个文件都具有相同的列名a-J)
10张
将标记的数据帧导出到1.xlsx
(将10个标记的df附加到1个xlsx文件)
1500
且高于100000
的任何值
要一次标记一个文件,代码如下所示:
import pandas as pd
# intialise data of lists
data = {'A':['R1', 'R2', 'R3', 'R4', 'R5'],
'B':[12005, 18190, 1021, 13301, 31119],
'C':[11021, 19112, 19021,15, 24509 ],
'D':[10022,19910, 19113,449999, 25519],
'E':[14029, 29100, 39022, 24509, 412271],
'F':[52119,32991,52883,69359,57835],
'G':[41218, 52991,1021,69152,79355],
'H': [43211,7672991,56881,211,77342],
'J': [31211,42901,53818,62158,69325],
}
# Create DataFrame
df = pd.DataFrame(data)
# Print the output.
df.describe()
## flagging anomalies in each row
def flag_outliers(s):
# force to numeric and coerce string to NaN
s = pd.to_numeric(s, errors='coerce')
indexes = (s<1500)|(s>1000000)
return ['background-color: red' if v else '' for v in indexes]
styled = df.style.apply(flag_outliers, axis=1)
styled.to_excel("flagged_outliers.xlsx", index=False)
将熊猫作为pd导入
#将列表的数据初始化
数据={'A':['R1','R2','R3','R4','R5'],
“B”:[1200518190102113301119],
‘C’:[1102119112119021,1524509],
‘D’:[1002219901911344999925519],
"E:[14029291003902224509412271],,
‘F’:[5211932991528836935957835],
‘G’:[412185299110216915279355],
‘H’:[4321176729915688121177342],
‘J’:[312142901538186215869325],
}
#创建数据帧
df=pd.DataFrame(数据)
#打印输出。
df.descripe()
##标记每行中的异常
def标志_异常值:
#强制为数字并强制字符串为NaN
s=pd.to_numeric(s,errors='concurve')
索引=(s1000000)
返回['background-color:red'if v else''表示索引中的v]
styled=df.style.apply(标记异常值,轴=1)
styled.to_excel(“标记的_异常值.xlsx”,索引=False)
标记数据帧的示例如下所示:
import pandas as pd
# intialise data of lists
data = {'A':['R1', 'R2', 'R3', 'R4', 'R5'],
'B':[12005, 18190, 1021, 13301, 31119],
'C':[11021, 19112, 19021,15, 24509 ],
'D':[10022,19910, 19113,449999, 25519],
'E':[14029, 29100, 39022, 24509, 412271],
'F':[52119,32991,52883,69359,57835],
'G':[41218, 52991,1021,69152,79355],
'H': [43211,7672991,56881,211,77342],
'J': [31211,42901,53818,62158,69325],
}
# Create DataFrame
df = pd.DataFrame(data)
# Print the output.
df.describe()
## flagging anomalies in each row
def flag_outliers(s):
# force to numeric and coerce string to NaN
s = pd.to_numeric(s, errors='coerce')
indexes = (s<1500)|(s>1000000)
return ['background-color: red' if v else '' for v in indexes]
styled = df.style.apply(flag_outliers, axis=1)
styled.to_excel("flagged_outliers.xlsx", index=False)
提前感谢我想你可以在这里使用一个循环来获取读取csv文件并应用样式,然后在每个工作表中另存为excel,注意我使用了相同的路径来读取csv并保存输出excel,你可以通过定义路径2并在
writer=…
变量中使用它来更改输出路径:
path = "full\\path\\to_folder\\"
import glob
import os
files = glob.glob(path+"\*.csv")
writer = pd.ExcelWriter(os.path.join(path,"combined.xlsx"), engine = 'xlsxwriter')
for file in files:
dataframe = pd.read_csv(file)
(dataframe.style.apply(flag_outliers, axis=1)
.to_excel(writer, sheet_name = os.path.split(file)[-1][:-4],index=False))
writer.save()
这将使用csv文件名保存每个工作表中的数据帧