Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
34
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@hmgien1469

python3で多数のcsv連結

はじめに

タイトル通りです。
pythonである必要性はないのですが、

csvデータ複数取得 → pythonでcsv連結 → Jupyterでクラスタリング
csvデータ複数取得 → pythonでcsv連結 → 自然言語処理

等、開発環境をいちいち変えないようにできたらデータ管理しやすいですし、ある程度スムーズに作業できます。

前準備

今回は協調フィルタリング用に準備したファイルを使います。1列目に利用者ID、2列目は分解したコメントデータで構成されています。
1.png

フォルダの場所は実行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

1.png
1.png

自動的に'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

1.png

目的の列は削除されていますね。これにて完了です。

追記

出力されたデータですが、'utf_8'形式ですのでExcelで開くと当然文字化けします。そちらで確認したい場合にはエンコード形式を変えましょう。
一例:

# csv出力
df.to_csv('comm_datas.csv', encoding='utf_8_sig')
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
34
Help us understand the problem. What are the problem?