LoginSignup
1
1

More than 5 years have passed since last update.

Python CSVで日付関連のデータを計算(sample)

Last updated at Posted at 2018-04-05

pythonでCSV使って日付データを処理したい人いると思います。
sample残しておきます。

データのサンプル

日付しか使いませんが...
image.png

サンプルソースコード

Csv.py
import csv
import datetime

class Csv:
    # コンストラクタ(最初だけの処理)
    def __init__(self,fname):
        self.list = []  # このリストにCSVのデータすべて入れる
        f = open(fname, 'r')
        reader = csv.reader(f)
        for row in reader:
            self.list.append(row)
        f.close()
    # 日付を文字列とdatetimeの型変更
    def date_change(self, date):
        if type(date) == str: #もし文字列ならdatetime型に
            change_date = datetime.datetime.strptime(date, '%Y/%m/%d')
            return change_date
        elif type(date) == datetime.datetime: # もしdatetime型なら文字列に
            change_date = str(date.year) + '/' + str(date.month) + '/' + str(date.day)
            return change_date
    # datetime型で日付の加算、減算を行う
    def day_calc(self, date, num):
        if type(date) == datetime.datetime:
            date_buf = datetime.timedelta(days=num)  # datetime型の数値を出す(計算するため)
            return date + date_buf  # ここで計算して返す
        else:
            print('day_calc: type err')
            return

# メイン
def main():
    # オブジェクト生成(ついでにCSVを渡してリストに登録しておく)
    csv = Csv('sample.csv')
    count = 0
    for row in csv.list:
        # 最初の日付の部分だけいらない。それと0~5まで表示
        if row[0] == '日付' or count > 4:
            count+=1
            continue

        print('before: '+row[0])
        # 日付をdatetime型に変更
        date = csv.date_change(row[0])
        # 日付に5加算
        new_date = csv.day_calc(date, 5)
        # もう一度型を文字列に戻す
        new_date = csv.date_change(new_date)
        print('new: '+ str(new_date))
        count+=1

if __name__ == '__main__':
    main()

出力結果

出力結果
before: 2018/4/1
new: 2018/4/6
before: 2018/4/2
new: 2018/4/7
before: 2018/4/3
new: 2018/4/8
before: 2018/4/4
new: 2018/4/9
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1