【効率化】【プログラム】複数のテキストファイルを一つのCSVファイルにまとめる Combine multiple .txt into one .csv

概要

  • 誰に向けて

    • データ整理を効率化したいと考えている人
    • 複数のテキストファイルのコピペ作業が辛い人
    • Google Colaboratoryの設定が完了している人

  • いつ

    • 複数のテキストファイルを一つのCSVファイルにまとめるとき

  • アクション

    • 「~する」を一言で
    • 5秒で動ける内容
    • Google Colaboratoryに以下のプログラムをコピペする
    • プログラム
    • # 必要なモジュールをインポート
      import pandas as pd,glob,os,time,datetime,math
      import numpy as np
      import matplotlib.pyplot as plt
      import matplotlib.dates as mdates
      import re
      
      # Googleドライブからファイルを取得
      from google.colab import drive
      
      drive.mount('/content/drive')
      
      # 必要なモジュールをインポート
      # # フォルダの確認
      os.getcwd() 
      
      folder_name = input() #フォルダ名
      
      # # フォルダの移動
      
      os.chdir("/content/drive/My Drive/"+folder_name)
      # os.chdir("/content")
      
      # # os.path.dirname("test.txt")
      
      # # フォルダ名から実験番号の取得
      exp_num=(os.getcwd()).split("/")[-1]
      print(exp_num)
      # テキストリストの取得
      data_list = glob.glob('*.txt')
      print(data_list)
      
      
      os.getcwd() 
      # ある秒数だけにする
      limit = input()
      data_list_limit = [name for name in data_list if re.compile(limit).search(name)]
      print(sorted(data_list_limit))
      
      # 波長のみデータの読み込み(これが元となる)
      data = pd.read_csv("/content/drive/My Drive/hacho_all.csv")
      # hacho_all    188.433-1030.431 skiprows=14         skipfooter=0
      # hacho400-750 399.404-750.2 skiprows=480         skipfooter=744
      # hacho390-750 390.134-750.2 skiprows=480-21      skipfooter=744
      # hacho300-750 300.267-750.2 skiprows=480-21-210  skipfooter=744
      # hacho375-750 375.077-750.2 skiprows=480-21-34  skipfooter=744
      
      data = data.drop("Unnamed: 0", axis=1)
      for i,name in enumerate(data_list_limit):
        # ファイル名のファイバー測定日時を文字列として取り込み、インデックスにする
        time = ((name.split("_"))[-1].split("."))[0]
      
        # データの取得
        flu_data = pd.read_table(name,sep="\t",header=None,skiprows=13,skipfooter=0,names=("\lambda","int"))
        # # 情報データの取得
        # info_data = pd.read_table(name,sep=":",header=None,skiprows=0,skipfooter=2050,names=("A","B","C","D"))
        # dataB5 = info_data["B"][5].split("E")
        # integration_time = float(dataB5[0])*10**int(dataB5[1])
      #   print(integration_time)
        
        # データの組み込み
        # data[time] = (flu_data.drop("\lambda", axis=1))/integration_time
        data[time] = (flu_data.drop("\lambda", axis=1))
      
      # # データの並び替え
      # data.sort_index(axis=1, inplace=True)
      
      # データの保存
      data.to_csv(exp_num+"_"+ limit + "_test.csv")
      # data
      



  • 具体的内容






  • まとめ



コメント