Engineerの研鑽

メインはプログラミング系ブログ(本の要約とかもします)

質問はCONTACTやコメントでお願い致します。

【初心者のpython】複数のCSVファイルを一つのCSVファイルにまとめる

 

こんにちは、ゆきぽんずです。

 

今日はpythonを使って、複数のcsvファイルを1つのcsvファイルにまとめる方法について紹介していきます。以下のようなファイル操作を考えています。

やりたいこと

 

実行に使用したファイルはgithub(https://github.com/yukiyukiponsu/MergeCSVFile)に掲載してるので気になった方は確認してください。

 

それでは早速内容に入っていきます。とりあえずコードからどうぞ。

ソースコード

import sys
import csv
import pandas as pd
import numpy as np

fn = sys.argv[1:]

print('Save CSVFileName')
fileName = input('>>')

android_x_array = []
android_y_array = []
android_z_array = []

acce_x_array = []
acce_y_array = []
acce_z_array = []

for read_file in fn:
    csv_reader = pd.read_csv(read_file, header=None, skiprows=1 ,usecols=[1,2,3,4,5,6], sep=',', names=['acc_x', 'acc_y','acc_z','and_x','and_y','and_z'])
    android_x_array.extend(csv_reader.iloc[:,3])
    android_y_array.extend(csv_reader.iloc[:,4])
    android_z_array.extend(csv_reader.iloc[:,5])
    acce_x_array.extend(csv_reader.iloc[:,0])
    acce_y_array.extend(csv_reader.iloc[:,1])
    acce_z_array.extend(csv_reader.iloc[:,2])

# print("android_y_array\n", android_y_array)
# print("acce_y_array\n", acce_y_array)

acceCSV = np.c_[acce_x_array, acce_y_array, acce_z_array, android_x_array , android_y_array, android_z_array]
#データフレームを作成
df_y = pd.DataFrame(acceCSV, columns=['Acce_X', 'Acce_Y', 'Acce_Z', 'Android_X', 'Android_Y', 'Android_Z'])
#CSVファイルとして出力
print('write CSVFile')
df_y.to_csv(fileName, index=False)

 

ソースコードをコピペして以下のように実行してみてください。

*ちなみに実行に使用したmergeする用のcsvファイルは上記のgithubにてダウンロード可能です。

実行方法

これで複数のcsvファイルを1つのcsvファイルにmergeできたと思います。

 

しかし、このプログラムを実行するにあたっての注意点があるのでそこにも目を通してください

注意点

フォルダの位置関係についての記述になります。多くの方は分かっていると思いますが、初心者向けの記事ですのでおおめに見てください。

 

今回はMergeCsvFileというフォルダを作り、以下のように配置してください。

*ちなみにdeploy.batというのは私がgithubにファイルをアップロードするのを自動化するために作成したものであり、今回のプログラムに関係は無いので無視してください。

deploy.batファイルはあってもなくても問題ありません。

プログラムを実行後に以下のようになっています。

sample1.csvファイルを開いてもらうと、入力した2つのcsvファイルをマージしているものになっています。

 

このプログラムは自由に使っていただいても大丈夫なので、自分のプログラムに取り込むなり、適当に実行してみるなりと色々遊んでみてください。

 

今日は以上になります。

 

今日もブログを読んでくださりありがとうございます。

 

ではまたいつか!!