はじめに
タイトル通りです。
pythonである必要性はないのですが、
csvデータ複数取得 → pythonでcsv連結 → Jupyterでクラスタリング
csvデータ複数取得 → pythonでcsv連結 → 自然言語処理
等、開発環境をいちいち変えないようにできたらデータ管理しやすいですし、ある程度スムーズに作業できます。
前準備
今回は協調フィルタリング用に準備したファイルを使います。1列目に利用者ID、2列目は分解したコメントデータで構成されています。
フォルダの場所は実行pythonファイルと同じディレクトリにある前提です。
main/
├ csvフォルダ/
└ 実行pythonファイル/
# -*- coding: utf-8 -*-
import os
import glob
import csv
import pandas as pd
# フォルダ中のパスを取得
DATA_PATH = "./<csvフォルダ名>/"
All_Files = glob.glob('{}*.csv'.format(DATA_PATH))
csv連結
# フォルダ中の全csvをマージ
list = []
for file in All_Files:
list.append(pd.read_csv(file))
df = pd.concat(list, sort=False)
csv出力
わかりやすい名称を付けて結果をcsv形式で出力します。
df.to_csv('<*>.csv', encoding='utf_8')
結果1
自動的に'Unnamed: 0'という列が追加されています。python特有の仕様か私にはわかりませんが、修正しておきましょう。
# フォルダ中の全csvをマージ
list = []
for file in All_Files:
list.append(pd.read_csv(file))
df = pd.concat(list, sort=False)
del df['Unnamed: 0']
# csv出力
df.to_csv('comm_datas.csv', encoding='utf_8')
del df['Unnamed: 0']を出力コードの手前に追加しました。再度出力結果を確認します。
結果2
目的の列は削除されていますね。これにて完了です。
追記
出力されたデータですが、'utf_8'形式ですのでExcelで開くと当然文字化けします。そちらで確認したい場合にはエンコード形式を変えましょう。
一例:
# csv出力
df.to_csv('comm_datas.csv', encoding='utf_8_sig')