【Python】 CSVファイルを結合!
借金エンジニアです。
昨日はPythonの環境を準備しました。
今日は早速PythonでCSVファイルを結合します。
やり方はいくつかありそうですが、pandasというデータ分析・解析用のライブラリを使う方法が最もシンプルそうなので、今回はpandasを使用します。
ソースコード
コードだけ見たいという人もいると思いまいしたので、最初に載せておきます。
import glob import pandas as pd # 同じフォルダのCSVファイルの一覧を取得 files = sorted(glob.glob('*.csv')) # CSVファイルの数を取得 file_number = len(files) # CSVファイルの中身を読み出して、リスト形式にまとめる csv_list = [] for file in files: csv_list.append(pd.read_csv(file)) # リスト形式にまとめたCSVファイルを結合 merge_csv = pd.concat(csv_list) # CSVファイルとして出力 merge_csv.to_csv('merge.csv', encoding='utf_8',index=False) # 結合完了のメッセージ print(file_number,' 個のCSVファイルを結合して、merge.csvを作成しました。')
前提条件・仕様
動作を確認した環境
念の為、動作を確認した環境を載せておきます。
- macOS Mojave 10.14.5
- Python 3.6.6
- virtualenv==16.6.1
- インストールしたパッケージ(
pip freeze
で確認)- numpy==1.16.4
- pandas==0.24.2
- python-dateutil==2.8.0
- pytz==2019.1
- six==1.12.0
※pandas以外は、pipでpandasをインストールした際に自動でインストールされたようです。
仕様
pyファイルと同じフォルダーにあるCSVファイル全てを1つのCSVファイル「merge.csv」にまとめます。
また、CSVファイルは同じ形式であることを前提とします。
昨日、virtualenvについても書いたので、virtualenvで仮想環境を作り、仮想環境内で実行する手順を取りました。
動作を確認した時に使用したCSVファイル
ID,名前,誕生日,好きな果物 1,太郎,1991-02-22,りんご 2,花子,1995-08-15,いちご 3,陽一,1999-12-31,スイカ
ID,名前,誕生日,好きな果物 4,すず,1998-06-19,メロン 5,和寿,1970-03-08,梨 6,麻衣,1992-08-02,ぶどう
member1.csv と member2.csv という名前のファイルにしましたが、拡張子がcsvなら名前は何でも良いです。
実施手順
1.プロジェクトフォルダー作成
プロジェクトって大袈裟ですが、とりあえずフォルダーを作成します。私は「MergeCSV」フォルダーを作成しました。作成したらMergeCSVに移動しましょう。
2.ファイルを作成
最初に載せたソースコードと結合させたいCSVファイルを「MergeCSV」フォルダーに配置します。 私はソースコードを「MergeCSV.py」、CSVファイルを「member1.csv」、「member2.csv」という名前にしました。
3.virtualenvで仮想環境を作成
仮想環境を作ります。 仮想環境はターミナルアプリで実行します。
virtualenv mergecsv --python=[pythonがインストールされているフォルダー]
上記はcd
コマンドで「MergeCSV」フォルダーに移動してから実行してください。
[pythonがインストールされているフォルダー]はwhich python
コマンドで調べましょう。
私は仮想環境名を「mergecsv」としました。これは何でも良いです。
仮想環境が作成されると「MergeCSV」フォルダーに「mergecsv」フォルダーが作成されます。
4.仮想環境に入る
昨日の記事では「仮想環境を有効にする」と書きましたが、作業していてしっくりきたので、「仮想環境に入る」という表現に変えます。
source mergecsv/bin/activate
mergecsvは仮想環境名です。別の名前にした方はここを変えてください。
仮想環境に入るとターミナルのプロンプト名に(mergecsv)が付きます。
pandasをインストール
pandasをインストールします。これは仮想環境にインストールすることになります。昨日書いた記事ではvirtualenvで仮想環境を作るメリットをほとんど伝えられていませんでしたが、個別に必要なライブラリ、パッケージだけをインストールすることができるのがメリットですね。あとは、環境を移動させたい場合なども、フォルダーをコピーするだけで良いはずなので、これも仮想環境を作るメリットと言えそうです。
pandasはpipを使ってインストールします。(実行前に仮想環境に入っていることを確認してください。)
pip install pandas
実行
ターミナルで実行します。
これも仮想環境に入っている状態で実行します。
仮想環境に入っていないと、「pandasってなんだ!」って怒られます。
python MergeCSV.py
実行すると次のように表示されます。
$python MergeCSV.py 2 個のCSVファイルを結合して、merge.csvを作成しました。
結果
merge.csvの中身は次のようになっているはずです。
ID,名前,誕生日,好きな果物 1,太郎,1991-02-22,りんご 2,花子,1995-08-15,いちご 3,陽一,1999-12-31,スイカ 4,すず,1998-06-19,メロン 5,和寿,1970-03-08,梨 6,麻衣,1992-08-02,ぶどう
どうでしたか?
期待通り、結合できたでしょうか?
おわりに
情報が多いからか、R言語よりも簡単にできました。
pyenvとvirtualenv、良いですね。
実際に手を動かしてみると、良さを実感できます。
R言語でCSVファイルを結合したい方はこちらの記事もご覧ください。
以上です。
読者登録していただけると励みになりますので、ぜひお願いいたします。
ブログ村のリンクもクリックしていただけると、さらに励みになりますので、ぜひぜひお願いいたします。
にほんブログ村
閲覧ありがとうございました!