私はPythonの初心者です。私は自分の問題を調査しましたが、正確な要件を見つけることができませんでした。Pythonを使用して複数のcsvファイルの各列の平均を取る
実験的測定ごとに複数のファイルが採点されているフォルダがあります。彼らの名前は傾向に従う。 XY0001.csv
,XY0002.csv
... XY0040.csv
。私はこれらのファイルをすべて読み込み、すべてのファイルの各列の平均を取って、同じ形式で 'result.csv'に格納します。
私はPythonの初心者です。私は自分の問題を調査しましたが、正確な要件を見つけることができませんでした。Pythonを使用して複数のcsvファイルの各列の平均を取る
実験的測定ごとに複数のファイルが採点されているフォルダがあります。彼らの名前は傾向に従う。 XY0001.csv
,XY0002.csv
... XY0040.csv
。私はこれらのファイルをすべて読み込み、すべてのファイルの各列の平均を取って、同じ形式で 'result.csv'に格納します。
パンダ(import pandas as pd
)を使用することをお勧めします。私はpd.read_csv()を使ってファイルを読むことから始めることを提案します。ファイルの読み方は、CSVファイルの形式によりますが、ここからは分かりません。ディレクトリ内のすべてのファイル(この問題の最も簡単な解決方法)を読みたい場合は、read all filesを使用してみてください。
次に、pd.concat()を使用してすべてのファイルを連結できます。最後に、生成するメトリックを計算できます(検索機能を使用して、各メトリックを計算する方法を見つけることができます)。あなたのために多くのことをする素敵な機能は、describe functionです。
以下はglob
モジュールを使用して、X*.csv
の形式の現在のフォルダ内のすべてのファイルのリスト、つまりx
で始まるすべてのCSVファイルのリストを取得します。見つかったファイルごとに、最初にヘッダー行をスキップし(オプション)、zip()
トリックを使用して残りの行をすべてロードして、列のリストに行のリストを転置します。
各列について、各セルを整数に変換して値を合計し、この合計を検出された要素の数で割って各列の平均を求めます。次のように
Col1,Col2,Col3
6,1,10
2,1,20
5,2,30
result.csv
が書き込まれます:あなたは含むXY0001.csv
を持っていたのであれば
import glob
import csv
with open('result.csv', 'w', newline='') as f_output:
csv_output = csv.writer(f_output)
for filename in glob.glob('X*.csv'):
print (filename)
with open(filename, newline='') as f_input:
csv_input = csv.reader(f_input)
header = next(csv_input)
averages = []
for col in zip(*csv_input):
averages.append(sum(int(x) for x in col)/len(col))
csv_output.writerow([filename] + averages)
:それから、フォーマットfilename, av_col1, av_col2
などで、あなたの出力result.csv
に値を書き込み
XY0001.csv,4.333333333333333,1.3333333333333333,20.0
Python 3.5.2を使用してテスト済み
複数のファイルにアクセスするには、glob
モジュールを使用できます。
import glob
path =r'/home/root/csv_directory'
filenames = glob.glob(path + "/*.csv")
Pythonのpandas
モジュールは、CSVファイルを解析する方法があります。また、csvファイルを管理および処理するオプションもあります。
import pandas as pd
dfs = []
for filename in filenames:
dfs.append(pd.read_csv(filename))
.read_csv()
parse csvファイルには、メソッドが使用されます。 1つのデータフレーム及び処理のために容易にすべてのデータを連結するために使用
pd.concat(dfs, ignore_index=True)
.concat()
。
[複数のcsvファイルをパンダにインポートして1つのDataFrameに連結]可能な複製(http://stackoverflow.com/questions/20906474/import-multiple-csv-files-into-pandas-and-concatenate-into- 1つのデータフレーム) – Guido