glob.glob
.subprocess.Popen
ausimport os
dir = [d for d in os.listdir(".") if os.path.isdir(d)]
Windows
import glob
dir = glob.glob(os.path.join("*",""))
Mac
dir = glob.glob("*/")
Beispiel für die Suche nach Ordnern case01, case02, ...
dir = glob.glob(os.path.join("case*",""))
Wenn Sie nur die Textdatei (.txt) erhalten möchten.
dir = glob.glob("*.txt")
import shutil
import subprocess
for f in dir:
# copy files from local folder to target folder
cp_files=["Addup_win.py","y.input"]
for fi in cp_files:
shutil.copy(fi,f)
# remove files at target folder
rm_files=['y.out','out.tsv']
for fi in rm_files:
if os.path.exists(os.path.join(f,fi)):
os.remove(os.path.join(f,fi))
subprocess.Popen(["python","Addup_win.py"],cwd=f)
Die Daten haben das Registerkartenformat (.tsv), wobei Indexspalten und Datenspalten von links angenommen werden.
Das Lesen von Daten kann durch Versuch erfolgen, da das obige Verarbeitungsprogramm möglicherweise fehlschlägt. Der Fehlerordner muss ausgegeben werden. Es ist praktisch, den Index vorzubereiten, indem Sie ihn später anhand des Ordnernamens verarbeiten.
import pandas as pd
dfs=pd.DataFrame()
for f in dir:
# case01\\ => case01
index_name = os.path.split(f)[0]
# Error handle
try:
# Data structure {col.0 : index, col.1 : Data}
df = pd.read_csv(os.path.join(f,"out.tsv"),sep='\t',header=None,index_col=0)
dfs[index_name]=df.iloc[:,0]
except:
print("Error in {0}".foramt(index_name))
# make index
dfs.index = df.index
Lassen Sie uns die Daten überprüfen. (Warum gibt es eine "0" -Zeile, aber es ist mir egal, weil sie später verschwindet)
dfs.head()
Erstens ist die Handhabung durch Vertauschen der Zeilen und Spalten einfacher.
dfsT = dfs.T
Erstens die Verarbeitung fehlender Daten (NaN).
dfsT = dfsT.dropna()
Passend von hier.
Verwenden Sie beispielsweise einen ausgefallenen Index, um bedingte Daten zu verarbeiten. (Hier ein Beispiel, in dem die WSA / L2-Spalte Daten von 0,2 oder mehr ausgibt.)
dfsT_select = dfsT[dfsT["WSA/L2"] > 0.2]
import matplotlib.pyplot as plt
plt.bar(range(len(dfsT)),dfsT["WSA/L2"], \
tick_label=dfsT.index)
plt.show()
Einstellung der horizontalen Achse
fig, ax = plt.subplots()
ax.bar(range(len(dfsT)),dfsT["WSA/L2"], \
tick_label=dfsT.index)
labels = ax.get_xticklabels()
plt.setp(labels, rotation=45, fontsize=10);
Viele Leute bitten mich, Excel für die Daten zu verwenden, deshalb gebe ich es Ihnen.
dfs.to_excel("addup.xlsx")
Wenn das Textformat akzeptabel ist, zum Beispiel:
dfs.to_csv("addup.tsv",sep='\t')
Recommended Posts