【Python応用】「Pandas」を用いた複数のCSVファイルの結合方法

Python

ここでは、Pythonにおける複数のCSVファイルの結合方法について解説しています。

スポンサーリンク
スポンサーリンク

事前に準備すること

結合したいCSVファイルをプログラムと同一フォルダ内に入れておく必要があります。例えば、結合したいファイルが10個ある場合には、フォルダ内にはCSVファイル10個とPythonプログラムになります。

行ったこと

ここでは「株式投資メモ」から任意の株価データ(10年分)をダウンロードしておき、それらのCSVファイルをまとめて結合しました。ちなみに株価データとしてはニコンになります。

結合プログラム

#結合プログラム
import glob
import pandas as pd

#1---フォルダ内のCSVファイルの一覧を取得
files = sorted(glob.glob('*.csv'))
#2---ファイル数を取得
file_number = len(files)
#3---CSVファイルの中身を読み出して、リスト形式にまとめる
csv_list = []
for file in files:
    csv_list.append(pd.read_csv(file,encoding='shift_jis',skiprows=[1]))
#4---CSVファイルの結合
merge_csv = pd.concat(csv_list)
#5---CSVファイル出力
merge_csv.to_csv('merge_nikon.csv', encoding='shift_jis')
#6---完了合図
print(file_number,' 個のCSVファイルを結合完了!!')

はじめに、1の部分で「glob()」モジュールを用いて、フォルダ内にある全てのcsvファイルを取得します。「*.csv」とすることで全てのcsvファイルの一覧を取得します。次に2の部分では結合するファイル数を取得しています。最後にメッセージを出力するときに使用しているだけなので、ここと6の部分は無くても問題ありません。

3の部分でcsvファイルをリスト型で格納しています。このとき、read_csv内で「encoding=’shift_jis’」を指定する必要があるので注意が必要です。また、結合の都合上、skiprowsを用いて1行目から取得しています。

4の部分でファイルを結合します。5の部分で「merge_nikon.csv」という名前で出力しています。おまけに6の部分で結合の終了合図としています。

出力した結果をChart化

チャートのタイトル、凡例等が不足しているのは許して下さい。

pandas.errors.ParserError: Error tokenizing data. C errorが出た場合

カラム情報が上手く取得できない場合に「pandas.errors.ParserError: Error tokenizing data. C error~」と出る場合があります。回避方法としては、カラム名を指定して書込みをして下さい。

for file in files:
    col_names = ['c{0:02d}'.format(i) for i in range(15)] 
    csv_list.append(pd.read_csv(file,encoding='shift_jis',names = col_names))

0~15の列名を作成して、appendしています。ここでは列名を数値にしていますが、文字列でも問題ないです。

「format」の使用方法については以下を参照下さい。

>>>formatの使用方法

最後に

このプログラムは、個人的に株価の推移を様々な会社で簡単に比較できたらなと思い、作成してみました。予めデータが揃っていれば、簡単に結合できてチャート化できます。

チャート化までのプログラムを作成しました。良かったら覗いて下さい。

ちなみに、株とPythonについて勉強できる書籍があります。おすすめですので、覗いてみて下さい。

関連記事

項目内容
「BeautifulSoup」を用いた株価のスクレイピング株式投資メモ」さんの株価情報をスクレイピングし、その株価データを基にグラフ化して、excelファイルに保存する方法について解説しています。
「Pandas」を用いて任意のファイルから列を抽出して基礎的な統計解析する方法リンク先では、「【Python応用】「Pandas」を用いた複数のCSVファイルの結合からチャート化まで」を基に出力したデータを用いて基礎的な統計解析する方法について解説しています。
pandas-datareaderを用いた株価の取得方法リンク先では「pandas-datareader」を用いた株価の取得方法について解説しています。

タイトルとURLをコピーしました